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

taosdata / TDengine / #4756

25 Sep 2025 05:58AM UTC coverage: 58.829% (+0.2%) from 58.63%
#4756

push

travis-ci

web-flow
enh: taos command line support '-uroot' on windows (#33055)

135574 of 293169 branches covered (46.24%)

Branch coverage included in aggregate %.

204395 of 284720 relevant lines covered (71.79%)

18747092.16 hits per line

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

66.44
/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) {
88,812,246✔
31
  switch (type) {
88,812,246!
32
    case QUERY_NODE_COLUMN:
3,383,434✔
33
      return "Column";
3,383,434✔
34
    case QUERY_NODE_VALUE:
1,491,764✔
35
      return "Value";
1,491,764✔
36
    case QUERY_NODE_OPERATOR:
117,373✔
37
      return "Operator";
117,373✔
38
    case QUERY_NODE_LOGIC_CONDITION:
21,402✔
39
      return "LogicCondition";
21,402✔
40
    case QUERY_NODE_FUNCTION:
958,213✔
41
      return "Function";
958,213✔
42
    case QUERY_NODE_REAL_TABLE:
27,020✔
43
      return "RealTable";
27,020✔
44
    case QUERY_NODE_VIRTUAL_TABLE:
×
45
      return "VirtualTable";
×
46
    case QUERY_NODE_PLACE_HOLDER_TABLE:
30✔
47
      return "PlaceHolderTable";
30✔
48
    case QUERY_NODE_SLIDING_WINDOW :
×
49
      return "SlidingWindow";
×
50
    case QUERY_NODE_PERIOD_WINDOW:
549✔
51
      return "PeriodWindow";
549✔
52
    case QUERY_NODE_STREAM_TRIGGER:
5,634✔
53
      return "StreamTrigger";
5,634✔
54
    case QUERY_NODE_STREAM:
×
55
      return "Stream";
×
56
    case QUERY_NODE_STREAM_TAG_DEF:
1,341✔
57
      return "StreamTagDef";
1,341✔
58
    case QUERY_NODE_EXTERNAL_WINDOW:
×
59
      return "ExternalWindow";
×
60
    case QUERY_NODE_TEMP_TABLE:
1,594✔
61
      return "TempTable";
1,594✔
62
    case QUERY_NODE_JOIN_TABLE:
666✔
63
      return "JoinTable";
666✔
64
    case QUERY_NODE_GROUPING_SET:
5,235✔
65
      return "GroupingSet";
5,235✔
66
    case QUERY_NODE_ORDER_BY_EXPR:
19,945✔
67
      return "OrderByExpr";
19,945✔
68
    case QUERY_NODE_LIMIT:
31,143✔
69
      return "Limit";
31,143✔
70
    case QUERY_NODE_STATE_WINDOW:
513✔
71
      return "StateWindow";
513✔
72
    case QUERY_NODE_SESSION_WINDOW:
333✔
73
      return "SessionWinow";
333✔
74
    case QUERY_NODE_INTERVAL_WINDOW:
6,183✔
75
      return "IntervalWindow";
6,183✔
76
    case QUERY_NODE_NODE_LIST:
16,422,331✔
77
      return "NodeList";
16,422,331✔
78
    case QUERY_NODE_FILL:
342✔
79
      return "Fill";
342✔
80
    case QUERY_NODE_RAW_EXPR:
×
81
      return "RawExpr";
×
82
    case QUERY_NODE_TARGET:
2,431,253✔
83
      return "Target";
2,431,253✔
84
    case QUERY_NODE_DATABLOCK_DESC:
1,441,691✔
85
      return "DataBlockDesc";
1,441,691✔
86
    case QUERY_NODE_SLOT_DESC:
4,035,762✔
87
      return "SlotDesc";
4,035,762✔
88
    case QUERY_NODE_COLUMN_DEF:
123,363✔
89
      return "ColumnDef";
123,363✔
90
    case QUERY_NODE_DOWNSTREAM_SOURCE:
3,003✔
91
      return "DownstreamSource";
3,003✔
92
    case QUERY_NODE_DATABASE_OPTIONS:
3,780✔
93
      return "DatabaseOptions";
3,780✔
94
    case QUERY_NODE_TABLE_OPTIONS:
756✔
95
      return "TableOptions";
756✔
96
    case QUERY_NODE_COLUMN_OPTIONS:
113,994✔
97
      return "ColumnOptions";
113,994✔
98
    case QUERY_NODE_INDEX_OPTIONS:
×
99
      return "IndexOptions";
×
100
    case QUERY_NODE_EXPLAIN_OPTIONS:
270✔
101
      return "ExplainOptions";
270✔
102
    case QUERY_NODE_STREAM_TRIGGER_OPTIONS:
1,404✔
103
      return "StreamTriggerOptions";
1,404✔
104
    case QUERY_NODE_LEFT_VALUE:
1,095✔
105
      return "LeftValue";
1,095✔
106
    case QUERY_NODE_COLUMN_REF:
×
107
      return "ColumnReference";
×
108
    case QUERY_NODE_WHEN_THEN:
739✔
109
      return "WhenThen";
739✔
110
    case QUERY_NODE_CASE_WHEN:
535✔
111
      return "CaseWhen";
535✔
112
    case QUERY_NODE_EVENT_WINDOW:
234✔
113
      return "EventWindow";
234✔
114
    case QUERY_NODE_WINDOW_OFFSET:
12✔
115
      return "WindowOffset";
12✔
116
    case QUERY_NODE_COUNT_WINDOW:
342✔
117
      return "CountWindow";
342✔
118
    case QUERY_NODE_ANOMALY_WINDOW:
×
119
      return "AnomalyWindow";
×
120
    case QUERY_NODE_STREAM_NOTIFY_OPTIONS:
252✔
121
      return "StreamNotifyOptions";
252✔
122
    case QUERY_NODE_TIME_RANGE:
16,259✔
123
      return "TimeRange";
16,259✔
124
    case QUERY_NODE_SET_OPERATOR:
576✔
125
      return "SetOperator";
576✔
126
    case QUERY_NODE_SELECT_STMT:
22,515✔
127
      return "SelectStmt";
22,515✔
128
    case QUERY_NODE_VNODE_MODIFY_STMT:
1,080✔
129
      return "VnodeModifStmt";
1,080✔
130
    case QUERY_NODE_CREATE_DATABASE_STMT:
486✔
131
      return "CreateDatabaseStmt";
486✔
132
    case QUERY_NODE_DROP_DATABASE_STMT:
×
133
      return "DropDatabaseStmt";
×
134
    case QUERY_NODE_ALTER_DATABASE_STMT:
3,294✔
135
      return "AlterDatabaseStmt";
3,294✔
136
    case QUERY_NODE_FLUSH_DATABASE_STMT:
×
137
      return "FlushDatabaseStmt";
×
138
    case QUERY_NODE_TRIM_DATABASE_STMT:
162✔
139
      return "TrimDatabaseStmt";
162✔
140
    case QUERY_NODE_SSMIGRATE_DATABASE_STMT:
×
141
      return "SsMigrateDatabaseStmt";
×
142
    case QUERY_NODE_CREATE_TABLE_STMT:
405✔
143
      return "CreateTableStmt";
405✔
144
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
135✔
145
      return "CreateSubtableClause";
135✔
146
    case QUERY_NODE_CREATE_VIRTUAL_TABLE_STMT:
×
147
      return "CreateVirtualtableStmt";
×
148
    case QUERY_NODE_CREATE_VIRTUAL_SUBTABLE_STMT:
×
149
      return "CreateVirtualsubtableStmt";
×
150
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
81✔
151
      return "CreateMultiTableStmt";
81✔
152
    case QUERY_NODE_DROP_TABLE_CLAUSE:
108✔
153
      return "DropTableClause";
108✔
154
    case QUERY_NODE_DROP_TABLE_STMT:
54✔
155
      return "DropTableStmt";
54✔
156
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
81✔
157
      return "DropSuperTableStmt";
81✔
158
    case QUERY_NODE_DROP_VIRTUAL_TABLE_STMT:
×
159
      return "DropVirtualTableStmt";
×
160
    case QUERY_NODE_ALTER_TABLE_STMT:
675✔
161
      return "AlterTableStmt";
675✔
162
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
783✔
163
      return "AlterSuperTableStmt";
783✔
164
    case QUERY_NODE_ALTER_VIRTUAL_TABLE_STMT:
×
165
      return "AlterVirtualTableStmt";
×
166
    case QUERY_NODE_CREATE_USER_STMT:
162✔
167
      return "CreateUserStmt";
162✔
168
    case QUERY_NODE_ALTER_USER_STMT:
243✔
169
      return "AlterUserStmt";
243✔
170
    case QUERY_NODE_DROP_USER_STMT:
81✔
171
      return "DropUserStmt";
81✔
172
    case QUERY_NODE_USE_DATABASE_STMT:
81✔
173
      return "UseDatabaseStmt";
81✔
174
    case QUERY_NODE_CREATE_DNODE_STMT:
486✔
175
      return "CreateDnodeStmt";
486✔
176
    case QUERY_NODE_DROP_DNODE_STMT:
729✔
177
      return "DropDnodeStmt";
729✔
178
    case QUERY_NODE_ALTER_DNODE_STMT:
324✔
179
      return "AlterDnodeStmt";
324✔
180
    case QUERY_NODE_CREATE_INDEX_STMT:
×
181
      return "CreateIndexStmt";
×
182
    case QUERY_NODE_DROP_INDEX_STMT:
162✔
183
      return "DropIndexStmt";
162✔
184
    case QUERY_NODE_CREATE_QNODE_STMT:
81✔
185
      return "CreateQnodeStmt";
81✔
186
    case QUERY_NODE_DROP_QNODE_STMT:
81✔
187
      return "DropQnodeStmt";
81✔
188
    case QUERY_NODE_CREATE_ANODE_STMT:
×
189
      return "CreateAnodeStmt";
×
190
    case QUERY_NODE_DROP_ANODE_STMT:
×
191
      return "DropAnodeStmt";
×
192
    case QUERY_NODE_UPDATE_ANODE_STMT:
×
193
      return "UpdateAnodeStmt";
×
194
    case QUERY_NODE_CREATE_BNODE_STMT:
×
195
      return "CreateBnodeStmt";
×
196
    case QUERY_NODE_DROP_BNODE_STMT:
×
197
      return "DropBnodeStmt";
×
198
    case QUERY_NODE_CREATE_SNODE_STMT:
81✔
199
      return "CreateSnodeStmt";
81✔
200
    case QUERY_NODE_DROP_SNODE_STMT:
81✔
201
      return "DropSnodeStmt";
81✔
202
    case QUERY_NODE_CREATE_MNODE_STMT:
81✔
203
      return "CreateMnodeStmt";
81✔
204
    case QUERY_NODE_DROP_MNODE_STMT:
81✔
205
      return "DropMnodeStmt";
81✔
206
    case QUERY_NODE_CREATE_TOPIC_STMT:
657✔
207
      return "CreateTopicStmt";
657✔
208
    case QUERY_NODE_DROP_TOPIC_STMT:
162✔
209
      return "DropTopicStmt";
162✔
210
    case QUERY_NODE_DROP_CGROUP_STMT:
162✔
211
      return "DropConsumerGroupStmt";
162✔
212
    case QUERY_NODE_ALTER_LOCAL_STMT:
162✔
213
      return "AlterLocalStmt";
162✔
214
    case QUERY_NODE_EXPLAIN_STMT:
270✔
215
      return "ExplainStmt";
270✔
216
    case QUERY_NODE_DESCRIBE_STMT:
162✔
217
      return "DescribeStmt";
162✔
218
    case QUERY_NODE_COMPACT_DATABASE_STMT:
324✔
219
      return "CompactDatabaseStmt";
324✔
220
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
×
221
      return "CompactVgroupsStmt";
×
222
    case QUERY_NODE_CREATE_STREAM_STMT:
5,634✔
223
      return "CreateStreamStmt";
5,634✔
224
    case QUERY_NODE_DROP_STREAM_STMT:
×
225
      return "DropStreamStmt";
×
226
    case QUERY_NODE_PAUSE_STREAM_STMT:
×
227
      return "PauseStreamStmt";
×
228
    case QUERY_NODE_RESUME_STREAM_STMT:
×
229
      return "ResumeStreamStmt";
×
230
    case QUERY_NODE_RECALCULATE_STREAM_STMT:
×
231
      return "RecalcStreamStmt";
×
232
    case QUERY_NODE_BALANCE_VGROUP_STMT:
81✔
233
      return "BalanceVgroupStmt";
81✔
234
    case QUERY_NODE_ASSIGN_LEADER_STMT:
×
235
      return "AssignLeaderStmt";
×
236
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
81✔
237
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
238
      return "BalanceVgroupLeaderStmt";
81✔
239
    case QUERY_NODE_MERGE_VGROUP_STMT:
81✔
240
      return "MergeVgroupStmt";
81✔
241
    case QUERY_NODE_SHOW_DB_ALIVE_STMT:
×
242
      return "ShowDbAliveStmt";
×
243
    case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT:
×
244
      return "ShowClusterAliveStmt";
×
245
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
162✔
246
      return "RedistributeVgroupStmt";
162✔
247
    case QUERY_NODE_SPLIT_VGROUP_STMT:
81✔
248
      return "SplitVgroupStmt";
81✔
249
    case QUERY_NODE_GRANT_STMT:
486✔
250
      return "GrantStmt";
486✔
251
    case QUERY_NODE_REVOKE_STMT:
486✔
252
      return "RevokeStmt";
486✔
253
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
254
      return "AlterClusterStmt";
×
255
    case QUERY_NODE_SHOW_DNODES_STMT:
27✔
256
      return "ShowDnodesStmt";
27✔
257
    case QUERY_NODE_SHOW_MNODES_STMT:
27✔
258
      return "ShowMnodesStmt";
27✔
259
    case QUERY_NODE_SHOW_MODULES_STMT:
×
260
      return "ShowModulesStmt";
×
261
    case QUERY_NODE_SHOW_QNODES_STMT:
27✔
262
      return "ShowQnodesStmt";
27✔
263
    case QUERY_NODE_SHOW_ANODES_STMT:
×
264
      return "ShowAnodesStmt";
×
265
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
266
      return "ShowAnodesFullStmt";
×
267
    case QUERY_NODE_SHOW_SNODES_STMT:
×
268
      return "ShowSnodesStmt";
×
269
    case QUERY_NODE_SHOW_BACKUP_NODES_STMT:
×
270
      return "ShowBackupNodesStmt";
×
271
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
272
      return "ShowArbGroupsStmt";
×
273
    case QUERY_NODE_SHOW_CLUSTER_STMT:
27✔
274
      return "ShowClusterStmt";
27✔
275
    case QUERY_NODE_SHOW_DATABASES_STMT:
27✔
276
      return "ShowDatabaseStmt";
27✔
277
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
27✔
278
      return "ShowFunctionsStmt";
27✔
279
    case QUERY_NODE_SHOW_INDEXES_STMT:
54✔
280
      return "ShowIndexesStmt";
54✔
281
    case QUERY_NODE_SHOW_STABLES_STMT:
108✔
282
      return "ShowStablesStmt";
108✔
283
    case QUERY_NODE_SHOW_STREAMS_STMT:
27✔
284
      return "ShowStreamsStmt";
27✔
285
    case QUERY_NODE_SHOW_TABLES_STMT:
108✔
286
      return "ShowTablesStmt";
108✔
287
    case QUERY_NODE_SHOW_VTABLES_STMT:
×
288
      return "ShowVtablesStmt";
×
289
    case QUERY_NODE_SHOW_TAGS_STMT:
27✔
290
      return "ShowTagsStmt";
27✔
291
    case QUERY_NODE_SHOW_USERS_STMT:
27✔
292
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
293
      return "ShowUsersStmt";
27✔
294
    case QUERY_NODE_SHOW_LICENCES_STMT:
×
295
      return "ShowGrantsStmt";
×
296
    case QUERY_NODE_SHOW_VGROUPS_STMT:
54✔
297
      return "ShowVgroupsStmt";
54✔
298
    case QUERY_NODE_SHOW_TOPICS_STMT:
×
299
      return "ShowTopicsStmt";
×
300
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
27✔
301
      return "ShowConsumersStmt";
27✔
302
    case QUERY_NODE_SHOW_QUERIES_STMT:
×
303
      return "ShowQueriesStmt";
×
304
    case QUERY_NODE_SHOW_VARIABLES_STMT:
81✔
305
      return "ShowVariablesStmt";
81✔
306
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
54✔
307
      return "ShowDnodeVariablesStmt";
54✔
308
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
27✔
309
      return "ShowTransactionsStmt";
27✔
310
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
27✔
311
      return "ShowSubscriptionsStmt";
27✔
312
    case QUERY_NODE_SHOW_VNODES_STMT:
54✔
313
      return "ShowVnodeStmt";
54✔
314
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
27✔
315
      return "ShowUserPrivilegesStmt";
27✔
316
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
81✔
317
      return "ShowCreateDatabasesStmt";
81✔
318
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
81✔
319
      return "ShowCreateTablesStmt";
81✔
320
    case QUERY_NODE_SHOW_CREATE_VTABLE_STMT:
×
321
      return "ShowCreateVtablesstmt";
×
322
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
81✔
323
      return "ShowCreateStablesStmt";
81✔
324
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
325
      return "ShowCreateViewStmt";
×
326
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
27✔
327
      return "ShowTableDistributedStmt";
27✔
328
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
81✔
329
      return "ShowLocalVariablesStmt";
81✔
330
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
81✔
331
      return "ShowTableTagsStmt";
81✔
332
    case QUERY_NODE_SHOW_COMPACTS_STMT:
×
333
      return "ShowCompactsStmt";
×
334
    case QUERY_NODE_SHOW_COMPACT_DETAILS_STMT:
×
335
      return "ShowCompactDetailsStmt";
×
336
    case QUERY_NODE_SHOW_TRANSACTION_DETAILS_STMT:
×
337
      return "ShowTransactionDetailsStmt";
×
338
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
339
      return "ShowGrantsFullStmt";
×
340
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
341
      return "ShowGrantsLogsStmt";
×
342
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
343
      return "ShowClusterMachinesStmt";
×
344
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
345
      return "ShowEncryptionsStmt";
×
346
    case QUERY_NODE_SHOW_USAGE_STMT:
×
347
      return "ShowUsageStmt";
×
348
    case QUERY_NODE_SHOW_MOUNTS_STMT:
×
349
      return "ShowMountsStmt";
×
350
    case QUERY_NODE_DELETE_STMT:
387✔
351
      return "DeleteStmt";
387✔
352
    case QUERY_NODE_INSERT_STMT:
108✔
353
      return "InsertStmt";
108✔
354
    case QUERY_NODE_RESTORE_DNODE_STMT:
108✔
355
      return "RestoreDnodeStmt";
108✔
356
    case QUERY_NODE_RESTORE_QNODE_STMT:
108✔
357
      return "RestoreQnodeStmt";
108✔
358
    case QUERY_NODE_RESTORE_MNODE_STMT:
108✔
359
      return "RestoreMnodeStmt";
108✔
360
    case QUERY_NODE_RESTORE_VNODE_STMT:
108✔
361
      return "RestoreVnodeStmt";
108✔
362
    case QUERY_NODE_CREATE_VIEW_STMT:
×
363
      return "CreateViewStmt";
×
364
    case QUERY_NODE_DROP_VIEW_STMT:
×
365
      return "DropViewStmt";
×
366
    case QUERY_NODE_CREATE_MOUNT_STMT:
×
367
      return "CreateMountStmt";
×
368
    case QUERY_NODE_DROP_MOUNT_STMT:
×
369
      return "DropMountStmt";
×
370
    case QUERY_NODE_LOGIC_PLAN_SCAN:
21,789✔
371
      return "LogicScan";
21,789✔
372
    case QUERY_NODE_LOGIC_PLAN_JOIN:
882✔
373
      return "LogicJoin";
882✔
374
    case QUERY_NODE_LOGIC_PLAN_AGG:
8,808✔
375
      return "LogicAgg";
8,808✔
376
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
14,250✔
377
      return "LogicProject";
14,250✔
378
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
414✔
379
      return "LogicVnodeModify";
414✔
380
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
2,466✔
381
      return "LogicExchange";
2,466✔
382
    case QUERY_NODE_LOGIC_PLAN_MERGE:
903✔
383
      return "LogicMerge";
903✔
384
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
3,021✔
385
      return "LogicWindow";
3,021✔
386
    case QUERY_NODE_LOGIC_PLAN_FILL:
699✔
387
      return "LogicFill";
699✔
388
    case QUERY_NODE_LOGIC_PLAN_SORT:
2,544✔
389
      return "LogicSort";
2,544✔
390
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
1,485✔
391
      return "LogicPartition";
1,485✔
392
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
1,026✔
393
      return "LogicIndefRowsFunc";
1,026✔
394
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
246✔
395
      return "LogicInterpFunc";
246✔
396
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
397
      return "LogicForecastFunc";
×
398
    case QUERY_NODE_LOGIC_PLAN_IMPUTATION_FUNC:
×
399
      return "LogicImputationFunc";
×
400
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
401
      return "LogicGroupCache";
×
402
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
403
      return "LogicDynamicQueryCtrl";
×
404
    case QUERY_NODE_LOGIC_PLAN_VIRTUAL_TABLE_SCAN:
×
405
      return "LogicVirtualTableScan";
×
406
    case QUERY_NODE_LOGIC_SUBPLAN:
22,980✔
407
      return "LogicSubplan";
22,980✔
408
    case QUERY_NODE_LOGIC_PLAN:
2,475✔
409
      return "LogicPlan";
2,475✔
410
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
949✔
411
      return "PhysiTagScan";
949✔
412
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
413,711✔
413
      return "PhysiTableScan";
413,711✔
414
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SEQ_SCAN:
×
415
      return "PhysiTableSeqScan";
×
416
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
18,097✔
417
      return "PhysiTableMergeScan";
18,097✔
418
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
7,192✔
419
      return "PhysiSreamScan";
7,192✔
420
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
10,049✔
421
      return "PhysiSystemTableScan";
10,049✔
422
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
72✔
423
      return "PhysiBlockDistScan";
72✔
424
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
1,743✔
425
      return "PhysiLastRowScan";
1,743✔
426
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
×
427
      return "PhysiTableCountScan";
×
428
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
184✔
429
      return "PhysiMergeEventWindow";
184✔
430
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
144✔
431
      return "PhysiMergeCountWindow";
144✔
432
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
433
      return "PhysiMergeAnomalyWindow";
×
434
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
51,276✔
435
      return "PhysiProject";
51,276✔
436
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
5,702✔
437
      return "PhysiMergeJoin";
5,702✔
438
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
439
      return "PhysiHashJoin";
×
440
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
360,754✔
441
      return "PhysiAgg";
360,754✔
442
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
61,762✔
443
      return "PhysiExchange";
61,762✔
444
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
5,062✔
445
      return "PhysiMerge";
5,062✔
446
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
6,944✔
447
      return "PhysiSort";
6,944✔
448
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
36✔
449
      return "PhysiGroupSort";
36✔
450
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
7,456✔
451
      return "PhysiHashInterval";
7,456✔
452
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
1,834✔
453
      return "PhysiMergeAlignedInterval";
1,834✔
454
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
358✔
455
      return "PhysiFill";
358✔
456
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
262✔
457
      return "PhysiSessionWindow";
262✔
458
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
240✔
459
      return "PhysiStateWindow";
240✔
460
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
666✔
461
      return "PhysiPartition";
666✔
462
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
500✔
463
      return "PhysiIndefRowsFunc";
500✔
464
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
710✔
465
      return "PhysiInterpFunc";
710✔
466
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
467
      return "PhysiForecastFunc";
×
468
    case QUERY_NODE_PHYSICAL_PLAN_IMPUTATION_FUNC:
×
469
      return "PhysiImputationFunc";
×
470
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
371,406✔
471
      return "PhysiDispatch";
371,406✔
472
    case QUERY_NODE_PHYSICAL_PLAN_INSERT:
24,059,200✔
473
      return "PhysiInsert";
24,059,200✔
474
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
74✔
475
      return "PhysiQueryInsert";
74✔
476
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
106,936✔
477
      return "PhysiDelete";
106,936✔
478
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
479
      return "PhysiGroupCache";
×
480
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
244✔
481
      return "PhysiDynamicQueryCtrl";
244✔
482
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
5,550✔
483
      return "PhysiVirtualTableScan";
5,550✔
484
    case QUERY_NODE_PHYSICAL_SUBPLAN:
16,561,047✔
485
      return "PhysiSubplan";
16,561,047✔
486
    case QUERY_NODE_PHYSICAL_PLAN:
16,363,200✔
487
      return "PhysiPlan";
16,363,200✔
488
    case QUERY_NODE_PHYSICAL_PLAN_EXTERNAL_WINDOW:
1,798✔
489
    case QUERY_NODE_PHYSICAL_PLAN_HASH_EXTERNAL:
490
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_EXTERNAL:
491
      return "PhysiExternalWindow";
1,798✔
492
    default:
×
493
      break;
×
494
  }
495
  nodesWarn("nodesNodeName unknown node = %d", type);
×
496
  return "UnknownNode";
270✔
497
}
498

499
static int32_t nodeListToJson(SJson* pJson, const char* pName, const SNodeList* pList) {
19,946,421✔
500
  if (LIST_LENGTH(pList) > 0) {
19,946,421!
501
    SJson* jList = tjsonAddArrayToObject(pJson, pName);
10,132,714✔
502
    if (NULL == jList) {
10,146,910✔
503
      return terrno;
1,247✔
504
    }
505
    SNode* pNode;
506
    FOREACH(pNode, pList) {
23,136,878!
507
      int32_t code = tjsonAddItem(jList, nodeToJson, pNode);
13,005,370✔
508
      if (TSDB_CODE_SUCCESS != code) {
12,991,215!
509
        return code;
×
510
      }
511
    }
512
  }
513
  return TSDB_CODE_SUCCESS;
19,945,215✔
514
}
515

516
static int32_t jsonToNodeListImpl(const SJson* pJsonArray, SNodeList** pList) {
372,758✔
517
  int32_t size = (NULL == pJsonArray ? 0 : tjsonGetArraySize(pJsonArray));
372,758✔
518
  if (size > 0) {
372,758✔
519
    int32_t code = nodesMakeList(pList);
194,578✔
520
    if (NULL == *pList) {
194,579!
521
      return code;
×
522
    }
523
  }
524

525
  int32_t code = TSDB_CODE_SUCCESS;
372,759✔
526
  for (int32_t i = 0; i < size; ++i) {
849,237✔
527
    SJson* pJsonItem = tjsonGetArrayItem(pJsonArray, i);
476,463✔
528
    SNode* pNode = NULL;
476,397✔
529
    code = makeNodeByJson(pJsonItem, &pNode);
476,397✔
530
    if (TSDB_CODE_SUCCESS == code) {
476,090!
531
      code = nodesListAppend(*pList, pNode);
476,102✔
532
    }
533
    if (TSDB_CODE_SUCCESS != code) {
476,478!
534
      break;
×
535
    }
536
  }
537
  return code;
372,774✔
538
}
539

540
static int32_t jsonToNodeList(const SJson* pJson, const char* pName, SNodeList** pList) {
371,937✔
541
  return jsonToNodeListImpl(tjsonGetObjectItem(pJson, pName), pList);
371,937✔
542
}
543

544
static const char* jkTableComInfoNumOfTags = "NumOfTags";
545
static const char* jkTableComInfoPrecision = "Precision";
546
static const char* jkTableComInfoNumOfColumns = "NumOfColumns";
547
static const char* jkTableComInfoRowSize = "RowSize";
548

549
static int32_t tableComInfoToJson(const void* pObj, SJson* pJson) {
4,922✔
550
  const STableComInfo* pNode = (const STableComInfo*)pObj;
4,922✔
551

552
  int32_t code = tjsonAddIntegerToObject(pJson, jkTableComInfoNumOfTags, pNode->numOfTags);
4,922✔
553
  if (TSDB_CODE_SUCCESS == code) {
4,922!
554
    code = tjsonAddIntegerToObject(pJson, jkTableComInfoPrecision, pNode->precision);
4,922✔
555
  }
556
  if (TSDB_CODE_SUCCESS == code) {
4,922!
557
    code = tjsonAddIntegerToObject(pJson, jkTableComInfoNumOfColumns, pNode->numOfColumns);
4,922✔
558
  }
559
  if (TSDB_CODE_SUCCESS == code) {
4,922!
560
    code = tjsonAddIntegerToObject(pJson, jkTableComInfoRowSize, pNode->rowSize);
4,922✔
561
  }
562

563
  return code;
4,922✔
564
}
565

566
static int32_t jsonToTableComInfo(const SJson* pJson, void* pObj) {
5,095✔
567
  STableComInfo* pNode = (STableComInfo*)pObj;
5,095✔
568

569
  int32_t code;
570
  tjsonGetNumberValue(pJson, jkTableComInfoNumOfTags, pNode->numOfTags, code);
5,095✔
571
  if (TSDB_CODE_SUCCESS == code) {
5,095!
572
    tjsonGetNumberValue(pJson, jkTableComInfoPrecision, pNode->precision, code);
5,095✔
573
  }
574
  if (TSDB_CODE_SUCCESS == code) {
5,095!
575
    tjsonGetNumberValue(pJson, jkTableComInfoNumOfColumns, pNode->numOfColumns, code);
5,095✔
576
  }
577
  if (TSDB_CODE_SUCCESS == code) {
5,095!
578
    tjsonGetNumberValue(pJson, jkTableComInfoRowSize, pNode->rowSize, code);
5,095✔
579
  }
580

581
  return code;
5,095✔
582
}
583

584
static const char* jkSchemaType = "Type";
585
static const char* jkSchemaColId = "ColId";
586
static const char* jkSchemaBytes = "bytes";
587
static const char* jkSchemaName = "Name";
588
static const char* jkSchemaFlags = "Flags";
589

590
static int32_t schemaToJson(const void* pObj, SJson* pJson) {
25,233✔
591
  const SSchema* pNode = (const SSchema*)pObj;
25,233✔
592

593
  int32_t code = tjsonAddIntegerToObject(pJson, jkSchemaType, pNode->type);
25,233✔
594
  if (TSDB_CODE_SUCCESS == code) {
25,233!
595
    code = tjsonAddIntegerToObject(pJson, jkSchemaColId, pNode->colId);
25,233✔
596
  }
597
  if (TSDB_CODE_SUCCESS == code) {
25,233!
598
    code = tjsonAddIntegerToObject(pJson, jkSchemaBytes, pNode->bytes);
25,233✔
599
  }
600
  if (TSDB_CODE_SUCCESS == code) {
25,233!
601
    code = tjsonAddStringToObject(pJson, jkSchemaName, pNode->name);
25,233✔
602
  }
603
  if (TSDB_CODE_SUCCESS == code) {
25,233!
604
    code = tjsonAddIntegerToObject(pJson, jkSchemaFlags, pNode->flags);
25,233✔
605
  }
606

607
  return code;
25,233✔
608
}
609

610
static int32_t jsonToSchema(const SJson* pJson, void* pObj) {
32,347✔
611
  SSchema* pNode = (SSchema*)pObj;
32,347✔
612

613
  int32_t code;
614
  tjsonGetNumberValue(pJson, jkSchemaType, pNode->type, code);
32,347✔
615
  if (TSDB_CODE_SUCCESS == code) {
32,347!
616
    tjsonGetNumberValue(pJson, jkSchemaColId, pNode->colId, code);
32,347✔
617
  }
618
  if (TSDB_CODE_SUCCESS == code) {
32,347!
619
    tjsonGetNumberValue(pJson, jkSchemaBytes, pNode->bytes, code);
32,347✔
620
  }
621
  if (TSDB_CODE_SUCCESS == code) {
32,347!
622
    code = tjsonGetStringValue(pJson, jkSchemaName, pNode->name);
32,347✔
623
  }
624
  if (TSDB_CODE_SUCCESS == code) {
32,347!
625
    tjsonGetNumberValue(pJson, jkSchemaFlags, pNode->flags, code);
32,347✔
626
  }
627

628
  return code;
32,347✔
629
}
630

631
static const char* jkRefColHasRef = "HasRef";
632
static const char* jkRefColColId = "ColId";
633
static const char* jkRefColDbName = "DbName";
634
static const char* jkRefColTableName = "TableName";
635
static const char* jkRefColColName = "ColName";
636

637
static int32_t refColToJson(const void* pObj, SJson* pJson) {
×
638
  const SColRef* pCol = (const SColRef*)pObj;
×
639

640
  int32_t code = tjsonAddBoolToObject(pJson, jkRefColHasRef, pCol->hasRef);
×
641
  if (TSDB_CODE_SUCCESS == code) {
×
642
    code = tjsonAddIntegerToObject(pJson, jkRefColColId, pCol->id);
×
643
  }
644
  if (TSDB_CODE_SUCCESS == code) {
×
645
    code = tjsonAddStringToObject(pJson, jkRefColDbName, pCol->refDbName);
×
646
  }
647
  if (TSDB_CODE_SUCCESS == code) {
×
648
    code = tjsonAddStringToObject(pJson, jkRefColTableName, pCol->refTableName);
×
649
  }
650
  if (TSDB_CODE_SUCCESS == code) {
×
651
    code = tjsonAddStringToObject(pJson, jkRefColColName, pCol->refColName);
×
652
  }
653

654
  return code;
×
655
}
656

657

658
static int32_t jsonToRefCol(const SJson* pJson, void* pObj) {
×
659
  SColRef* pCol = (SColRef*)pObj;
×
660

661
  int32_t code = tjsonGetBoolValue(pJson, jkRefColHasRef, &pCol->hasRef);
×
662
  if (TSDB_CODE_SUCCESS == code) {
×
663
    code = tjsonGetSmallIntValue(pJson, jkRefColColId, &pCol->id);
×
664
  }
665
  if (TSDB_CODE_SUCCESS == code) {
×
666
    code = tjsonGetStringValue(pJson, jkRefColDbName, pCol->refDbName);
×
667
  }
668
  if (TSDB_CODE_SUCCESS == code) {
×
669
    code = tjsonGetStringValue(pJson, jkRefColTableName, pCol->refTableName);
×
670
  }
671
  if (TSDB_CODE_SUCCESS == code) {
×
672
    code = tjsonGetStringValue(pJson, jkRefColColName, pCol->refColName);
×
673
  }
674

675
  return code;
×
676
}
677

678

679
static const char* jkTableMetaVgId = "VgId";
680
static const char* jkTableMetaTableType = "TableType";
681
static const char* jkTableMetaUid = "Uid";
682
static const char* jkTableMetaSuid = "Suid";
683
static const char* jkTableMetaColRefNum = "ColRefNum";
684
static const char* jkTableMetaRefCols = "RefCols";
685
static const char* jkTableMetaSversion = "Sversion";
686
static const char* jkTableMetaTversion = "Tversion";
687
static const char* jkTableMetaRversion = "Rversion";
688
static const char* jkTableMetaComInfo = "ComInfo";
689
static const char* jkTableMetaColSchemas = "ColSchemas";
690

691
static int32_t tableMetaToJson(const void* pObj, SJson* pJson) {
4,922✔
692
  const STableMeta* pNode = (const STableMeta*)pObj;
4,922✔
693

694
  int32_t code = tjsonAddIntegerToObject(pJson, jkTableMetaVgId, pNode->vgId);
4,922✔
695
  if (TSDB_CODE_SUCCESS == code) {
4,922!
696
    code = tjsonAddIntegerToObject(pJson, jkTableMetaTableType, pNode->tableType);
4,922✔
697
  }
698
  if (TSDB_CODE_SUCCESS == code) {
4,922!
699
    code = tjsonAddIntegerToObject(pJson, jkTableMetaUid, pNode->uid);
4,922✔
700
  }
701
  if (TSDB_CODE_SUCCESS == code) {
4,922!
702
    code = tjsonAddIntegerToObject(pJson, jkTableMetaSuid, pNode->suid);
4,922✔
703
  }
704
  if (TSDB_CODE_SUCCESS == code) {
4,922!
705
    code = tjsonAddIntegerToObject(pJson, jkTableMetaColRefNum, pNode->colRef ? pNode->numOfColRefs : 0);
4,922!
706
  }
707
  if (TSDB_CODE_SUCCESS == code && pNode->numOfColRefs > 0 && pNode->colRef) {
4,922!
708
    code = tjsonAddArray(pJson, jkTableMetaRefCols, refColToJson, pNode->colRef, sizeof(SColRef),
×
709
                         pNode->numOfColRefs);
×
710
  }
711
  if (TSDB_CODE_SUCCESS == code) {
4,922!
712
    code = tjsonAddIntegerToObject(pJson, jkTableMetaSversion, pNode->sversion);
4,922✔
713
  }
714
  if (TSDB_CODE_SUCCESS == code) {
4,922!
715
    code = tjsonAddIntegerToObject(pJson, jkTableMetaTversion, pNode->tversion);
4,922✔
716
  }
717
  if (TSDB_CODE_SUCCESS == code) {
4,922!
718
    code = tjsonAddIntegerToObject(pJson, jkTableMetaRversion, pNode->rversion);
4,922✔
719
  }
720
  if (TSDB_CODE_SUCCESS == code) {
4,922!
721
    code = tjsonAddObject(pJson, jkTableMetaComInfo, tableComInfoToJson, &pNode->tableInfo);
4,922✔
722
  }
723
  if (TSDB_CODE_SUCCESS == code) {
4,922!
724
    code = tjsonAddArray(pJson, jkTableMetaColSchemas, schemaToJson, pNode->schema, sizeof(SSchema),
4,922✔
725
                         TABLE_TOTAL_COL_NUM(pNode));
4,922✔
726
  }
727

728
  return code;
4,922✔
729
}
730

731
static int32_t jsonToTableMeta(const SJson* pJson, void* pObj) {
5,095✔
732
  STableMeta* pNode = (STableMeta*)pObj;
5,095✔
733

734
  int32_t code;
735
  tjsonGetNumberValue(pJson, jkTableMetaVgId, pNode->vgId, code);
5,095✔
736
  if (TSDB_CODE_SUCCESS == code) {
5,095!
737
    tjsonGetNumberValue(pJson, jkTableMetaTableType, pNode->tableType, code);
5,095✔
738
  }
739
  if (TSDB_CODE_SUCCESS == code) {
5,095!
740
    tjsonGetNumberValue(pJson, jkTableMetaUid, pNode->uid, code);
5,095✔
741
  }
742
  if (TSDB_CODE_SUCCESS == code) {
5,095!
743
    tjsonGetNumberValue(pJson, jkTableMetaSuid, pNode->suid, code);
5,095✔
744
  }
745
  if (TSDB_CODE_SUCCESS == code) {
5,095!
746
    tjsonGetNumberValue(pJson, jkTableMetaColRefNum, pNode->numOfColRefs, code);
5,095✔
747
  }
748
  if (TSDB_CODE_SUCCESS == code) {
5,095!
749
    tjsonGetNumberValue(pJson, jkTableMetaSversion, pNode->sversion, code);
5,095✔
750
  }
751
  if (TSDB_CODE_SUCCESS == code) {
5,095!
752
    tjsonGetNumberValue(pJson, jkTableMetaTversion, pNode->tversion, code);
5,095✔
753
  }
754
  if (TSDB_CODE_SUCCESS == code) {
5,095!
755
    tjsonGetNumberValue(pJson, jkTableMetaRversion, pNode->rversion, code);
5,095✔
756
  }
757
  if (TSDB_CODE_SUCCESS == code) {
5,095!
758
    code = tjsonToObject(pJson, jkTableMetaComInfo, jsonToTableComInfo, &pNode->tableInfo);
5,095✔
759
  }
760
  if (TSDB_CODE_SUCCESS == code) {
5,095!
761
    code = tjsonToArray(pJson, jkTableMetaColSchemas, jsonToSchema, pNode->schema, sizeof(SSchema));
5,095✔
762
  }
763
  if (TSDB_CODE_SUCCESS == code && pNode->numOfColRefs > 0) {
5,095!
764
    pNode->colRef = (SColRef*)((char*)(pNode + 1) + TABLE_TOTAL_COL_NUM(pNode) * sizeof(SSchema));
×
765
    code = tjsonToArray(pJson, jkTableMetaRefCols, jsonToRefCol, pNode->colRef, sizeof(SColRef));
×
766
  }
767

768
  return code;
5,095✔
769
}
770

771
static const char* jkLogicPlanTargets = "Targets";
772
static const char* jkLogicPlanConditions = "Conditions";
773
static const char* jkLogicPlanChildren = "Children";
774
static const char* jkLogicPlanLimit = "Limit";
775
static const char* jkLogicPlanSlimit = "SLimit";
776
static const char* jkLogicPlanRequireDataOrder = "RequireDataOrder";
777
static const char* jkLogicPlanResultDataOrder = "ResultDataOrder";
778
static const char* jkLogicPlanGroupAction = "GroupAction";
779

780
static int32_t logicPlanNodeToJson(const void* pObj, SJson* pJson) {
24,039✔
781
  const SLogicNode* pNode = (const SLogicNode*)pObj;
24,039✔
782

783
  int32_t code = nodeListToJson(pJson, jkLogicPlanTargets, pNode->pTargets);
24,039✔
784
  if (TSDB_CODE_SUCCESS == code) {
24,039!
785
    code = tjsonAddObject(pJson, jkLogicPlanConditions, nodeToJson, pNode->pConditions);
24,039✔
786
  }
787
  if (TSDB_CODE_SUCCESS == code) {
24,039!
788
    code = nodeListToJson(pJson, jkLogicPlanChildren, pNode->pChildren);
24,039✔
789
  }
790
  if (TSDB_CODE_SUCCESS == code) {
24,039!
791
    code = tjsonAddObject(pJson, jkLogicPlanLimit, nodeToJson, pNode->pLimit);
24,039✔
792
  }
793
  if (TSDB_CODE_SUCCESS == code) {
24,039!
794
    code = tjsonAddObject(pJson, jkLogicPlanSlimit, nodeToJson, pNode->pSlimit);
24,039✔
795
  }
796
  if (TSDB_CODE_SUCCESS == code) {
24,039!
797
    code = tjsonAddIntegerToObject(pJson, jkLogicPlanRequireDataOrder, pNode->requireDataOrder);
24,039✔
798
  }
799
  if (TSDB_CODE_SUCCESS == code) {
24,039!
800
    code = tjsonAddIntegerToObject(pJson, jkLogicPlanResultDataOrder, pNode->resultDataOrder);
24,039✔
801
  }
802
  if (TSDB_CODE_SUCCESS == code) {
24,039!
803
    code = tjsonAddIntegerToObject(pJson, jkLogicPlanGroupAction, pNode->groupAction);
24,039✔
804
  }
805

806
  return code;
24,039✔
807
}
808

809
static int32_t jsonToLogicPlanNode(const SJson* pJson, void* pObj) {
10,455✔
810
  SLogicNode* pNode = (SLogicNode*)pObj;
10,455✔
811

812
  int32_t code = jsonToNodeList(pJson, jkLogicPlanTargets, &pNode->pTargets);
10,455✔
813
  if (TSDB_CODE_SUCCESS == code) {
10,455!
814
    code = jsonToNodeObject(pJson, jkLogicPlanConditions, &pNode->pConditions);
10,455✔
815
  }
816
  if (TSDB_CODE_SUCCESS == code) {
10,455!
817
    code = jsonToNodeList(pJson, jkLogicPlanChildren, &pNode->pChildren);
10,455✔
818
  }
819
  if (TSDB_CODE_SUCCESS == code) {
10,455!
820
    code = jsonToNodeObject(pJson, jkLogicPlanLimit, &pNode->pLimit);
10,455✔
821
  }
822
  if (TSDB_CODE_SUCCESS == code) {
10,455!
823
    code = jsonToNodeObject(pJson, jkLogicPlanSlimit, &pNode->pSlimit);
10,455✔
824
  }
825
  if (TSDB_CODE_SUCCESS == code) {
10,455!
826
    tjsonGetNumberValue(pJson, jkLogicPlanRequireDataOrder, pNode->requireDataOrder, code);
10,455✔
827
  }
828
  if (TSDB_CODE_SUCCESS == code) {
10,455!
829
    tjsonGetNumberValue(pJson, jkLogicPlanResultDataOrder, pNode->resultDataOrder, code);
10,455✔
830
  }
831
  if (TSDB_CODE_SUCCESS == code) {
10,455!
832
    tjsonGetNumberValue(pJson, jkLogicPlanGroupAction, pNode->groupAction, code);
10,455✔
833
  }
834

835
  return code;
10,455✔
836
}
837

838
static const char* jkScanLogicPlanScanCols = "ScanCols";
839
static const char* jkScanLogicPlanScanPseudoCols = "ScanPseudoCols";
840
static const char* jkScanLogicPlanTableType = "TableType";
841
static const char* jkScanLogicPlanTableId = "TableId";
842
static const char* jkScanLogicPlanStableId = "StableId";
843
static const char* jkScanLogicPlanScanType = "ScanType";
844
static const char* jkScanLogicPlanScanCount = "ScanCount";
845
static const char* jkScanLogicPlanReverseScanCount = "ReverseScanCount";
846
static const char* jkScanLogicPlanDynamicScanFuncs = "DynamicScanFuncs";
847
static const char* jkScanLogicPlanDataRequired = "DataRequired";
848
static const char* jkScanLogicPlanTagCond = "TagCond";
849
static const char* jkScanLogicPlanGroupTags = "GroupTags";
850
static const char* jkScanLogicPlanOnlyMetaCtbIdx = "OnlyMetaCtbIdx";
851
static const char* jkScanLogicPlanFilesetDelimited = "FilesetDelimited";
852
static const char* jkScanLogicPlanParaTablesSort = "ParaTablesSort";
853
static const char* jkScanLogicPlanSmallDataTsSort = "SmallDataTsSort";
854

855
static int32_t logicScanNodeToJson(const void* pObj, SJson* pJson) {
8,895✔
856
  const SScanLogicNode* pNode = (const SScanLogicNode*)pObj;
8,895✔
857

858
  int32_t code = logicPlanNodeToJson(pObj, pJson);
8,895✔
859
  if (TSDB_CODE_SUCCESS == code) {
8,895!
860
    code = nodeListToJson(pJson, jkScanLogicPlanScanCols, pNode->pScanCols);
8,895✔
861
  }
862
  if (TSDB_CODE_SUCCESS == code) {
8,895!
863
    code = nodeListToJson(pJson, jkScanLogicPlanScanPseudoCols, pNode->pScanPseudoCols);
8,895✔
864
  }
865
  if (TSDB_CODE_SUCCESS == code) {
8,895!
866
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanTableType, pNode->tableType);
8,895✔
867
  }
868
  if (TSDB_CODE_SUCCESS == code) {
8,895!
869
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanTableId, pNode->tableId);
8,895✔
870
  }
871
  if (TSDB_CODE_SUCCESS == code) {
8,895!
872
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanStableId, pNode->stableId);
8,895✔
873
  }
874
  if (TSDB_CODE_SUCCESS == code) {
8,895!
875
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanScanType, pNode->scanType);
8,895✔
876
  }
877
  if (TSDB_CODE_SUCCESS == code) {
8,895!
878
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanScanCount, pNode->scanSeq[0]);
8,895✔
879
  }
880
  if (TSDB_CODE_SUCCESS == code) {
8,895!
881
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanReverseScanCount, pNode->scanSeq[1]);
8,895✔
882
  }
883
  if (TSDB_CODE_SUCCESS == code) {
8,895!
884
    code = tjsonAddObject(pJson, jkScanLogicPlanDynamicScanFuncs, nodeToJson, pNode->pDynamicScanFuncs);
8,895✔
885
  }
886
  if (TSDB_CODE_SUCCESS == code) {
8,895!
887
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanDataRequired, pNode->dataRequired);
8,895✔
888
  }
889
  if (TSDB_CODE_SUCCESS == code) {
8,895!
890
    code = tjsonAddObject(pJson, jkScanLogicPlanTagCond, nodeToJson, pNode->pTagCond);
8,895✔
891
  }
892
  if (TSDB_CODE_SUCCESS == code) {
8,895!
893
    code = nodeListToJson(pJson, jkScanLogicPlanGroupTags, pNode->pGroupTags);
8,895✔
894
  }
895
  if (TSDB_CODE_SUCCESS == code) {
8,895!
896
    code = tjsonAddBoolToObject(pJson, jkScanLogicPlanOnlyMetaCtbIdx, pNode->onlyMetaCtbIdx);
8,895✔
897
  }
898
  if (TSDB_CODE_SUCCESS == code) {
8,895!
899
    code = tjsonAddBoolToObject(pJson, jkScanLogicPlanFilesetDelimited, pNode->filesetDelimited);
8,895✔
900
  }
901
  if (TSDB_CODE_SUCCESS == code) {
8,895!
902
    code = tjsonAddBoolToObject(pJson, jkScanLogicPlanParaTablesSort, pNode->paraTablesSort);
8,895✔
903
  }
904
  if (TSDB_CODE_SUCCESS == code) {
8,895!
905
    code = tjsonAddBoolToObject(pJson, jkScanLogicPlanSmallDataTsSort, pNode->paraTablesSort);
8,895✔
906
  }
907
  return code;
8,895✔
908
}
909

910
static int32_t jsonToLogicScanNode(const SJson* pJson, void* pObj) {
3,999✔
911
  SScanLogicNode* pNode = (SScanLogicNode*)pObj;
3,999✔
912

913
  int32_t objSize = 0;
3,999✔
914
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
3,999✔
915
  if (TSDB_CODE_SUCCESS == code) {
3,999!
916
    code = jsonToNodeList(pJson, jkScanLogicPlanScanCols, &pNode->pScanCols);
3,999✔
917
  }
918
  if (TSDB_CODE_SUCCESS == code) {
3,999!
919
    code = jsonToNodeList(pJson, jkScanLogicPlanScanPseudoCols, &pNode->pScanPseudoCols);
3,999✔
920
  }
921
  if (TSDB_CODE_SUCCESS == code) {
3,999!
922
    code = tjsonGetTinyIntValue(pJson, jkScanLogicPlanTableType, &pNode->tableType);
3,999✔
923
  }
924
  if (TSDB_CODE_SUCCESS == code) {
3,999!
925
    code = tjsonGetUBigIntValue(pJson, jkScanLogicPlanTableId, &pNode->tableId);
3,999✔
926
  }
927
  if (TSDB_CODE_SUCCESS == code) {
3,999!
928
    code = tjsonGetUBigIntValue(pJson, jkScanLogicPlanStableId, &pNode->stableId);
3,999✔
929
  }
930
  if (TSDB_CODE_SUCCESS == code) {
3,999!
931
    tjsonGetNumberValue(pJson, jkScanLogicPlanScanType, pNode->scanType, code);
3,999✔
932
  }
933
  if (TSDB_CODE_SUCCESS == code) {
3,999!
934
    code = tjsonGetUTinyIntValue(pJson, jkScanLogicPlanScanCount, &pNode->scanSeq[0]);
3,999✔
935
  }
936
  if (TSDB_CODE_SUCCESS == code) {
3,999!
937
    code = tjsonGetUTinyIntValue(pJson, jkScanLogicPlanReverseScanCount, &pNode->scanSeq[1]);
3,999✔
938
  }
939
  if (TSDB_CODE_SUCCESS == code) {
3,999!
940
    code = jsonToNodeList(pJson, jkScanLogicPlanDynamicScanFuncs, &pNode->pDynamicScanFuncs);
3,999✔
941
  }
942
  if (TSDB_CODE_SUCCESS == code) {
3,999!
943
    code = tjsonGetIntValue(pJson, jkScanLogicPlanDataRequired, &pNode->dataRequired);
3,999✔
944
  }
945
  if (TSDB_CODE_SUCCESS == code) {
3,999!
946
    code = jsonToNodeObject(pJson, jkScanLogicPlanTagCond, &pNode->pTagCond);
3,999✔
947
  }
948
  if (TSDB_CODE_SUCCESS == code) {
3,999!
949
    code = jsonToNodeList(pJson, jkScanLogicPlanGroupTags, &pNode->pGroupTags);
3,999✔
950
  }
951
  if (TSDB_CODE_SUCCESS == code) {
3,999!
952
    code = tjsonGetBoolValue(pJson, jkScanLogicPlanOnlyMetaCtbIdx, &pNode->onlyMetaCtbIdx);
3,999✔
953
  }
954
  if (TSDB_CODE_SUCCESS == code) {
3,999!
955
    code = tjsonGetBoolValue(pJson, jkScanLogicPlanFilesetDelimited, &pNode->filesetDelimited);
3,999✔
956
  }
957
  if (TSDB_CODE_SUCCESS == code) {
3,999!
958
    code = tjsonGetBoolValue(pJson, jkScanLogicPlanParaTablesSort, &pNode->smallDataTsSort);
3,999✔
959
  }
960
  if (TSDB_CODE_SUCCESS == code) {
3,999!
961
    code = tjsonGetBoolValue(pJson, jkScanLogicPlanSmallDataTsSort, &pNode->smallDataTsSort);
3,999✔
962
  }
963
  return code;
3,999✔
964
}
965

966
static const char* jkProjectLogicPlanProjections = "Projections";
967
static const char* jkProjectLogicPlanIgnoreGroupId = "IgnoreGroupId";
968
static const char* jkProjectLogicPlanInputIgnoreGroup = "InputIgnoreGroup";
969

970
static int32_t logicProjectNodeToJson(const void* pObj, SJson* pJson) {
6,054✔
971
  const SProjectLogicNode* pNode = (const SProjectLogicNode*)pObj;
6,054✔
972

973
  int32_t code = logicPlanNodeToJson(pObj, pJson);
6,054✔
974
  if (TSDB_CODE_SUCCESS == code) {
6,054!
975
    code = nodeListToJson(pJson, jkProjectLogicPlanProjections, pNode->pProjections);
6,054✔
976
  }
977
  if (TSDB_CODE_SUCCESS == code) {
6,054!
978
    code = tjsonAddBoolToObject(pJson, jkProjectLogicPlanIgnoreGroupId, pNode->ignoreGroupId);
6,054✔
979
  }
980
  if (TSDB_CODE_SUCCESS == code) {
6,054!
981
    code = tjsonAddBoolToObject(pJson, jkProjectLogicPlanInputIgnoreGroup, pNode->inputIgnoreGroup);
6,054✔
982
  }
983

984
  return code;
6,054✔
985
}
986

987
static int32_t jsonToLogicProjectNode(const SJson* pJson, void* pObj) {
2,142✔
988
  SProjectLogicNode* pNode = (SProjectLogicNode*)pObj;
2,142✔
989

990
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
2,142✔
991
  if (TSDB_CODE_SUCCESS == code) {
2,142!
992
    code = jsonToNodeList(pJson, jkProjectLogicPlanProjections, &pNode->pProjections);
2,142✔
993
  }
994
  if (TSDB_CODE_SUCCESS == code) {
2,142!
995
    code = tjsonGetBoolValue(pJson, jkProjectLogicPlanIgnoreGroupId, &pNode->ignoreGroupId);
2,142✔
996
  }
997
  if (TSDB_CODE_SUCCESS == code) {
2,142!
998
    code = tjsonGetBoolValue(pJson, jkProjectLogicPlanInputIgnoreGroup, &pNode->inputIgnoreGroup);
2,142✔
999
  }
1000
  return code;
2,142✔
1001
}
1002

1003
static const char* jkVnodeModifyLogicPlanModifyType = "ModifyType";
1004
static const char* jkVnodeModifyLogicPlanMsgType = "MsgType";
1005
static const char* jkVnodeModifyLogicPlanAffectedRows = "AffectedRows";
1006

1007
static int32_t logicVnodeModifyNodeToJson(const void* pObj, SJson* pJson) {
165✔
1008
  const SVnodeModifyLogicNode* pNode = (const SVnodeModifyLogicNode*)pObj;
165✔
1009

1010
  int32_t code = logicPlanNodeToJson(pObj, pJson);
165✔
1011
  if (TSDB_CODE_SUCCESS == code) {
165!
1012
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyLogicPlanModifyType, pNode->modifyType);
165✔
1013
  }
1014
  if (TSDB_CODE_SUCCESS == code) {
165!
1015
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyLogicPlanMsgType, pNode->msgType);
165✔
1016
  }
1017
  if (TSDB_CODE_SUCCESS == code) {
165!
1018
    code = tjsonAddObject(pJson, jkVnodeModifyLogicPlanAffectedRows, nodeToJson, pNode->pAffectedRows);
165✔
1019
  }
1020

1021
  return code;
165✔
1022
}
1023

1024
static int32_t jsonToLogicVnodeModifyNode(const SJson* pJson, void* pObj) {
84✔
1025
  SVnodeModifyLogicNode* pNode = (SVnodeModifyLogicNode*)pObj;
84✔
1026

1027
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
84✔
1028
  if (TSDB_CODE_SUCCESS == code) {
84!
1029
    tjsonGetNumberValue(pJson, jkVnodeModifyLogicPlanModifyType, pNode->modifyType, code);
84✔
1030
  }
1031
  if (TSDB_CODE_SUCCESS == code) {
84!
1032
    code = tjsonGetIntValue(pJson, jkVnodeModifyLogicPlanMsgType, &pNode->msgType);
84✔
1033
  }
1034
  if (TSDB_CODE_SUCCESS == code) {
84!
1035
    code = jsonToNodeObject(pJson, jkVnodeModifyLogicPlanAffectedRows, &pNode->pAffectedRows);
84✔
1036
  }
1037

1038
  return code;
84✔
1039
}
1040

1041
static const char* jkExchangeLogicPlanSrcStartGroupId = "SrcStartGroupId";
1042
static const char* jkExchangeLogicPlanSrcEndGroupId = "SrcEndGroupId";
1043

1044
static int32_t logicExchangeNodeToJson(const void* pObj, SJson* pJson) {
936✔
1045
  const SExchangeLogicNode* pNode = (const SExchangeLogicNode*)pObj;
936✔
1046

1047
  int32_t code = logicPlanNodeToJson(pObj, pJson);
936✔
1048
  if (TSDB_CODE_SUCCESS == code) {
936!
1049
    code = tjsonAddIntegerToObject(pJson, jkExchangeLogicPlanSrcStartGroupId, pNode->srcStartGroupId);
936✔
1050
  }
1051
  if (TSDB_CODE_SUCCESS == code) {
936!
1052
    code = tjsonAddIntegerToObject(pJson, jkExchangeLogicPlanSrcEndGroupId, pNode->srcEndGroupId);
936✔
1053
  }
1054

1055
  return code;
936✔
1056
}
1057

1058
static int32_t jsonToLogicExchangeNode(const SJson* pJson, void* pObj) {
594✔
1059
  SExchangeLogicNode* pNode = (SExchangeLogicNode*)pObj;
594✔
1060

1061
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
594✔
1062
  if (TSDB_CODE_SUCCESS == code) {
594!
1063
    code = tjsonGetIntValue(pJson, jkExchangeLogicPlanSrcStartGroupId, &pNode->srcStartGroupId);
594✔
1064
  }
1065
  if (TSDB_CODE_SUCCESS == code) {
594!
1066
    code = tjsonGetIntValue(pJson, jkExchangeLogicPlanSrcEndGroupId, &pNode->srcEndGroupId);
594✔
1067
  }
1068

1069
  return code;
594✔
1070
}
1071

1072
static const char* jkMergeLogicPlanMergeKeys = "MergeKeys";
1073
static const char* jkMergeLogicPlanInputs = "Inputs";
1074
static const char* jkMergeLogicPlanNumOfChannels = "NumOfChannels";
1075
static const char* jkMergeLogicPlanSrcGroupId = "SrcGroupId";
1076
static const char* jkMergeLogicPlanSrcEndGroupId = "SrcEndGroupId";
1077

1078
static int32_t logicMergeNodeToJson(const void* pObj, SJson* pJson) {
345✔
1079
  const SMergeLogicNode* pNode = (const SMergeLogicNode*)pObj;
345✔
1080

1081
  int32_t code = logicPlanNodeToJson(pObj, pJson);
345✔
1082
  if (TSDB_CODE_SUCCESS == code) {
345!
1083
    code = nodeListToJson(pJson, jkMergeLogicPlanMergeKeys, pNode->pMergeKeys);
345✔
1084
  }
1085
  if (TSDB_CODE_SUCCESS == code) {
345!
1086
    code = nodeListToJson(pJson, jkMergeLogicPlanInputs, pNode->pInputs);
345✔
1087
  }
1088
  if (TSDB_CODE_SUCCESS == code) {
345!
1089
    code = tjsonAddIntegerToObject(pJson, jkMergeLogicPlanNumOfChannels, pNode->numOfChannels);
345✔
1090
  }
1091
  if (TSDB_CODE_SUCCESS == code) {
345!
1092
    code = tjsonAddIntegerToObject(pJson, jkMergeLogicPlanSrcGroupId, pNode->srcGroupId);
345✔
1093
  }
1094
  if (TSDB_CODE_SUCCESS == code) {
345!
1095
    code = tjsonAddIntegerToObject(pJson, jkMergeLogicPlanSrcEndGroupId, pNode->srcEndGroupId);
345✔
1096
  }
1097
  return code;
345✔
1098
}
1099

1100
static int32_t jsonToLogicMergeNode(const SJson* pJson, void* pObj) {
213✔
1101
  SMergeLogicNode* pNode = (SMergeLogicNode*)pObj;
213✔
1102

1103
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
213✔
1104
  if (TSDB_CODE_SUCCESS == code) {
213!
1105
    code = jsonToNodeList(pJson, jkMergeLogicPlanMergeKeys, &pNode->pMergeKeys);
213✔
1106
  }
1107
  if (TSDB_CODE_SUCCESS == code) {
213!
1108
    code = jsonToNodeList(pJson, jkMergeLogicPlanInputs, &pNode->pInputs);
213✔
1109
  }
1110
  if (TSDB_CODE_SUCCESS == code) {
213!
1111
    code = tjsonGetIntValue(pJson, jkMergeLogicPlanNumOfChannels, &pNode->numOfChannels);
213✔
1112
  }
1113
  if (TSDB_CODE_SUCCESS == code) {
213!
1114
    code = tjsonGetIntValue(pJson, jkMergeLogicPlanSrcGroupId, &pNode->srcGroupId);
213✔
1115
  }
1116
  if (TSDB_CODE_SUCCESS == code) {
213!
1117
    code = tjsonGetIntValue(pJson, jkMergeLogicPlanSrcEndGroupId, &pNode->srcEndGroupId);
213✔
1118
  }
1119
  return code;
213✔
1120
}
1121

1122
static const char* jkWindowLogicPlanWinType = "WinType";
1123
static const char* jkWindowLogicPlanFuncs = "Funcs";
1124
static const char* jkWindowLogicPlanInterval = "Interval";
1125
static const char* jkWindowLogicPlanOffset = "Offset";
1126
static const char* jkWindowLogicPlanSliding = "Sliding";
1127
static const char* jkWindowLogicPlanIntervalUnit = "IntervalUnit";
1128
static const char* jkWindowLogicPlanSlidingUnit = "SlidingUnit";
1129
static const char* jkWindowLogicPlanStartTime = "StartTime";
1130
static const char* jkWindowLogicPlanEndTime = "EndTime";
1131
static const char* jkWindowLogicPlanSessionGap = "SessionGap";
1132
static const char* jkWindowLogicPlanTspk = "Tspk";
1133
static const char* jkWindowLogicPlanStateExpr = "StateExpr";
1134
static const char* jkWindowLogicPlanTriggerType = "TriggerType";
1135
static const char* jkWindowLogicPlanWatermark = "Watermark";
1136
static const char* jkWindowLogicPlanDeleteMark = "DeleteMark";
1137
static const char* jkWindowLogicPlanRecalculateInterval = "RecalculateInterval";
1138
static const char* jkWindowLogicPlanIndefRowsFunc = "IndefRowsFunc";
1139

1140
static int32_t logicWindowNodeToJson(const void* pObj, SJson* pJson) {
1,221✔
1141
  const SWindowLogicNode* pNode = (const SWindowLogicNode*)pObj;
1,221✔
1142

1143
  int32_t code = logicPlanNodeToJson(pObj, pJson);
1,221✔
1144
  if (TSDB_CODE_SUCCESS == code) {
1,221!
1145
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanWinType, pNode->winType);
1,221✔
1146
  }
1147
  if (TSDB_CODE_SUCCESS == code) {
1,221!
1148
    code = nodeListToJson(pJson, jkWindowLogicPlanFuncs, pNode->pFuncs);
1,221✔
1149
  }
1150
  if (TSDB_CODE_SUCCESS == code) {
1,221!
1151
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanInterval, pNode->interval);
1,221✔
1152
  }
1153
  if (TSDB_CODE_SUCCESS == code) {
1,221!
1154
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanOffset, pNode->offset);
1,221✔
1155
  }
1156
  if (TSDB_CODE_SUCCESS == code) {
1,221!
1157
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanSliding, pNode->sliding);
1,221✔
1158
  }
1159
  if (TSDB_CODE_SUCCESS == code) {
1,221!
1160
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanIntervalUnit, pNode->intervalUnit);
1,221✔
1161
  }
1162
  if (TSDB_CODE_SUCCESS == code) {
1,221!
1163
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanSlidingUnit, pNode->slidingUnit);
1,221✔
1164
  }
1165
  if (TSDB_CODE_SUCCESS == code) {
1,221!
1166
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanStartTime, pNode->timeRange.skey);
1,221✔
1167
  }
1168
  if (TSDB_CODE_SUCCESS == code) {
1,221!
1169
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanEndTime, pNode->timeRange.ekey);
1,221✔
1170
  }
1171
  if (TSDB_CODE_SUCCESS == code) {
1,221!
1172
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanSessionGap, pNode->sessionGap);
1,221✔
1173
  }
1174
  if (TSDB_CODE_SUCCESS == code) {
1,221!
1175
    code = tjsonAddObject(pJson, jkWindowLogicPlanTspk, nodeToJson, pNode->pTspk);
1,221✔
1176
  }
1177
  if (TSDB_CODE_SUCCESS == code) {
1,221!
1178
    code = tjsonAddObject(pJson, jkWindowLogicPlanStateExpr, nodeToJson, pNode->pStateExpr);
1,221✔
1179
  }
1180
  if (TSDB_CODE_SUCCESS == code) {
1,221!
1181
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanTriggerType, pNode->triggerType);
1,221✔
1182
  }
1183
  if (TSDB_CODE_SUCCESS == code) {
1,221!
1184
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanWatermark, pNode->watermark);
1,221✔
1185
  }
1186
  if (TSDB_CODE_SUCCESS == code) {
1,221!
1187
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanDeleteMark, pNode->deleteMark);
1,221✔
1188
  }
1189
  if (TSDB_CODE_SUCCESS == code) {
1,221!
1190
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanRecalculateInterval, pNode->recalculateInterval);
1,221✔
1191
  }
1192
  if (TSDB_CODE_SUCCESS == code) {
1,221!
1193
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanIndefRowsFunc, pNode->indefRowsFunc);
1,221✔
1194
  }
1195

1196
  return code;
1,221✔
1197
}
1198

1199
static int32_t jsonToLogicWindowNode(const SJson* pJson, void* pObj) {
579✔
1200
  SWindowLogicNode* pNode = (SWindowLogicNode*)pObj;
579✔
1201

1202
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
579✔
1203
  if (TSDB_CODE_SUCCESS == code) {
579!
1204
    tjsonGetNumberValue(pJson, jkWindowLogicPlanWinType, pNode->winType, code);
579✔
1205
  }
1206
  if (TSDB_CODE_SUCCESS == code) {
579!
1207
    code = jsonToNodeList(pJson, jkWindowLogicPlanFuncs, &pNode->pFuncs);
579✔
1208
  }
1209
  if (TSDB_CODE_SUCCESS == code) {
579!
1210
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanInterval, &pNode->interval);
579✔
1211
  }
1212
  if (TSDB_CODE_SUCCESS == code) {
579!
1213
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanOffset, &pNode->offset);
579✔
1214
  }
1215
  if (TSDB_CODE_SUCCESS == code) {
579!
1216
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanSliding, &pNode->sliding);
579✔
1217
  }
1218
  if (TSDB_CODE_SUCCESS == code) {
579!
1219
    code = tjsonGetTinyIntValue(pJson, jkWindowLogicPlanIntervalUnit, &pNode->intervalUnit);
579✔
1220
  }
1221
  if (TSDB_CODE_SUCCESS == code) {
579!
1222
    code = tjsonGetTinyIntValue(pJson, jkWindowLogicPlanSlidingUnit, &pNode->slidingUnit);
579✔
1223
  }
1224
  if (TSDB_CODE_SUCCESS == code) {
579!
1225
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanStartTime, &pNode->timeRange.skey);
579✔
1226
  }
1227
  if (TSDB_CODE_SUCCESS == code) {
579!
1228
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanEndTime, &pNode->timeRange.ekey);
579✔
1229
  }
1230
  if (TSDB_CODE_SUCCESS == code) {
579!
1231
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanSessionGap, &pNode->sessionGap);
579✔
1232
  }
1233
  if (TSDB_CODE_SUCCESS == code) {
579!
1234
    code = jsonToNodeObject(pJson, jkWindowLogicPlanTspk, &pNode->pTspk);
579✔
1235
  }
1236
  if (TSDB_CODE_SUCCESS == code) {
579!
1237
    code = jsonToNodeObject(pJson, jkWindowLogicPlanStateExpr, &pNode->pStateExpr);
579✔
1238
  }
1239
  if (TSDB_CODE_SUCCESS == code) {
579!
1240
    code = tjsonGetTinyIntValue(pJson, jkWindowLogicPlanTriggerType, &pNode->triggerType);
579✔
1241
  }
1242
  if (TSDB_CODE_SUCCESS == code) {
579!
1243
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanWatermark, &pNode->watermark);
579✔
1244
  }
1245
  if (TSDB_CODE_SUCCESS == code) {
579!
1246
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanDeleteMark, &pNode->deleteMark);
579✔
1247
  }
1248
  if (TSDB_CODE_SUCCESS == code) {
579!
1249
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanRecalculateInterval, &pNode->recalculateInterval);
579✔
1250
  }
1251
  if (TSDB_CODE_SUCCESS == code) {
579!
1252
    code = tjsonGetTinyIntValue(pJson, jkWindowLogicPlanIndefRowsFunc, &pNode->indefRowsFunc);
579✔
1253
  }
1254

1255
  return code;
579✔
1256
}
1257

1258
static const char* jkFillLogicPlanMode = "Mode";
1259
static const char* jkFillLogicPlanWStartTs = "WStartTs";
1260
static const char* jkFillLogicPlanValues = "Values";
1261
static const char* jkFillLogicPlanStartTime = "StartTime";
1262
static const char* jkFillLogicPlanEndTime = "EndTime";
1263

1264
static int32_t logicFillNodeToJson(const void* pObj, SJson* pJson) {
288✔
1265
  const SFillLogicNode* pNode = (const SFillLogicNode*)pObj;
288✔
1266

1267
  int32_t code = logicPlanNodeToJson(pObj, pJson);
288✔
1268
  if (TSDB_CODE_SUCCESS == code) {
288!
1269
    code = tjsonAddIntegerToObject(pJson, jkFillLogicPlanMode, pNode->mode);
288✔
1270
  }
1271
  if (TSDB_CODE_SUCCESS == code) {
288!
1272
    code = tjsonAddObject(pJson, jkFillLogicPlanWStartTs, nodeToJson, pNode->pWStartTs);
288✔
1273
  }
1274
  if (TSDB_CODE_SUCCESS == code) {
288!
1275
    code = tjsonAddObject(pJson, jkFillLogicPlanValues, nodeToJson, pNode->pValues);
288✔
1276
  }
1277
  if (TSDB_CODE_SUCCESS == code) {
288!
1278
    code = tjsonAddIntegerToObject(pJson, jkFillLogicPlanStartTime, pNode->timeRange.skey);
288✔
1279
  }
1280
  if (TSDB_CODE_SUCCESS == code) {
288!
1281
    code = tjsonAddIntegerToObject(pJson, jkFillLogicPlanEndTime, pNode->timeRange.ekey);
288✔
1282
  }
1283

1284
  return code;
288✔
1285
}
1286

1287
static int32_t jsonToLogicFillNode(const SJson* pJson, void* pObj) {
123✔
1288
  SFillLogicNode* pNode = (SFillLogicNode*)pObj;
123✔
1289

1290
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
123✔
1291
  if (TSDB_CODE_SUCCESS == code) {
123!
1292
    tjsonGetNumberValue(pJson, jkFillLogicPlanMode, pNode->mode, code);
123✔
1293
  }
1294
  if (TSDB_CODE_SUCCESS == code) {
123!
1295
    code = jsonToNodeObject(pJson, jkFillLogicPlanWStartTs, &pNode->pWStartTs);
123✔
1296
  }
1297
  if (TSDB_CODE_SUCCESS == code) {
123!
1298
    code = jsonToNodeObject(pJson, jkFillLogicPlanValues, &pNode->pValues);
123✔
1299
  }
1300
  if (TSDB_CODE_SUCCESS == code) {
123!
1301
    code = tjsonGetBigIntValue(pJson, jkFillLogicPlanStartTime, &pNode->timeRange.skey);
123✔
1302
  }
1303
  if (TSDB_CODE_SUCCESS == code) {
123!
1304
    code = tjsonGetBigIntValue(pJson, jkFillLogicPlanEndTime, &pNode->timeRange.ekey);
123✔
1305
  }
1306

1307
  return code;
123✔
1308
}
1309

1310
static const char* jkSortLogicPlanSortKeys = "SortKeys";
1311

1312
static int32_t logicSortNodeToJson(const void* pObj, SJson* pJson) {
1,050✔
1313
  const SSortLogicNode* pNode = (const SSortLogicNode*)pObj;
1,050✔
1314

1315
  int32_t code = logicPlanNodeToJson(pObj, pJson);
1,050✔
1316
  if (TSDB_CODE_SUCCESS == code) {
1,050!
1317
    code = nodeListToJson(pJson, jkSortLogicPlanSortKeys, pNode->pSortKeys);
1,050✔
1318
  }
1319

1320
  return code;
1,050✔
1321
}
1322

1323
static int32_t jsonToLogicSortNode(const SJson* pJson, void* pObj) {
444✔
1324
  SSortLogicNode* pNode = (SSortLogicNode*)pObj;
444✔
1325

1326
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
444✔
1327
  if (TSDB_CODE_SUCCESS == code) {
444!
1328
    code = jsonToNodeList(pJson, jkSortLogicPlanSortKeys, &pNode->pSortKeys);
444✔
1329
  }
1330

1331
  return code;
444✔
1332
}
1333

1334
static const char* jkPartitionLogicPlanPartitionKeys = "PartitionKeys";
1335

1336
static int32_t logicPartitionNodeToJson(const void* pObj, SJson* pJson) {
618✔
1337
  const SPartitionLogicNode* pNode = (const SPartitionLogicNode*)pObj;
618✔
1338

1339
  int32_t code = logicPlanNodeToJson(pObj, pJson);
618✔
1340
  if (TSDB_CODE_SUCCESS == code) {
618!
1341
    code = nodeListToJson(pJson, jkPartitionLogicPlanPartitionKeys, pNode->pPartitionKeys);
618✔
1342
  }
1343

1344
  return code;
618✔
1345
}
1346

1347
static int32_t jsonToLogicPartitionNode(const SJson* pJson, void* pObj) {
249✔
1348
  SPartitionLogicNode* pNode = (SPartitionLogicNode*)pObj;
249✔
1349

1350
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
249✔
1351
  if (TSDB_CODE_SUCCESS == code) {
249!
1352
    code = jsonToNodeList(pJson, jkPartitionLogicPlanPartitionKeys, &pNode->pPartitionKeys);
249✔
1353
  }
1354

1355
  return code;
249✔
1356
}
1357

1358
static const char* jkIndefRowsFuncLogicPlanFuncs = "Funcs";
1359

1360
static int32_t logicIndefRowsFuncNodeToJson(const void* pObj, SJson* pJson) {
429✔
1361
  const SIndefRowsFuncLogicNode* pNode = (const SIndefRowsFuncLogicNode*)pObj;
429✔
1362

1363
  int32_t code = logicPlanNodeToJson(pObj, pJson);
429✔
1364
  if (TSDB_CODE_SUCCESS == code) {
429!
1365
    code = nodeListToJson(pJson, jkIndefRowsFuncLogicPlanFuncs, pNode->pFuncs);
429✔
1366
  }
1367

1368
  return code;
429✔
1369
}
1370

1371
static int32_t jsonToLogicIndefRowsFuncNode(const SJson* pJson, void* pObj) {
168✔
1372
  SIndefRowsFuncLogicNode* pNode = (SIndefRowsFuncLogicNode*)pObj;
168✔
1373

1374
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
168✔
1375
  if (TSDB_CODE_SUCCESS == code) {
168!
1376
    code = jsonToNodeList(pJson, jkIndefRowsFuncLogicPlanFuncs, &pNode->pFuncs);
168✔
1377
  }
1378

1379
  return code;
168✔
1380
}
1381

1382
static const char* jkInterpFuncLogicPlanFuncs = "Funcs";
1383
static const char* jkInterpFuncLogicPlanStartTime = "StartTime";
1384
static const char* jkInterpFuncLogicPlanEndTime = "EndTime";
1385
static const char* jkInterpFuncLogicPlanInterval = "Interval";
1386
static const char* jkInterpFuncLogicPlanIntervalUnit = "IntervalUnit";
1387
static const char* jkInterpFuncLogicPlanPrecision = "Precision";
1388
static const char* jkInterpFuncLogicPlanFillMode = "fillMode";
1389
static const char* jkInterpFuncLogicPlanFillValues = "FillValues";
1390
static const char* jkInterpFuncLogicPlanTimeSeries = "TimeSeries";
1391
static const char* jkInterpFuncLogicPlanRangeInterval = "RangeInterval";
1392
static const char* jkInterpFuncLogicPlanRangeIntervalUnit = "RangeIntervalUnit";
1393

1394
static int32_t logicInterpFuncNodeToJson(const void* pObj, SJson* pJson) {
99✔
1395
  const SInterpFuncLogicNode* pNode = (const SInterpFuncLogicNode*)pObj;
99✔
1396

1397
  int32_t code = logicPlanNodeToJson(pObj, pJson);
99✔
1398
  if (TSDB_CODE_SUCCESS == code) {
99!
1399
    code = nodeListToJson(pJson, jkInterpFuncLogicPlanFuncs, pNode->pFuncs);
99✔
1400
  }
1401
  if (TSDB_CODE_SUCCESS == code) {
99!
1402
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanStartTime, pNode->timeRange.skey);
99✔
1403
  }
1404
  if (TSDB_CODE_SUCCESS == code) {
99!
1405
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanEndTime, pNode->timeRange.ekey);
99✔
1406
  }
1407
  if (TSDB_CODE_SUCCESS == code) {
99!
1408
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanInterval, pNode->interval);
99✔
1409
  }
1410
  if (TSDB_CODE_SUCCESS == code) {
99!
1411
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanIntervalUnit, pNode->intervalUnit);
99✔
1412
  }
1413
  if (TSDB_CODE_SUCCESS == code) {
99!
1414
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanPrecision, pNode->precision);
99✔
1415
  }
1416
  if (TSDB_CODE_SUCCESS == code) {
99!
1417
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanFillMode, pNode->fillMode);
99✔
1418
  }
1419
  if (TSDB_CODE_SUCCESS == code) {
99!
1420
    code = tjsonAddObject(pJson, jkInterpFuncLogicPlanFillValues, nodeToJson, pNode->pFillValues);
99✔
1421
  }
1422
  if (TSDB_CODE_SUCCESS == code) {
99!
1423
    code = tjsonAddObject(pJson, jkInterpFuncLogicPlanTimeSeries, nodeToJson, pNode->pTimeSeries);
99✔
1424
  }
1425
  if (TSDB_CODE_SUCCESS == code) {
99!
1426
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanRangeInterval, pNode->rangeInterval);
99✔
1427
  }
1428
  if (TSDB_CODE_SUCCESS == code) {
99!
1429
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanRangeIntervalUnit, pNode->rangeIntervalUnit);
99✔
1430
  }
1431

1432
  return code;
99✔
1433
}
1434

1435
static int32_t jsonToLogicInterpFuncNode(const SJson* pJson, void* pObj) {
48✔
1436
  SInterpFuncLogicNode* pNode = (SInterpFuncLogicNode*)pObj;
48✔
1437

1438
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
48✔
1439
  if (TSDB_CODE_SUCCESS == code) {
48!
1440
    code = jsonToNodeList(pJson, jkInterpFuncLogicPlanFuncs, &pNode->pFuncs);
48✔
1441
  }
1442
  if (TSDB_CODE_SUCCESS == code) {
48!
1443
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanStartTime, &pNode->timeRange.skey);
48✔
1444
  }
1445
  if (TSDB_CODE_SUCCESS == code) {
48!
1446
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanEndTime, &pNode->timeRange.ekey);
48✔
1447
  }
1448
  if (TSDB_CODE_SUCCESS == code) {
48!
1449
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanInterval, &pNode->interval);
48✔
1450
  }
1451
  if (TSDB_CODE_SUCCESS == code) {
48!
1452
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanIntervalUnit, &pNode->intervalUnit);
48✔
1453
  }
1454
  if (TSDB_CODE_SUCCESS == code) {
48!
1455
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanPrecision, &pNode->precision);
48✔
1456
  }
1457
  if (TSDB_CODE_SUCCESS == code) {
48!
1458
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanFillMode, (int8_t*)&pNode->fillMode);
48✔
1459
  }
1460
  if (TSDB_CODE_SUCCESS == code) {
48!
1461
    code = tjsonToObject(pJson, jkInterpFuncLogicPlanFillValues, jsonToNode, pNode->pFillValues);
48✔
1462
  }
1463
  if (TSDB_CODE_SUCCESS == code) {
48!
1464
    code = jsonToNodeObject(pJson, jkInterpFuncLogicPlanTimeSeries, &pNode->pTimeSeries);
48✔
1465
  }
1466
  if (TSDB_CODE_SUCCESS == code) {
48!
1467
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanRangeInterval, &pNode->rangeInterval);
48✔
1468
  }
1469
  if (TSDB_CODE_SUCCESS == code) {
48!
1470
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanRangeIntervalUnit, &pNode->rangeIntervalUnit);
48✔
1471
  }
1472

1473
  return code;
48✔
1474
}
1475

1476
static const char* jkForecastFuncLogicPlanFuncs = "Funcs";
1477
static const char* jkImputationFuncLogicPlanFuncs = "Funcs";
1478

1479
static int32_t logicForecastFuncNodeToJson(const void* pObj, SJson* pJson) {
×
1480
  const SForecastFuncLogicNode* pNode = (const SForecastFuncLogicNode*)pObj;
×
1481

1482
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1483
  if (TSDB_CODE_SUCCESS == code) {
×
1484
    code = nodeListToJson(pJson, jkForecastFuncLogicPlanFuncs, pNode->pFuncs);
×
1485
  }
1486

1487
  return code;
×
1488
}
1489

1490
static int32_t jsonToLogicForecastFuncNode(const SJson* pJson, void* pObj) {
×
1491
  SForecastFuncLogicNode* pNode = (SForecastFuncLogicNode*)pObj;
×
1492

1493
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1494
  if (TSDB_CODE_SUCCESS == code) {
×
1495
    code = jsonToNodeList(pJson, jkForecastFuncLogicPlanFuncs, &pNode->pFuncs);
×
1496
  }
1497

1498
  return code;
×
1499
}
1500

1501
static int32_t logicImputationFuncNodeToJson(const void* pObj, SJson* pJson) {
×
1502
  const SImputationFuncLogicNode* pNode = (const SImputationFuncLogicNode*)pObj;
×
1503

1504
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1505
  if (TSDB_CODE_SUCCESS == code) {
×
1506
    code = nodeListToJson(pJson, jkImputationFuncLogicPlanFuncs, pNode->pFuncs);
×
1507
  }
1508

1509
  return code;
×
1510
}
1511

1512
static int32_t jsonToLogicImputationFuncNode(const SJson* pJson, void* pObj) {
×
1513
  SImputationFuncLogicNode* pNode = (SImputationFuncLogicNode*)pObj;
×
1514

1515
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1516
  if (TSDB_CODE_SUCCESS == code) {
×
1517
    code = jsonToNodeList(pJson, jkImputationFuncLogicPlanFuncs, &pNode->pFuncs);
×
1518
  }
1519

1520
  return code;
×
1521
}
1522

1523
static const char* jkGroupCacheLogicPlanGrpColsMayBeNull = "GroupColsMayBeNull";
1524
static const char* jkGroupCacheLogicPlanGroupByUid = "GroupByUid";
1525
static const char* jkGroupCacheLogicPlanGlobalGroup = "GlobalGroup";
1526
static const char* jkGroupCacheLogicPlanGroupCols = "GroupCols";
1527

1528
static int32_t logicGroupCacheNodeToJson(const void* pObj, SJson* pJson) {
×
1529
  const SGroupCacheLogicNode* pNode = (const SGroupCacheLogicNode*)pObj;
×
1530

1531
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1532
  if (TSDB_CODE_SUCCESS == code) {
×
1533
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGrpColsMayBeNull, pNode->grpColsMayBeNull);
×
1534
  }
1535
  if (TSDB_CODE_SUCCESS == code) {
×
1536
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGroupByUid, pNode->grpByUid);
×
1537
  }
1538
  if (TSDB_CODE_SUCCESS == code) {
×
1539
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGlobalGroup, pNode->globalGrp);
×
1540
  }
1541
  if (TSDB_CODE_SUCCESS == code) {
×
1542
    code = nodeListToJson(pJson, jkGroupCacheLogicPlanGroupCols, pNode->pGroupCols);
×
1543
  }
1544

1545
  return code;
×
1546
}
1547

1548
static int32_t jsonToLogicGroupCacheNode(const SJson* pJson, void* pObj) {
×
1549
  SGroupCacheLogicNode* pNode = (SGroupCacheLogicNode*)pObj;
×
1550

1551
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1552
  if (TSDB_CODE_SUCCESS == code) {
×
1553
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGrpColsMayBeNull, &pNode->grpColsMayBeNull);
×
1554
  }
1555
  if (TSDB_CODE_SUCCESS == code) {
×
1556
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGroupByUid, &pNode->grpByUid);
×
1557
  }
1558
  if (TSDB_CODE_SUCCESS == code) {
×
1559
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGlobalGroup, &pNode->globalGrp);
×
1560
  }
1561
  if (TSDB_CODE_SUCCESS == code) {
×
1562
    code = jsonToNodeList(pJson, jkGroupCacheLogicPlanGroupCols, &pNode->pGroupCols);
×
1563
  }
1564

1565
  return code;
×
1566
}
1567

1568
static const char* jkDynQueryCtrlLogicPlanQueryType = "QueryType";
1569
static const char* jkDynQueryCtrlLogicPlanStbJoinBatchFetch = "BatchFetch";
1570
static const char* jkDynQueryCtrlLogicPlanStbJoinVgList = "VgroupList";
1571
static const char* jkDynQueryCtrlLogicPlanStbJoinUidList = "UidList";
1572
static const char* jkDynQueryCtrlLogicPlanDynTbname = "DynTbname";
1573

1574
static int32_t logicDynQueryCtrlNodeToJson(const void* pObj, SJson* pJson) {
×
1575
  const SDynQueryCtrlLogicNode* pNode = (const SDynQueryCtrlLogicNode*)pObj;
×
1576

1577
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1578
  if (TSDB_CODE_SUCCESS == code) {
×
1579
    code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlLogicPlanQueryType, pNode->qType);
×
1580
  }
1581
  if (TSDB_CODE_SUCCESS == code) {
×
1582
    code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlLogicPlanStbJoinBatchFetch, pNode->stbJoin.batchFetch);
×
1583
  }
1584
  if (TSDB_CODE_SUCCESS == code) {
×
1585
    code = nodeListToJson(pJson, jkDynQueryCtrlLogicPlanStbJoinVgList, pNode->stbJoin.pVgList);
×
1586
  }
1587
  if (TSDB_CODE_SUCCESS == code) {
×
1588
    code = nodeListToJson(pJson, jkDynQueryCtrlLogicPlanStbJoinUidList, pNode->stbJoin.pUidList);
×
1589
  }
1590
  if (TSDB_CODE_SUCCESS == code) {
×
1591
    code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlLogicPlanDynTbname, pNode->dynTbname);
×
1592
  }
1593

1594
  return code;
×
1595
}
1596

1597
static int32_t jsonToLogicDynQueryCtrlNode(const SJson* pJson, void* pObj) {
×
1598
  SDynQueryCtrlLogicNode* pNode = (SDynQueryCtrlLogicNode*)pObj;
×
1599

1600
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1601
  if (TSDB_CODE_SUCCESS == code) {
×
1602
    tjsonGetNumberValue(pJson, jkDynQueryCtrlLogicPlanQueryType, pNode->qType, code);
×
1603
  }
1604
  if (TSDB_CODE_SUCCESS == code) {
×
1605
    code = tjsonGetBoolValue(pJson, jkDynQueryCtrlLogicPlanStbJoinBatchFetch, &pNode->stbJoin.batchFetch);
×
1606
  }
1607
  if (TSDB_CODE_SUCCESS == code) {
×
1608
    code = jsonToNodeList(pJson, jkDynQueryCtrlLogicPlanStbJoinVgList, &pNode->stbJoin.pVgList);
×
1609
  }
1610
  if (TSDB_CODE_SUCCESS == code) {
×
1611
    code = jsonToNodeList(pJson, jkDynQueryCtrlLogicPlanStbJoinUidList, &pNode->stbJoin.pUidList);
×
1612
  }
1613
  if (TSDB_CODE_SUCCESS == code) {
×
1614
    code = tjsonGetBoolValue(pJson, jkDynQueryCtrlLogicPlanDynTbname, &pNode->dynTbname);
×
1615
  }
1616

1617
  return code;
×
1618
}
1619

1620
static const char* jkSubplanIdQueryId = "QueryId";
1621
static const char* jkSubplanIdGroupId = "GroupId";
1622
static const char* jkSubplanIdSubplanId = "SubplanId";
1623

1624
static int32_t subplanIdToJson(const void* pObj, SJson* pJson) {
8,246,813✔
1625
  const SSubplanId* pNode = (const SSubplanId*)pObj;
8,246,813✔
1626

1627
  int32_t code = tjsonAddIntegerToObject(pJson, jkSubplanIdQueryId, pNode->queryId);
8,246,813✔
1628
  if (TSDB_CODE_SUCCESS == code) {
8,289,232!
1629
    code = tjsonAddIntegerToObject(pJson, jkSubplanIdGroupId, pNode->groupId);
8,290,493✔
1630
  }
1631
  if (TSDB_CODE_SUCCESS == code) {
8,291,749!
1632
    code = tjsonAddIntegerToObject(pJson, jkSubplanIdSubplanId, pNode->subplanId);
8,294,076✔
1633
  }
1634

1635
  return code;
8,295,039✔
1636
}
1637

1638
static int32_t jsonToSubplanId(const SJson* pJson, void* pObj) {
26,517✔
1639
  SSubplanId* pNode = (SSubplanId*)pObj;
26,517✔
1640

1641
  int32_t code = tjsonGetUBigIntValue(pJson, jkSubplanIdQueryId, &pNode->queryId);
26,517✔
1642
  if (TSDB_CODE_SUCCESS == code) {
26,522!
1643
    code = tjsonGetIntValue(pJson, jkSubplanIdGroupId, &pNode->groupId);
26,522✔
1644
  }
1645
  if (TSDB_CODE_SUCCESS == code) {
26,523✔
1646
    code = tjsonGetIntValue(pJson, jkSubplanIdSubplanId, &pNode->subplanId);
26,522✔
1647
  }
1648

1649
  return code;
26,522✔
1650
}
1651

1652
static const char* jkEndPointFqdn = "Fqdn";
1653
static const char* jkEndPointPort = "Port";
1654

1655
static int32_t epToJson(const void* pObj, SJson* pJson) {
8,540,433✔
1656
  const SEp* pNode = (const SEp*)pObj;
8,540,433✔
1657

1658
  int32_t code = tjsonAddStringToObject(pJson, jkEndPointFqdn, pNode->fqdn);
8,540,433✔
1659
  if (TSDB_CODE_SUCCESS == code) {
8,566,868!
1660
    code = tjsonAddIntegerToObject(pJson, jkEndPointPort, pNode->port);
8,567,310✔
1661
  }
1662

1663
  return code;
8,563,373✔
1664
}
1665

1666
static int32_t jsonToEp(const SJson* pJson, void* pObj) {
31,227✔
1667
  SEp* pNode = (SEp*)pObj;
31,227✔
1668

1669
  int32_t code = tjsonGetStringValue(pJson, jkEndPointFqdn, pNode->fqdn);
31,227✔
1670
  if (TSDB_CODE_SUCCESS == code) {
31,228!
1671
    code = tjsonGetSmallIntValue(pJson, jkEndPointPort, &pNode->port);
31,229✔
1672
  }
1673

1674
  return code;
31,229✔
1675
}
1676

1677
static const char* jkEpSetInUse = "InUse";
1678
static const char* jkEpSetNumOfEps = "NumOfEps";
1679
static const char* jkEpSetEps = "Eps";
1680

1681
static int32_t epSetToJson(const void* pObj, SJson* pJson) {
10,069✔
1682
  const SEpSet* pNode = (const SEpSet*)pObj;
10,069✔
1683

1684
  int32_t code = tjsonAddIntegerToObject(pJson, jkEpSetInUse, pNode->inUse);
10,069✔
1685
  if (TSDB_CODE_SUCCESS == code) {
10,070!
1686
    code = tjsonAddIntegerToObject(pJson, jkEpSetNumOfEps, pNode->numOfEps);
10,070✔
1687
  }
1688
  if (TSDB_CODE_SUCCESS == code) {
10,070!
1689
    code = tjsonAddArray(pJson, jkEpSetEps, epToJson, pNode->eps, sizeof(SEp), pNode->numOfEps);
10,070✔
1690
  }
1691

1692
  return code;
10,070✔
1693
}
1694

1695
static int32_t jsonToEpSet(const SJson* pJson, void* pObj) {
4,875✔
1696
  SEpSet* pNode = (SEpSet*)pObj;
4,875✔
1697

1698
  int32_t code = tjsonGetTinyIntValue(pJson, jkEpSetInUse, &pNode->inUse);
4,875✔
1699
  if (TSDB_CODE_SUCCESS == code) {
4,875!
1700
    code = tjsonGetTinyIntValue(pJson, jkEpSetNumOfEps, &pNode->numOfEps);
4,875✔
1701
  }
1702
  if (TSDB_CODE_SUCCESS == code) {
4,875!
1703
    code = tjsonToArray(pJson, jkEpSetEps, jsonToEp, pNode->eps, sizeof(SEp));
4,875✔
1704
  }
1705

1706
  return code;
4,875✔
1707
}
1708

1709
static const char* jkVgroupInfoVgId = "VgId";
1710
static const char* jkVgroupInfoHashBegin = "HashBegin";
1711
static const char* jkVgroupInfoHashEnd = "HashEnd";
1712
static const char* jkVgroupInfoEpSet = "EpSet";
1713
static const char* jkVgroupInfoNumOfTable = "NumOfTable";
1714

1715
static int32_t vgroupInfoToJson(const void* pObj, SJson* pJson) {
5,109✔
1716
  const SVgroupInfo* pNode = (const SVgroupInfo*)pObj;
5,109✔
1717

1718
  int32_t code = tjsonAddIntegerToObject(pJson, jkVgroupInfoVgId, pNode->vgId);
5,109✔
1719
  if (TSDB_CODE_SUCCESS == code) {
5,109!
1720
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoHashBegin, pNode->hashBegin);
5,109✔
1721
  }
1722
  if (TSDB_CODE_SUCCESS == code) {
5,109!
1723
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoHashEnd, pNode->hashEnd);
5,109✔
1724
  }
1725
  if (TSDB_CODE_SUCCESS == code) {
5,109!
1726
    code = tjsonAddObject(pJson, jkVgroupInfoEpSet, epSetToJson, &pNode->epSet);
5,109✔
1727
  }
1728
  if (TSDB_CODE_SUCCESS == code) {
5,109!
1729
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoNumOfTable, pNode->numOfTable);
5,109✔
1730
  }
1731

1732
  return code;
5,109✔
1733
}
1734

1735
static int32_t jsonToVgroupInfo(const SJson* pJson, void* pObj) {
4,428✔
1736
  SVgroupInfo* pNode = (SVgroupInfo*)pObj;
4,428✔
1737

1738
  int32_t code = tjsonGetIntValue(pJson, jkVgroupInfoVgId, &pNode->vgId);
4,428✔
1739
  if (TSDB_CODE_SUCCESS == code) {
4,428!
1740
    code = tjsonGetUIntValue(pJson, jkVgroupInfoHashBegin, &pNode->hashBegin);
4,428✔
1741
  }
1742
  if (TSDB_CODE_SUCCESS == code) {
4,428!
1743
    code = tjsonGetUIntValue(pJson, jkVgroupInfoHashEnd, &pNode->hashEnd);
4,428✔
1744
  }
1745
  if (TSDB_CODE_SUCCESS == code) {
4,428!
1746
    code = tjsonToObject(pJson, jkVgroupInfoEpSet, jsonToEpSet, &pNode->epSet);
4,428✔
1747
  }
1748
  if (TSDB_CODE_SUCCESS == code) {
4,428!
1749
    code = tjsonGetIntValue(pJson, jkVgroupInfoNumOfTable, &pNode->numOfTable);
4,428✔
1750
  }
1751

1752
  return code;
4,428✔
1753
}
1754

1755
static const char* jkVgroupsInfoNum = "Num";
1756
static const char* jkVgroupsInfoVgroups = "Vgroups";
1757

1758
static int32_t vgroupsInfoToJson(const void* pObj, SJson* pJson) {
3,954✔
1759
  const SVgroupsInfo* pNode = (const SVgroupsInfo*)pObj;
3,954✔
1760

1761
  int32_t code = tjsonAddIntegerToObject(pJson, jkVgroupsInfoNum, pNode->numOfVgroups);
3,954✔
1762
  if (TSDB_CODE_SUCCESS == code) {
3,954!
1763
    code = tjsonAddArray(pJson, jkVgroupsInfoVgroups, vgroupInfoToJson, pNode->vgroups, sizeof(SVgroupInfo),
3,954✔
1764
                         pNode->numOfVgroups);
3,954✔
1765
  }
1766

1767
  return code;
3,954✔
1768
}
1769

1770
static int32_t jsonToVgroupsInfo(const SJson* pJson, void* pObj) {
3,594✔
1771
  SVgroupsInfo* pNode = (SVgroupsInfo*)pObj;
3,594✔
1772

1773
  int32_t code = tjsonGetIntValue(pJson, jkVgroupsInfoNum, &pNode->numOfVgroups);
3,594✔
1774
  if (TSDB_CODE_SUCCESS == code) {
3,594!
1775
    code = tjsonToArray(pJson, jkVgroupsInfoVgroups, jsonToVgroupInfo, pNode->vgroups, sizeof(SVgroupInfo));
3,594✔
1776
  }
1777

1778
  return code;
3,594✔
1779
}
1780

1781
static const char* jkLogicSubplanId = "Id";
1782
static const char* jkLogicSubplanChildren = "Children";
1783
static const char* jkLogicSubplanRootNode = "RootNode";
1784
static const char* jkLogicSubplanType = "SubplanType";
1785
static const char* jkLogicSubplanVgroupsSize = "VgroupsSize";
1786
static const char* jkLogicSubplanVgroups = "Vgroups";
1787
static const char* jkLogicSubplanLevel = "Level";
1788
static const char* jkLogicSubplanSplitFlag = "SplitFlag";
1789
static const char* jkLogicSubplanNumOfComputeNodes = "NumOfComputeNodes";
1790

1791
static int32_t logicSubplanToJson(const void* pObj, SJson* pJson) {
9,219✔
1792
  const SLogicSubplan* pNode = (const SLogicSubplan*)pObj;
9,219✔
1793

1794
  int32_t code = tjsonAddObject(pJson, jkLogicSubplanId, subplanIdToJson, &pNode->id);
9,219✔
1795
  if (TSDB_CODE_SUCCESS == code) {
9,219!
1796
    code = nodeListToJson(pJson, jkLogicSubplanChildren, pNode->pChildren);
9,219✔
1797
  }
1798
  if (TSDB_CODE_SUCCESS == code) {
9,219!
1799
    code = tjsonAddObject(pJson, jkLogicSubplanRootNode, nodeToJson, pNode->pNode);
9,219✔
1800
  }
1801
  if (TSDB_CODE_SUCCESS == code) {
9,219!
1802
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanType, pNode->subplanType);
9,219✔
1803
  }
1804
  if (TSDB_CODE_SUCCESS == code) {
9,219!
1805
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanVgroupsSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
9,219✔
1806
  }
1807
  if (TSDB_CODE_SUCCESS == code) {
9,219!
1808
    code = tjsonAddObject(pJson, jkLogicSubplanVgroups, vgroupsInfoToJson, pNode->pVgroupList);
9,219✔
1809
  }
1810
  if (TSDB_CODE_SUCCESS == code) {
9,219!
1811
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanLevel, pNode->level);
9,219✔
1812
  }
1813
  if (TSDB_CODE_SUCCESS == code) {
9,219!
1814
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanSplitFlag, pNode->splitFlag);
9,219✔
1815
  }
1816
  if (TSDB_CODE_SUCCESS == code) {
9,219!
1817
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanNumOfComputeNodes, pNode->numOfComputeNodes);
9,219✔
1818
  }
1819

1820
  return code;
9,219✔
1821
}
1822

1823
static int32_t jsonToLogicSubplan(const SJson* pJson, void* pObj) {
4,542✔
1824
  SLogicSubplan* pNode = (SLogicSubplan*)pObj;
4,542✔
1825

1826
  int32_t code = tjsonToObject(pJson, jkLogicSubplanId, jsonToSubplanId, &pNode->id);
4,542✔
1827
  if (TSDB_CODE_SUCCESS == code) {
4,542!
1828
    code = jsonToNodeList(pJson, jkLogicSubplanChildren, &pNode->pChildren);
4,542✔
1829
  }
1830
  if (TSDB_CODE_SUCCESS == code) {
4,542!
1831
    code = jsonToNodeObject(pJson, jkLogicSubplanRootNode, (SNode**)&pNode->pNode);
4,542✔
1832
  }
1833
  if (TSDB_CODE_SUCCESS == code) {
4,542!
1834
    tjsonGetNumberValue(pJson, jkLogicSubplanType, pNode->subplanType, code);
4,542✔
1835
  }
1836
  int32_t objSize = 0;
4,542✔
1837
  if (TSDB_CODE_SUCCESS == code) {
4,542!
1838
    code = tjsonGetIntValue(pJson, jkLogicSubplanVgroupsSize, &objSize);
4,542✔
1839
  }
1840
  if (TSDB_CODE_SUCCESS == code) {
4,542!
1841
    code = tjsonMakeObject(pJson, jkLogicSubplanVgroups, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
4,542✔
1842
  }
1843
  if (TSDB_CODE_SUCCESS == code) {
4,542!
1844
    code = tjsonGetIntValue(pJson, jkLogicSubplanLevel, &pNode->level);
4,542✔
1845
  }
1846
  if (TSDB_CODE_SUCCESS == code) {
4,542!
1847
    code = tjsonGetIntValue(pJson, jkLogicSubplanSplitFlag, &pNode->splitFlag);
4,542✔
1848
  }
1849
  if (TSDB_CODE_SUCCESS == code) {
4,542!
1850
    code = tjsonGetIntValue(pJson, jkLogicSubplanNumOfComputeNodes, &pNode->numOfComputeNodes);
4,542✔
1851
  }
1852

1853
  return code;
4,542✔
1854
}
1855

1856
static const char* jkLogicPlanSubplans = "Subplans";
1857

1858
static int32_t logicPlanToJson(const void* pObj, SJson* pJson) {
825✔
1859
  const SQueryLogicPlan* pNode = (const SQueryLogicPlan*)pObj;
825✔
1860
  return tjsonAddObject(pJson, jkLogicPlanSubplans, nodeToJson, nodesListGetNode(pNode->pTopSubplans, 0));
825✔
1861
}
1862

1863
static int32_t jsonToLogicPlan(const SJson* pJson, void* pObj) {
825✔
1864
  SQueryLogicPlan* pNode = (SQueryLogicPlan*)pObj;
825✔
1865
  SNode*           pChild = NULL;
825✔
1866
  int32_t          code = jsonToNodeObject(pJson, jkLogicPlanSubplans, &pChild);
825✔
1867
  if (TSDB_CODE_SUCCESS == code) {
825!
1868
    code = nodesListMakeStrictAppend(&pNode->pTopSubplans, pChild);
825✔
1869
  }
1870
  return code;
825✔
1871
}
1872

1873
static const char* jkJoinLogicPlanJoinType = "JoinType";
1874
static const char* jkJoinLogicPlanJoinAlgo = "JoinAlgo";
1875
static const char* jkJoinLogicPlanOnConditions = "OtherOnCond";
1876
static const char* jkJoinLogicPlanPrimKeyEqCondition = "PrimKeyEqCond";
1877
static const char* jkJoinLogicPlanColEqCondition = "ColumnEqCond";
1878
static const char* jkJoinLogicPlanTagEqCondition = "TagEqCond";
1879

1880
static int32_t logicJoinNodeToJson(const void* pObj, SJson* pJson) {
375✔
1881
  const SJoinLogicNode* pNode = (const SJoinLogicNode*)pObj;
375✔
1882

1883
  int32_t code = logicPlanNodeToJson(pObj, pJson);
375✔
1884
  if (TSDB_CODE_SUCCESS == code) {
375!
1885
    code = tjsonAddIntegerToObject(pJson, jkJoinLogicPlanJoinType, pNode->joinType);
375✔
1886
  }
1887
  if (TSDB_CODE_SUCCESS == code) {
375!
1888
    code = tjsonAddIntegerToObject(pJson, jkJoinLogicPlanJoinAlgo, pNode->joinAlgo);
375✔
1889
  }
1890
  if (TSDB_CODE_SUCCESS == code) {
375!
1891
    code = tjsonAddObject(pJson, jkJoinLogicPlanPrimKeyEqCondition, nodeToJson, pNode->pPrimKeyEqCond);
375✔
1892
  }
1893
  if (TSDB_CODE_SUCCESS == code) {
375!
1894
    code = tjsonAddObject(pJson, jkJoinLogicPlanColEqCondition, nodeToJson, pNode->pColEqCond);
375✔
1895
  }
1896
  if (TSDB_CODE_SUCCESS == code) {
375!
1897
    code = tjsonAddObject(pJson, jkJoinLogicPlanTagEqCondition, nodeToJson, pNode->pTagEqCond);
375✔
1898
  }
1899
  if (TSDB_CODE_SUCCESS == code) {
375!
1900
    code = tjsonAddObject(pJson, jkJoinLogicPlanOnConditions, nodeToJson, pNode->pFullOnCond);
375✔
1901
  }
1902
  return code;
375✔
1903
}
1904

1905
static int32_t jsonToLogicJoinNode(const SJson* pJson, void* pObj) {
132✔
1906
  SJoinLogicNode* pNode = (SJoinLogicNode*)pObj;
132✔
1907

1908
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
132✔
1909
  if (TSDB_CODE_SUCCESS == code) {
132!
1910
    tjsonGetNumberValue(pJson, jkJoinLogicPlanJoinType, pNode->joinType, code);
132✔
1911
  }
1912
  if (TSDB_CODE_SUCCESS == code) {
132!
1913
    tjsonGetNumberValue(pJson, jkJoinLogicPlanJoinAlgo, pNode->joinAlgo, code);
132✔
1914
  }
1915
  if (TSDB_CODE_SUCCESS == code) {
132!
1916
    code = jsonToNodeObject(pJson, jkJoinLogicPlanPrimKeyEqCondition, &pNode->pPrimKeyEqCond);
132✔
1917
  }
1918
  if (TSDB_CODE_SUCCESS == code) {
132!
1919
    code = jsonToNodeObject(pJson, jkJoinLogicPlanColEqCondition, &pNode->pColEqCond);
132✔
1920
  }
1921
  if (TSDB_CODE_SUCCESS == code) {
132!
1922
    code = jsonToNodeObject(pJson, jkJoinLogicPlanTagEqCondition, &pNode->pTagEqCond);
132✔
1923
  }
1924
  if (TSDB_CODE_SUCCESS == code) {
132!
1925
    code = jsonToNodeObject(pJson, jkJoinLogicPlanOnConditions, &pNode->pFullOnCond);
132✔
1926
  }
1927

1928
  return code;
132✔
1929
}
1930

1931
static const char* jkVirtualTableScanLogicPlanScanCols = "ScanCols";
1932
static const char* jkVirtualTableScanLogicPlanScanPseudoCols = "ScanPseudoCols";
1933
static const char* jkVirtualTableScanLogicPlanTableType = "TableType";
1934
static const char* jkVirtualTableScanLogicPlanTableId = "TableId";
1935
static const char* jkVirtualTableScanLogicPlanStableId = "StableId";
1936
static const char* jkVirtualTableScanLogicPlanScanType = "ScanType";
1937
static const char* jkVirtualTableScanLogicPlanscanAllCols = "scanAllCols";
1938

1939
static int32_t logicVirtualTableScanNodeToJson(const void* pObj, SJson* pJson) {
×
1940
  const SVirtualScanLogicNode* pNode = (const SVirtualScanLogicNode*)pObj;
×
1941

1942
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1943
  if (TSDB_CODE_SUCCESS == code) {
×
1944
    code = tjsonAddBoolToObject(pJson, jkVirtualTableScanLogicPlanscanAllCols, pNode->scanAllCols);
×
1945
  }
1946
  if (TSDB_CODE_SUCCESS == code) {
×
1947
    code = nodeListToJson(pJson, jkVirtualTableScanLogicPlanScanCols, pNode->pScanCols);
×
1948
  }
1949
  if (TSDB_CODE_SUCCESS == code) {
×
1950
    code = nodeListToJson(pJson, jkVirtualTableScanLogicPlanScanPseudoCols, pNode->pScanPseudoCols);
×
1951
  }
1952
  if (TSDB_CODE_SUCCESS == code) {
×
1953
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableScanLogicPlanTableType, pNode->tableType);
×
1954
  }
1955
  if (TSDB_CODE_SUCCESS == code) {
×
1956
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableScanLogicPlanTableId, pNode->tableId);
×
1957
  }
1958
  if (TSDB_CODE_SUCCESS == code) {
×
1959
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableScanLogicPlanStableId, pNode->stableId);
×
1960
  }
1961
  if (TSDB_CODE_SUCCESS == code) {
×
1962
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableScanLogicPlanScanType, pNode->scanType);
×
1963
  }
1964
  return code;
×
1965
}
1966

1967
static int32_t jsonToLogicVirtualTableScanNode(const SJson* pJson, void* pObj) {
×
1968
  SVirtualScanLogicNode* pNode = (SVirtualScanLogicNode *)pObj;
×
1969

1970
  int32_t objSize = 0;
×
1971
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1972
  if (TSDB_CODE_SUCCESS == code) {
×
1973
    code = tjsonGetBoolValue(pJson, jkVirtualTableScanLogicPlanscanAllCols, &pNode->scanAllCols);
×
1974
  }
1975
  if (TSDB_CODE_SUCCESS == code) {
×
1976
    code = jsonToNodeList(pJson, jkVirtualTableScanLogicPlanScanCols, &pNode->pScanCols);
×
1977
  }
1978
  if (TSDB_CODE_SUCCESS == code) {
×
1979
    code = jsonToNodeList(pJson, jkVirtualTableScanLogicPlanScanPseudoCols, &pNode->pScanPseudoCols);
×
1980
  }
1981
  if (TSDB_CODE_SUCCESS == code) {
×
1982
    code = tjsonGetTinyIntValue(pJson, jkVirtualTableScanLogicPlanTableType, &pNode->tableType);
×
1983
  }
1984
  if (TSDB_CODE_SUCCESS == code) {
×
1985
    code = tjsonGetUBigIntValue(pJson, jkVirtualTableScanLogicPlanTableId, &pNode->tableId);
×
1986
  }
1987
  if (TSDB_CODE_SUCCESS == code) {
×
1988
    code = tjsonGetUBigIntValue(pJson, jkVirtualTableScanLogicPlanStableId, &pNode->stableId);
×
1989
  }
1990
  if (TSDB_CODE_SUCCESS == code) {
×
1991
    tjsonGetNumberValue(pJson, jkVirtualTableScanLogicPlanScanType, pNode->scanType, code);
×
1992
  }
1993
  return code;
×
1994
}
1995

1996

1997
static const char* jkPhysiPlanOutputDataBlockDesc = "OutputDataBlockDesc";
1998
static const char* jkPhysiPlanConditions = "Conditions";
1999
static const char* jkPhysiPlanChildren = "Children";
2000
static const char* jkPhysiPlanLimit = "Limit";
2001
static const char* jkPhysiPlanSlimit = "SLimit";
2002
static const char* jkPhysiPlanInputTsOrder = "InputOrder";
2003
static const char* jkPhysiPlanOutputTsOrder = "OutputOrder";
2004
static const char* jkPhysiPlanDynamicOp = "DynamicOp";
2005
static const char* jkPhysiPlanForceCreateNonBlockingOptr = "ForceCreateNonBlockingOptr";
2006

2007

2008
static int32_t physicPlanNodeToJson(const void* pObj, SJson* pJson) {
465,627✔
2009
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
465,627✔
2010

2011
  int32_t code = tjsonAddObject(pJson, jkPhysiPlanOutputDataBlockDesc, nodeToJson, pNode->pOutputDataBlockDesc);
465,627✔
2012
  if (TSDB_CODE_SUCCESS == code) {
465,721!
2013
    code = tjsonAddObject(pJson, jkPhysiPlanConditions, nodeToJson, pNode->pConditions);
465,729✔
2014
  }
2015
  if (TSDB_CODE_SUCCESS == code) {
465,724✔
2016
    code = nodeListToJson(pJson, jkPhysiPlanChildren, pNode->pChildren);
465,710✔
2017
  }
2018
  if (TSDB_CODE_SUCCESS == code) {
465,700!
2019
    code = tjsonAddObject(pJson, jkPhysiPlanLimit, nodeToJson, pNode->pLimit);
465,700✔
2020
  }
2021
  if (TSDB_CODE_SUCCESS == code) {
465,702!
2022
    code = tjsonAddObject(pJson, jkPhysiPlanSlimit, nodeToJson, pNode->pSlimit);
465,705✔
2023
  }
2024
  if (TSDB_CODE_SUCCESS == code) {
465,702!
2025
    code = tjsonAddIntegerToObject(pJson, jkPhysiPlanInputTsOrder, pNode->inputTsOrder);
465,714✔
2026
  }
2027
  if (TSDB_CODE_SUCCESS == code) {
465,701!
2028
    code = tjsonAddIntegerToObject(pJson, jkPhysiPlanOutputTsOrder, pNode->outputTsOrder);
465,706✔
2029
  }
2030
  if (TSDB_CODE_SUCCESS == code) {
465,714!
2031
    code = tjsonAddBoolToObject(pJson, jkPhysiPlanDynamicOp, pNode->dynamicOp);
465,719✔
2032
  }
2033
  if (TSDB_CODE_SUCCESS == code) {
465,729!
2034
    code = tjsonAddBoolToObject(pJson, jkPhysiPlanForceCreateNonBlockingOptr, pNode->forceCreateNonBlockingOptr);
465,733✔
2035
  }
2036

2037
  return code;
465,727✔
2038
}
2039

2040
static int32_t jsonToPhysicPlanNode(const SJson* pJson, void* pObj) {
31,923✔
2041
  SPhysiNode* pNode = (SPhysiNode*)pObj;
31,923✔
2042

2043
  int32_t code = jsonToNodeObject(pJson, jkPhysiPlanOutputDataBlockDesc, (SNode**)&pNode->pOutputDataBlockDesc);
31,923✔
2044
  if (TSDB_CODE_SUCCESS == code) {
31,925!
2045
    code = jsonToNodeObject(pJson, jkPhysiPlanConditions, &pNode->pConditions);
31,926✔
2046
  }
2047
  if (TSDB_CODE_SUCCESS == code) {
31,924!
2048
    code = jsonToNodeList(pJson, jkPhysiPlanChildren, &pNode->pChildren);
31,925✔
2049
  }
2050
  if (TSDB_CODE_SUCCESS == code) {
31,925!
2051
    code = jsonToNodeObject(pJson, jkPhysiPlanLimit, &pNode->pLimit);
31,926✔
2052
  }
2053
  if (TSDB_CODE_SUCCESS == code) {
31,923!
2054
    code = jsonToNodeObject(pJson, jkPhysiPlanSlimit, &pNode->pSlimit);
31,924✔
2055
  }
2056
  if (TSDB_CODE_SUCCESS == code) {
31,925!
2057
    tjsonGetNumberValue(pJson, jkPhysiPlanInputTsOrder, pNode->inputTsOrder, code);
31,926✔
2058
  }
2059
  if (TSDB_CODE_SUCCESS == code) {
31,925✔
2060
    tjsonGetNumberValue(pJson, jkPhysiPlanOutputTsOrder, pNode->outputTsOrder, code);
31,924✔
2061
  }
2062
  if (TSDB_CODE_SUCCESS == code) {
31,926✔
2063
    code = tjsonGetBoolValue(pJson, jkPhysiPlanDynamicOp, &pNode->dynamicOp);
31,925✔
2064
  }
2065
  if (TSDB_CODE_SUCCESS == code) {
31,927✔
2066
    code = tjsonGetBoolValue(pJson, jkPhysiPlanForceCreateNonBlockingOptr, &pNode->forceCreateNonBlockingOptr);
31,926✔
2067
  }
2068

2069
  return code;
31,927✔
2070
}
2071

2072
static const char* jkNameType = "NameType";
2073
static const char* jkNameAcctId = "AcctId";
2074
static const char* jkNameDbName = "DbName";
2075
static const char* jkNameTableName = "TableName";
2076

2077
static int32_t nameToJson(const void* pObj, SJson* pJson) {
219,117✔
2078
  const SName* pNode = (const SName*)pObj;
219,117✔
2079

2080
  int32_t code = tjsonAddIntegerToObject(pJson, jkNameType, pNode->type);
219,117✔
2081
  if (TSDB_CODE_SUCCESS == code) {
219,131!
2082
    code = tjsonAddIntegerToObject(pJson, jkNameAcctId, pNode->acctId);
219,131✔
2083
  }
2084
  if (TSDB_CODE_SUCCESS == code) {
219,130!
2085
    code = tjsonAddStringToObject(pJson, jkNameDbName, pNode->dbname);
219,130✔
2086
  }
2087
  if (TSDB_CODE_SUCCESS == code) {
219,126!
2088
    code = tjsonAddStringToObject(pJson, jkNameTableName, pNode->tname);
219,127✔
2089
  }
2090

2091
  return code;
219,129✔
2092
}
2093

2094
static int32_t jsonToName(const SJson* pJson, void* pObj) {
19,138✔
2095
  SName* pNode = (SName*)pObj;
19,138✔
2096

2097
  int32_t code = tjsonGetUTinyIntValue(pJson, jkNameType, &pNode->type);
19,138✔
2098
  if (TSDB_CODE_SUCCESS == code) {
19,140!
2099
    code = tjsonGetIntValue(pJson, jkNameAcctId, &pNode->acctId);
19,140✔
2100
  }
2101
  if (TSDB_CODE_SUCCESS == code) {
19,140!
2102
    code = tjsonGetStringValue(pJson, jkNameDbName, pNode->dbname);
19,140✔
2103
  }
2104
  if (TSDB_CODE_SUCCESS == code) {
19,140!
2105
    code = tjsonGetStringValue(pJson, jkNameTableName, pNode->tname);
19,140✔
2106
  }
2107

2108
  return code;
19,140✔
2109
}
2110

2111
static const char* jkScanPhysiPlanScanCols = "ScanCols";
2112
static const char* jkScanPhysiPlanScanPseudoCols = "ScanPseudoCols";
2113
static const char* jkScanPhysiPlanTableId = "TableId";
2114
static const char* jkScanPhysiPlanSTableId = "STableId";
2115
static const char* jkScanPhysiPlanTableType = "TableType";
2116
static const char* jkScanPhysiPlanTableName = "TableName";
2117
static const char* jkScanPhysiPlanGroupOrderScan = "GroupOrderScan";
2118
static const char* jkScanPhysiPlanVirtualStableScan = "VirtualStableScan";
2119

2120
static int32_t physiScanNodeToJson(const void* pObj, SJson* pJson) {
219,091✔
2121
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
219,091✔
2122

2123
  int32_t code = physicPlanNodeToJson(pObj, pJson);
219,091✔
2124
  if (TSDB_CODE_SUCCESS == code) {
219,134!
2125
    code = nodeListToJson(pJson, jkScanPhysiPlanScanCols, pNode->pScanCols);
219,136✔
2126
  }
2127
  if (TSDB_CODE_SUCCESS == code) {
219,126✔
2128
    code = nodeListToJson(pJson, jkScanPhysiPlanScanPseudoCols, pNode->pScanPseudoCols);
219,122✔
2129
  }
2130
  if (TSDB_CODE_SUCCESS == code) {
219,131✔
2131
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanTableId, pNode->uid);
219,128✔
2132
  }
2133
  if (TSDB_CODE_SUCCESS == code) {
219,137✔
2134
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanSTableId, pNode->suid);
219,134✔
2135
  }
2136
  if (TSDB_CODE_SUCCESS == code) {
219,137✔
2137
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanTableType, pNode->tableType);
219,134✔
2138
  }
2139
  if (TSDB_CODE_SUCCESS == code) {
219,131✔
2140
    code = tjsonAddObject(pJson, jkScanPhysiPlanTableName, nameToJson, &pNode->tableName);
219,128✔
2141
  }
2142
  if (TSDB_CODE_SUCCESS == code) {
219,123!
2143
    code = tjsonAddBoolToObject(pJson, jkScanPhysiPlanGroupOrderScan, pNode->groupOrderScan);
219,123✔
2144
  }
2145
  if (TSDB_CODE_SUCCESS == code) {
219,132!
2146
    code = tjsonAddBoolToObject(pJson, jkScanPhysiPlanVirtualStableScan, pNode->virtualStableScan);
219,132✔
2147
  }
2148

2149
  return code;
219,132✔
2150
}
2151

2152
static int32_t jsonToPhysiScanNode(const SJson* pJson, void* pObj) {
19,140✔
2153
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
19,140✔
2154

2155
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
19,140✔
2156
  if (TSDB_CODE_SUCCESS == code) {
19,141!
2157
    code = jsonToNodeList(pJson, jkScanPhysiPlanScanCols, &pNode->pScanCols);
19,141✔
2158
  }
2159
  if (TSDB_CODE_SUCCESS == code) {
19,141!
2160
    code = jsonToNodeList(pJson, jkScanPhysiPlanScanPseudoCols, &pNode->pScanPseudoCols);
19,141✔
2161
  }
2162
  if (TSDB_CODE_SUCCESS == code) {
19,140!
2163
    code = tjsonGetUBigIntValue(pJson, jkScanPhysiPlanTableId, &pNode->uid);
19,140✔
2164
  }
2165
  if (TSDB_CODE_SUCCESS == code) {
19,138!
2166
    code = tjsonGetUBigIntValue(pJson, jkScanPhysiPlanSTableId, &pNode->suid);
19,138✔
2167
  }
2168
  if (TSDB_CODE_SUCCESS == code) {
19,140!
2169
    code = tjsonGetTinyIntValue(pJson, jkScanPhysiPlanTableType, &pNode->tableType);
19,140✔
2170
  }
2171
  if (TSDB_CODE_SUCCESS == code) {
19,140!
2172
    code = tjsonToObject(pJson, jkScanPhysiPlanTableName, jsonToName, &pNode->tableName);
19,140✔
2173
  }
2174
  if (TSDB_CODE_SUCCESS == code) {
19,140!
2175
    code = tjsonGetBoolValue(pJson, jkScanPhysiPlanGroupOrderScan, &pNode->groupOrderScan);
19,140✔
2176
  }
2177
  if (TSDB_CODE_SUCCESS == code) {
19,140!
2178
    code = tjsonGetBoolValue(pJson, jkScanPhysiPlanVirtualStableScan, &pNode->virtualStableScan);
19,140✔
2179
  }
2180

2181
  return code;
19,140✔
2182
}
2183

2184
static const char* jkTagScanPhysiOnlyMetaCtbIdx = "OnlyMetaCtbIdx";
2185

2186
static int32_t physiTagScanNodeToJson(const void* pObj, SJson* pJson) {
446✔
2187
  const STagScanPhysiNode* pNode = (const STagScanPhysiNode*)pObj;
446✔
2188

2189
  int32_t code = physiScanNodeToJson(pObj, pJson);
446✔
2190

2191
  if (TSDB_CODE_SUCCESS == code) {
446!
2192
    code = tjsonAddBoolToObject(pJson, jkTagScanPhysiOnlyMetaCtbIdx, pNode->onlyMetaCtbIdx);
446✔
2193
  }
2194
  return code;
446✔
2195
}
2196

2197
static int32_t jsonToPhysiTagScanNode(const SJson* pJson, void* pObj) {
57✔
2198
  STagScanPhysiNode* pNode = (STagScanPhysiNode*)pObj;
57✔
2199

2200
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
57✔
2201

2202
  if (TSDB_CODE_SUCCESS == code) {
57!
2203
    code = tjsonGetBoolValue(pJson, jkTagScanPhysiOnlyMetaCtbIdx, &pNode->onlyMetaCtbIdx);
57✔
2204
  }
2205
  return code;
57✔
2206
}
2207

2208
static const char* jkLastRowScanPhysiPlanGroupTags = "GroupTags";
2209
static const char* jkLastRowScanPhysiPlanGroupSort = "GroupSort";
2210
static const char* jkLastRowScanPhysiPlanTargets = "Targets";
2211
static const char* jkLastRowScanPhysiPlanFuncType = "FuncType";
2212
static const char* jkLastRowScanPhysiPlanFuncTypes = "FuncTypes";
2213
static const char* jkLastRowScanPhysiPlanIgnoreNull = "IgnoreNull";
2214

2215
static int32_t funcTypeToJson(const void* pObj, SJson* pJson) {
5,184✔
2216
  const int32_t* pNode = (const int32_t*)pObj;
5,184✔
2217

2218
  int32_t code = tjsonAddIntegerToObject(pJson, jkLastRowScanPhysiPlanFuncType, *pNode);
5,184✔
2219
  return code;
5,184✔
2220
}
2221

2222
static int32_t jsonToFuncType(const SJson* pJson, void* pObj) {
×
2223
  int32_t* pNode = (int32_t*)pObj;
×
2224

2225
  int32_t code = tjsonGetIntValue(pJson, jkLastRowScanPhysiPlanFuncType, pNode);
×
2226
  return code;
×
2227
}
2228

2229
static int32_t physiLastRowScanNodeToJson(const void* pObj, SJson* pJson) {
837✔
2230
  const SLastRowScanPhysiNode* pNode = (const SLastRowScanPhysiNode*)pObj;
837✔
2231

2232
  int32_t code = physiScanNodeToJson(pObj, pJson);
837✔
2233
  if (TSDB_CODE_SUCCESS == code) {
837!
2234
    code = nodeListToJson(pJson, jkLastRowScanPhysiPlanGroupTags, pNode->pGroupTags);
837✔
2235
  }
2236
  if (TSDB_CODE_SUCCESS == code) {
837!
2237
    code = tjsonAddBoolToObject(pJson, jkLastRowScanPhysiPlanGroupSort, pNode->groupSort);
837✔
2238
  }
2239
  if (TSDB_CODE_SUCCESS == code) {
837!
2240
    code = nodeListToJson(pJson, jkLastRowScanPhysiPlanTargets, pNode->pTargets);
837✔
2241
  }
2242
  if (TSDB_CODE_SUCCESS == code) {
837!
2243
    code = tjsonAddTArray(pJson, jkLastRowScanPhysiPlanFuncTypes, funcTypeToJson, pNode->pFuncTypes);
837✔
2244
  }
2245
  if (TSDB_CODE_SUCCESS == code) {
837!
2246
    code = tjsonAddBoolToObject(pJson, jkLastRowScanPhysiPlanIgnoreNull, pNode->ignoreNull);
837✔
2247
  }
2248

2249
  return code;
837✔
2250
}
2251

2252
static int32_t jsonToPhysiLastRowScanNode(const SJson* pJson, void* pObj) {
69✔
2253
  SLastRowScanPhysiNode* pNode = (SLastRowScanPhysiNode*)pObj;
69✔
2254

2255
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
69✔
2256
  if (TSDB_CODE_SUCCESS == code) {
69!
2257
    code = jsonToNodeList(pJson, jkLastRowScanPhysiPlanGroupTags, &pNode->pGroupTags);
69✔
2258
  }
2259
  if (TSDB_CODE_SUCCESS == code) {
69!
2260
    code = tjsonGetBoolValue(pJson, jkLastRowScanPhysiPlanGroupSort, &pNode->groupSort);
69✔
2261
  }
2262
  if (TSDB_CODE_SUCCESS == code) {
69!
2263
    code = jsonToNodeList(pJson, jkLastRowScanPhysiPlanTargets, &pNode->pTargets);
69✔
2264
  }
2265
  if (TSDB_CODE_SUCCESS == code) {
69!
2266
    code = tjsonToTArray(pJson, jkLastRowScanPhysiPlanFuncTypes, jsonToFuncType, &pNode->pFuncTypes, sizeof(int32_t));
69✔
2267
  }
2268
  if (TSDB_CODE_SUCCESS == code) {
69!
2269
    code = tjsonGetBoolValue(pJson, jkLastRowScanPhysiPlanIgnoreNull, &pNode->ignoreNull);
69✔
2270
  }
2271

2272
  return code;
69✔
2273
}
2274

2275
static const char* jkTableScanPhysiPlanScanCount = "ScanCount";
2276
static const char* jkTableScanPhysiPlanReverseScanCount = "ReverseScanCount";
2277
static const char* jkTableScanPhysiPlanStartKey = "StartKey";
2278
static const char* jkTableScanPhysiPlanEndKey = "EndKey";
2279
static const char* jkTableScanPhysiPlanTimeRangeExpr = "TimeRangeExpr";
2280
static const char* jkTableScanPhysiPlanRatio = "Ratio";
2281
static const char* jkTableScanPhysiPlanDataRequired = "DataRequired";
2282
static const char* jkTableScanPhysiPlanDynamicScanFuncs = "DynamicScanFuncs";
2283
static const char* jkTableScanPhysiPlanInterval = "Interval";
2284
static const char* jkTableScanPhysiPlanOffset = "Offset";
2285
static const char* jkTableScanPhysiPlanSliding = "Sliding";
2286
static const char* jkTableScanPhysiPlanIntervalUnit = "IntervalUnit";
2287
static const char* jkTableScanPhysiPlanSlidingUnit = "SlidingUnit";
2288
static const char* jkTableScanPhysiPlanTriggerType = "TriggerType";
2289
static const char* jkTableScanPhysiPlanWatermark = "Watermark";
2290
static const char* jkTableScanPhysiPlanIgnoreExpired = "IgnoreExpired";
2291
static const char* jkTableScanPhysiPlanGroupTags = "GroupTags";
2292
static const char* jkTableScanPhysiPlanGroupSort = "GroupSort";
2293
static const char* jkTableScanPhysiPlanTags = "Tags";
2294
static const char* jkTableScanPhysiPlanSubtable = "Subtable";
2295
static const char* jkTableScanPhysiPlanAssignBlockUid = "AssignBlockUid";
2296
static const char* jkTableScanPhysiPlanIgnoreUpdate = "IgnoreUpdate";
2297
static const char* jkTableScanPhysiPlanFilesetDelimited = "FilesetDelimited";
2298
static const char* jkTableScanPhysiPlanNeedCountEmptyTable = "NeedCountEmptyTable";
2299
static const char* jkTableScanPhysiPlanParaTablesSort = "ParaTablesSort";
2300
static const char* jkTableScanPhysiPlanSmallDataTsSort = "SmallDataTsSort";
2301
static const char* jkTableScanPhysiPlanStreamResInfoStbFullName = "StreamResInfoStbFullName";
2302
static const char* jkTableScanPhysiPlanStreamResInfoWstartName = "StreamResInfoWstartName";
2303
static const char* jkTableScanPhysiPlanStreamResInfoWendName = "StreamResInfoWendName";
2304
static const char* jkTableScanPhysiPlanStreamResInfoGroupIdName = "StreamResInfoGroupIdName";
2305
static const char* jkTableScanPhysiPlanStreamResInfoIsWindowFilledName = "StreamResInfoIsWindowFilledName";
2306

2307
static int32_t physiTableScanNodeToJson(const void* pObj, SJson* pJson) {
210,214✔
2308
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
210,214✔
2309

2310
  int32_t code = physiScanNodeToJson(pObj, pJson);
210,214✔
2311
  if (TSDB_CODE_SUCCESS == code) {
210,246!
2312
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanScanCount, pNode->scanSeq[0]);
210,249✔
2313
  }
2314
  if (TSDB_CODE_SUCCESS == code) {
210,243✔
2315
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanReverseScanCount, pNode->scanSeq[1]);
210,238✔
2316
  }
2317
  if (TSDB_CODE_SUCCESS == code) {
210,251✔
2318
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanStartKey, pNode->scanRange.skey);
210,247✔
2319
  }
2320
  if (TSDB_CODE_SUCCESS == code) {
210,249✔
2321
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanEndKey, pNode->scanRange.ekey);
210,246✔
2322
  }
2323
  if (TSDB_CODE_SUCCESS == code) {
210,244!
2324
    code = tjsonAddObject(pJson, jkTableScanPhysiPlanTimeRangeExpr, nodeToJson, pNode->pTimeRange);
210,245✔
2325
  }
2326
  if (TSDB_CODE_SUCCESS == code) {
210,241✔
2327
    code = tjsonAddDoubleToObject(pJson, jkTableScanPhysiPlanRatio, pNode->ratio);
210,231✔
2328
  }
2329
  if (TSDB_CODE_SUCCESS == code) {
210,251✔
2330
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanDataRequired, pNode->dataRequired);
210,245✔
2331
  }
2332
  if (TSDB_CODE_SUCCESS == code) {
210,248✔
2333
    code = nodeListToJson(pJson, jkTableScanPhysiPlanDynamicScanFuncs, pNode->pDynamicScanFuncs);
210,242✔
2334
  }
2335
  if (TSDB_CODE_SUCCESS == code) {
210,247✔
2336
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanInterval, pNode->interval);
210,242✔
2337
  }
2338
  if (TSDB_CODE_SUCCESS == code) {
210,245✔
2339
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanOffset, pNode->offset);
210,232✔
2340
  }
2341
  if (TSDB_CODE_SUCCESS == code) {
210,250✔
2342
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanSliding, pNode->sliding);
210,239✔
2343
  }
2344
  if (TSDB_CODE_SUCCESS == code) {
210,251✔
2345
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanIntervalUnit, pNode->intervalUnit);
210,241✔
2346
  }
2347
  if (TSDB_CODE_SUCCESS == code) {
210,254✔
2348
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanSlidingUnit, pNode->slidingUnit);
210,243✔
2349
  }
2350
  if (TSDB_CODE_SUCCESS == code) {
210,254✔
2351
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanTriggerType, pNode->triggerType);
210,244✔
2352
  }
2353
  if (TSDB_CODE_SUCCESS == code) {
210,254✔
2354
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanWatermark, pNode->watermark);
210,244✔
2355
  }
2356
  if (TSDB_CODE_SUCCESS == code) {
210,254✔
2357
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanIgnoreExpired, pNode->igExpired);
210,245✔
2358
  }
2359
  if (TSDB_CODE_SUCCESS == code) {
210,251✔
2360
    code = nodeListToJson(pJson, jkTableScanPhysiPlanGroupTags, pNode->pGroupTags);
210,242✔
2361
  }
2362
  if (TSDB_CODE_SUCCESS == code) {
210,250✔
2363
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanGroupSort, pNode->groupSort);
210,223✔
2364
  }
2365
  if (TSDB_CODE_SUCCESS == code) {
210,264✔
2366
    code = nodeListToJson(pJson, jkTableScanPhysiPlanTags, pNode->pTags);
210,238✔
2367
  }
2368
  if (TSDB_CODE_SUCCESS == code) {
210,265✔
2369
    code = tjsonAddObject(pJson, jkTableScanPhysiPlanSubtable, nodeToJson, pNode->pSubtable);
210,240✔
2370
  }
2371
  if (TSDB_CODE_SUCCESS == code) {
210,264✔
2372
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanAssignBlockUid, pNode->assignBlockUid);
210,238✔
2373
  }
2374
  if (TSDB_CODE_SUCCESS == code) {
210,268✔
2375
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanIgnoreUpdate, pNode->igCheckUpdate);
210,232✔
2376
  }
2377
  if (TSDB_CODE_SUCCESS == code) {
210,277✔
2378
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanFilesetDelimited, pNode->filesetDelimited);
210,241✔
2379
  }
2380
  if (TSDB_CODE_SUCCESS == code) {
210,283✔
2381
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanNeedCountEmptyTable, pNode->needCountEmptyTable);
210,246✔
2382
  }
2383
  if (TSDB_CODE_SUCCESS == code) {
210,283✔
2384
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanParaTablesSort, pNode->paraTablesSort);
210,247✔
2385
  }
2386
  if (TSDB_CODE_SUCCESS == code) {
210,287✔
2387
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanSmallDataTsSort, pNode->smallDataTsSort);
210,229✔
2388
  }
2389
  return code;
210,243✔
2390
}
2391

2392
static int32_t jsonToPhysiTableScanNode(const SJson* pJson, void* pObj) {
18,537✔
2393
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
18,537✔
2394

2395
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
18,537✔
2396
  if (TSDB_CODE_SUCCESS == code) {
18,536!
2397
    code = tjsonGetUTinyIntValue(pJson, jkTableScanPhysiPlanScanCount, &pNode->scanSeq[0]);
18,536✔
2398
  }
2399
  if (TSDB_CODE_SUCCESS == code) {
18,537!
2400
    code = tjsonGetUTinyIntValue(pJson, jkTableScanPhysiPlanReverseScanCount, &pNode->scanSeq[1]);
18,537✔
2401
  }
2402
  if (TSDB_CODE_SUCCESS == code) {
18,537!
2403
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanStartKey, &pNode->scanRange.skey);
18,537✔
2404
  }
2405
  if (TSDB_CODE_SUCCESS == code) {
18,537!
2406
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanEndKey, &pNode->scanRange.ekey);
18,537✔
2407
  }
2408
  if (TSDB_CODE_SUCCESS == code) {
18,537!
2409
    code = jsonToNodeObject(pJson, jkTableScanPhysiPlanTimeRangeExpr, &pNode->pTimeRange);
18,537✔
2410
  }
2411
  if (TSDB_CODE_SUCCESS == code) {
18,537!
2412
    code = tjsonGetDoubleValue(pJson, jkTableScanPhysiPlanRatio, &pNode->ratio);
18,537✔
2413
  }
2414
  if (TSDB_CODE_SUCCESS == code) {
18,537!
2415
    code = tjsonGetIntValue(pJson, jkTableScanPhysiPlanDataRequired, &pNode->dataRequired);
18,537✔
2416
  }
2417
  if (TSDB_CODE_SUCCESS == code) {
18,537✔
2418
    code = jsonToNodeList(pJson, jkTableScanPhysiPlanDynamicScanFuncs, &pNode->pDynamicScanFuncs);
18,536✔
2419
  }
2420
  if (TSDB_CODE_SUCCESS == code) {
18,538✔
2421
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanInterval, &pNode->interval);
18,537✔
2422
  }
2423
  if (TSDB_CODE_SUCCESS == code) {
18,538✔
2424
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanOffset, &pNode->offset);
18,537✔
2425
  }
2426
  if (TSDB_CODE_SUCCESS == code) {
18,538✔
2427
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanSliding, &pNode->sliding);
18,537✔
2428
  }
2429
  if (TSDB_CODE_SUCCESS == code) {
18,538!
2430
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanIntervalUnit, &pNode->intervalUnit);
18,538✔
2431
  }
2432
  if (TSDB_CODE_SUCCESS == code) {
18,536!
2433
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanSlidingUnit, &pNode->slidingUnit);
18,536✔
2434
  }
2435
  if (TSDB_CODE_SUCCESS == code) {
18,537!
2436
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanTriggerType, &pNode->triggerType);
18,537✔
2437
  }
2438
  if (TSDB_CODE_SUCCESS == code) {
18,538!
2439
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanWatermark, &pNode->watermark);
18,538✔
2440
  }
2441
  if (TSDB_CODE_SUCCESS == code) {
18,537!
2442
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanIgnoreExpired, &pNode->igExpired);
18,537✔
2443
  }
2444
  if (TSDB_CODE_SUCCESS == code) {
18,536!
2445
    code = jsonToNodeList(pJson, jkTableScanPhysiPlanGroupTags, &pNode->pGroupTags);
18,537✔
2446
  }
2447
  if (TSDB_CODE_SUCCESS == code) {
18,536!
2448
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanGroupSort, &pNode->groupSort);
18,537✔
2449
  }
2450
  if (TSDB_CODE_SUCCESS == code) {
18,536!
2451
    code = jsonToNodeList(pJson, jkTableScanPhysiPlanTags, &pNode->pTags);
18,537✔
2452
  }
2453
  if (TSDB_CODE_SUCCESS == code) {
18,536✔
2454
    code = jsonToNodeObject(pJson, jkTableScanPhysiPlanSubtable, &pNode->pSubtable);
18,535✔
2455
  }
2456
  if (TSDB_CODE_SUCCESS == code) {
18,538✔
2457
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanAssignBlockUid, &pNode->assignBlockUid);
18,537✔
2458
  }
2459
  if (TSDB_CODE_SUCCESS == code) {
18,538✔
2460
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanIgnoreUpdate, &pNode->igCheckUpdate);
18,537✔
2461
  }
2462
  if (TSDB_CODE_SUCCESS == code) {
18,538✔
2463
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanFilesetDelimited, &pNode->filesetDelimited);
18,537✔
2464
  }
2465
  if (TSDB_CODE_SUCCESS == code) {
18,538✔
2466
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanNeedCountEmptyTable, &pNode->needCountEmptyTable);
18,536✔
2467
  }
2468
  if (TSDB_CODE_SUCCESS == code) {
18,539✔
2469
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanParaTablesSort, &pNode->paraTablesSort);
18,537✔
2470
  }
2471
  if (TSDB_CODE_SUCCESS == code) {
18,540✔
2472
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanSmallDataTsSort, &pNode->smallDataTsSort);
18,538✔
2473
  }
2474
  return code;
18,537✔
2475
}
2476
static const char* jkVirtualTableScanPhysiPlanGroupTags = "GroupTags";
2477
static const char* jkVirtualTableScanPhysiPlanGroupSort = "GroupSort";
2478
static const char* jkVirtualTableScanPhysiPlanscanAllCols= "scanAllCols";
2479
static const char* jkVirtualTableScanPhysiPlanTargets = "Targets";
2480
static const char* jkVirtualTableScanPhysiPlanTags = "Tags";
2481
static const char* jkVirtualTableScanPhysiPlanSubtable = "Subtable";
2482
static const char* jkVirtualTableScanPhysiPlanIgExpired = "IgExpired";
2483
static const char* jkVirtualTableScanPhysiPlanIgCheckUpdate = "IgCheckUpdate";
2484

2485
static int32_t physiVirtualTableScanNodeToJson(const void* pObj, SJson* pJson) {
2,757✔
2486
  const SVirtualScanPhysiNode* pNode = (const SVirtualScanPhysiNode*)pObj;
2,757✔
2487

2488
  int32_t code = physiScanNodeToJson(pObj, pJson);
2,757✔
2489

2490
  if (TSDB_CODE_SUCCESS == code) {
2,757!
2491
    code = nodeListToJson(pJson, jkVirtualTableScanPhysiPlanGroupTags, pNode->pGroupTags);
2,757✔
2492
  }
2493

2494
  if (TSDB_CODE_SUCCESS == code) {
2,757!
2495
    code = tjsonAddBoolToObject(pJson, jkVirtualTableScanPhysiPlanGroupSort, pNode->groupSort);
2,757✔
2496
  }
2497

2498
  if (TSDB_CODE_SUCCESS == code) {
2,757!
2499
    code = tjsonAddBoolToObject(pJson, jkVirtualTableScanPhysiPlanscanAllCols, pNode->scanAllCols);
2,757✔
2500
  }
2501

2502
  if (TSDB_CODE_SUCCESS == code) {
2,757!
2503
    code = nodeListToJson(pJson, jkVirtualTableScanPhysiPlanTargets, pNode->pTargets);
2,757✔
2504
  }
2505

2506
  if (TSDB_CODE_SUCCESS == code) {
2,757!
2507
    code = nodeListToJson(pJson, jkVirtualTableScanPhysiPlanTags, pNode->pTags);
2,757✔
2508
  }
2509

2510
  if (TSDB_CODE_SUCCESS == code) {
2,757!
2511
    code = tjsonAddObject(pJson, jkVirtualTableScanPhysiPlanSubtable, nodeToJson, pNode->pSubtable);
2,757✔
2512
  }
2513

2514
  if (TSDB_CODE_SUCCESS == code) {
2,757!
2515
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableScanPhysiPlanIgExpired, pNode->igExpired);
2,757✔
2516
  }
2517

2518
  if (TSDB_CODE_SUCCESS == code) {
2,757!
2519
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableScanPhysiPlanIgCheckUpdate, pNode->igCheckUpdate);
2,757✔
2520
  }
2521

2522
  return code;
2,757✔
2523
}
2524

2525
static int32_t jsonToPhysiVirtualTableScanNode(const SJson* pJson, void* pObj) {
36✔
2526
  SVirtualScanPhysiNode* pNode = (SVirtualScanPhysiNode*)pObj;
36✔
2527

2528
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
36✔
2529
  if (TSDB_CODE_SUCCESS == code) {
36!
2530
    code = jsonToNodeList(pJson, jkVirtualTableScanPhysiPlanGroupTags, &pNode->pGroupTags);
36✔
2531
  }
2532
  if (TSDB_CODE_SUCCESS == code) {
36!
2533
    code = tjsonGetBoolValue(pJson, jkVirtualTableScanPhysiPlanGroupSort, &pNode->groupSort);
36✔
2534
  }
2535
  if (TSDB_CODE_SUCCESS == code) {
36!
2536
    code = tjsonGetBoolValue(pJson, jkVirtualTableScanPhysiPlanscanAllCols, &pNode->scanAllCols);
36✔
2537
  }
2538
  if (TSDB_CODE_SUCCESS == code) {
36!
2539
    code = jsonToNodeList(pJson, jkVirtualTableScanPhysiPlanTargets, &pNode->pTargets);
36✔
2540
  }
2541

2542
  if (TSDB_CODE_SUCCESS == code) {
36!
2543
    code = jsonToNodeList(pJson, jkVirtualTableScanPhysiPlanTags, &pNode->pTags);
36✔
2544
  }
2545

2546
  if (TSDB_CODE_SUCCESS == code) {
36!
2547
    code = jsonToNodeObject(pJson, jkVirtualTableScanPhysiPlanSubtable, &pNode->pSubtable);
36✔
2548
  }
2549

2550
  if (TSDB_CODE_SUCCESS == code) {
36!
2551
    code = tjsonGetTinyIntValue(pJson, jkVirtualTableScanPhysiPlanIgExpired, &pNode->igExpired);
36✔
2552
  }
2553

2554
  if (TSDB_CODE_SUCCESS == code) {
36!
2555
    code = tjsonGetTinyIntValue(pJson, jkVirtualTableScanPhysiPlanIgCheckUpdate, &pNode->igCheckUpdate);
36✔
2556
  }
2557

2558
  return code;
36✔
2559
}
2560

2561
static const char* jkSysTableScanPhysiPlanMnodeEpSet = "MnodeEpSet";
2562
static const char* jkSysTableScanPhysiPlanShowRewrite = "ShowRewrite";
2563
static const char* jkSysTableScanPhysiPlanAccountId = "AccountId";
2564
static const char* jkSysTableScanPhysiPlanSysInfo = "SysInfo";
2565

2566
static int32_t physiSysTableScanNodeToJson(const void* pObj, SJson* pJson) {
4,814✔
2567
  const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
4,814✔
2568

2569
  int32_t code = physiScanNodeToJson(pObj, pJson);
4,814✔
2570
  if (TSDB_CODE_SUCCESS == code) {
4,817!
2571
    code = tjsonAddObject(pJson, jkSysTableScanPhysiPlanMnodeEpSet, epSetToJson, &pNode->mgmtEpSet);
4,817✔
2572
  }
2573
  if (TSDB_CODE_SUCCESS == code) {
4,817!
2574
    code = tjsonAddBoolToObject(pJson, jkSysTableScanPhysiPlanShowRewrite, pNode->showRewrite);
4,817✔
2575
  }
2576
  if (TSDB_CODE_SUCCESS == code) {
4,817!
2577
    code = tjsonAddIntegerToObject(pJson, jkSysTableScanPhysiPlanAccountId, pNode->accountId);
4,817✔
2578
  }
2579
  if (TSDB_CODE_SUCCESS == code) {
4,817!
2580
    code = tjsonAddBoolToObject(pJson, jkSysTableScanPhysiPlanSysInfo, pNode->sysInfo);
4,817✔
2581
  }
2582

2583
  return code;
4,816✔
2584
}
2585

2586
static int32_t jsonToPhysiSysTableScanNode(const SJson* pJson, void* pObj) {
417✔
2587
  SSystemTableScanPhysiNode* pNode = (SSystemTableScanPhysiNode*)pObj;
417✔
2588

2589
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
417✔
2590
  if (TSDB_CODE_SUCCESS == code) {
417!
2591
    code = tjsonToObject(pJson, jkSysTableScanPhysiPlanMnodeEpSet, jsonToEpSet, &pNode->mgmtEpSet);
417✔
2592
  }
2593
  if (TSDB_CODE_SUCCESS == code) {
417!
2594
    code = tjsonGetBoolValue(pJson, jkSysTableScanPhysiPlanShowRewrite, &pNode->showRewrite);
417✔
2595
  }
2596
  if (TSDB_CODE_SUCCESS == code) {
417!
2597
    tjsonGetNumberValue(pJson, jkSysTableScanPhysiPlanAccountId, pNode->accountId, code);
417✔
2598
  }
2599
  if (TSDB_CODE_SUCCESS == code) {
417!
2600
    code = tjsonGetBoolValue(pJson, jkSysTableScanPhysiPlanSysInfo, &pNode->sysInfo);
417✔
2601
  }
2602

2603
  return code;
417✔
2604
}
2605

2606
static const char* jkProjectPhysiPlanProjections = "Projections";
2607
static const char* jkProjectPhysiPlanMergeDataBlock = "MergeDataBlock";
2608
static const char* jkProjectPhysiPlanIgnoreGroupId = "IgnoreGroupId";
2609
static const char* jkProjectPhysiPlanInputIgnoreGroup = "InputIgnoreGroup";
2610

2611
static int32_t physiProjectNodeToJson(const void* pObj, SJson* pJson) {
23,128✔
2612
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
23,128✔
2613

2614
  int32_t code = physicPlanNodeToJson(pObj, pJson);
23,128✔
2615
  if (TSDB_CODE_SUCCESS == code) {
23,139!
2616
    code = nodeListToJson(pJson, jkProjectPhysiPlanProjections, pNode->pProjections);
23,139✔
2617
  }
2618
  if (TSDB_CODE_SUCCESS == code) {
23,138!
2619
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
23,138✔
2620
  }
2621
  if (TSDB_CODE_SUCCESS == code) {
23,139!
2622
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanIgnoreGroupId, pNode->ignoreGroupId);
23,139✔
2623
  }
2624
  if (TSDB_CODE_SUCCESS == code) {
23,139!
2625
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanInputIgnoreGroup, pNode->inputIgnoreGroup);
23,139✔
2626
  }
2627
  return code;
23,139✔
2628
}
2629

2630
static int32_t jsonToPhysiProjectNode(const SJson* pJson, void* pObj) {
4,996✔
2631
  SProjectPhysiNode* pNode = (SProjectPhysiNode*)pObj;
4,996✔
2632

2633
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
4,996✔
2634
  if (TSDB_CODE_SUCCESS == code) {
5,000!
2635
    code = jsonToNodeList(pJson, jkProjectPhysiPlanProjections, &pNode->pProjections);
5,000✔
2636
  }
2637
  if (TSDB_CODE_SUCCESS == code) {
5,000!
2638
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
5,000✔
2639
  }
2640
  if (TSDB_CODE_SUCCESS == code) {
5,001!
2641
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanIgnoreGroupId, &pNode->ignoreGroupId);
5,001✔
2642
  }
2643
  if (TSDB_CODE_SUCCESS == code) {
5,001!
2644
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanInputIgnoreGroup, &pNode->inputIgnoreGroup);
5,001✔
2645
  }
2646
  return code;
5,001✔
2647
}
2648

2649
static const char* jkJoinPhysiPlanJoinType = "JoinType";
2650
static const char* jkJoinPhysiPlanSubType = "SubType";
2651
static const char* jkJoinPhysiPlanWinOffset = "WindowOffset";
2652
static const char* jkJoinPhysiPlanJoinLimit = "JoinLimit";
2653
static const char* jkJoinPhysiPlanAsofOp = "AsofOp";
2654
static const char* jkJoinPhysiPlanLeftPrimExpr = "LeftPrimExpr";
2655
static const char* jkJoinPhysiPlanRightPrimExpr = "RightPrimExpr";
2656
static const char* jkJoinPhysiPlanLeftPrimSlotId = "LeftPrimSlotId";
2657
static const char* jkJoinPhysiPlanRightPrimSlotId = "RightPrimSlotId";
2658
static const char* jkJoinPhysiPlanLeftEqCols = "LeftEqCols";
2659
static const char* jkJoinPhysiPlanRightEqCols = "RightEqCols";
2660
static const char* jkJoinPhysiPlanInputTsOrder = "InputTsOrder";
2661
static const char* jkJoinPhysiPlanOnLeftCols = "OnLeftColumns";
2662
static const char* jkJoinPhysiPlanOnRightCols = "OnRightColumns";
2663
static const char* jkJoinPhysiPlanPrimKeyCondition = "PrimKeyCondition";
2664
static const char* jkJoinPhysiPlanOnConditions = "OnConditions";
2665
static const char* jkJoinPhysiPlanTargets = "Targets";
2666
static const char* jkJoinPhysiPlanColOnConditions = "ColumnOnConditions";
2667
static const char* jkJoinPhysiPlanLeftInputRowNum = "LeftInputRowNum";
2668
static const char* jkJoinPhysiPlanRightInputRowNum = "RightInputRowNum";
2669
static const char* jkJoinPhysiPlanLeftInputRowSize = "LeftInputRowSize";
2670
static const char* jkJoinPhysiPlanRightInputRowSize = "RightInputRowSize";
2671
static const char* jkJoinPhysiPlanSeqWinGroup = "SeqWinGroup";
2672
static const char* jkJoinPhysiPlanGroupJoin = "GroupJoin";
2673
static const char* jkJoinPhysiPlanLeftOnCond = "LeftOnCond";
2674
static const char* jkJoinPhysiPlanRightOnCond = "RightOnCond";
2675
static const char* jkJoinPhysiPlanTimeRangeSKey = "TimeRangeSKey";
2676
static const char* jkJoinPhysiPlanTimeRangeEKey = "TimeRangeEKey";
2677
static const char* jkJoinPhysiPlanTimeRangeTarget = "TimeRangeTarget";
2678

2679
static int32_t physiMergeJoinNodeToJson(const void* pObj, SJson* pJson) {
2,815✔
2680
  const SSortMergeJoinPhysiNode* pNode = (const SSortMergeJoinPhysiNode*)pObj;
2,815✔
2681

2682
  int32_t code = physicPlanNodeToJson(pObj, pJson);
2,815✔
2683
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2684
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanJoinType, pNode->joinType);
2,815✔
2685
  }
2686
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2687
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanSubType, pNode->subType);
2,815✔
2688
  }
2689
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2690
    code = tjsonAddObject(pJson, jkJoinPhysiPlanWinOffset, nodeToJson, pNode->pWindowOffset);
2,815✔
2691
  }
2692
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2693
    code = tjsonAddObject(pJson, jkJoinPhysiPlanJoinLimit, nodeToJson, pNode->pJLimit);
2,815✔
2694
  }
2695
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2696
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanAsofOp, pNode->asofOpType);
2,815✔
2697
  }
2698
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2699
    code = tjsonAddObject(pJson, jkJoinPhysiPlanLeftPrimExpr, nodeToJson, pNode->leftPrimExpr);
2,815✔
2700
  }
2701
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2702
    code = tjsonAddObject(pJson, jkJoinPhysiPlanRightPrimExpr, nodeToJson, pNode->rightPrimExpr);
2,815✔
2703
  }
2704
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2705
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId);
2,815✔
2706
  }
2707
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2708
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId);
2,815✔
2709
  }
2710
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2711
    code = nodeListToJson(pJson, jkJoinPhysiPlanLeftEqCols, pNode->pEqLeft);
2,815✔
2712
  }
2713
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2714
    code = nodeListToJson(pJson, jkJoinPhysiPlanRightEqCols, pNode->pEqRight);
2,815✔
2715
  }
2716
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2717
    code = tjsonAddObject(pJson, jkJoinPhysiPlanOnConditions, nodeToJson, pNode->pFullOnCond);
2,815✔
2718
  }
2719
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2720
    code = nodeListToJson(pJson, jkJoinPhysiPlanTargets, pNode->pTargets);
2,815✔
2721
  }
2722
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2723
    code = tjsonAddObject(pJson, jkJoinPhysiPlanColOnConditions, nodeToJson, pNode->pColOnCond);
2,815✔
2724
  }
2725
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2726
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum);
2,815✔
2727
  }
2728
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2729
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize);
2,815✔
2730
  }
2731
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2732
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum);
2,815✔
2733
  }
2734
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2735
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize);
2,815✔
2736
  }
2737
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2738
    code = tjsonAddBoolToObject(pJson, jkJoinPhysiPlanSeqWinGroup, pNode->seqWinGroup);
2,815✔
2739
  }
2740
  if (TSDB_CODE_SUCCESS == code) {
2,815!
2741
    code = tjsonAddBoolToObject(pJson, jkJoinPhysiPlanGroupJoin, pNode->grpJoin);
2,815✔
2742
  }
2743

2744
  return code;
2,815✔
2745
}
2746

2747
static int32_t jsonToPhysiMergeJoinNode(const SJson* pJson, void* pObj) {
72✔
2748
  SSortMergeJoinPhysiNode* pNode = (SSortMergeJoinPhysiNode*)pObj;
72✔
2749

2750
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
72✔
2751
  if (TSDB_CODE_SUCCESS == code) {
72!
2752
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanJoinType, pNode->joinType, code);
72✔
2753
  }
2754
  if (TSDB_CODE_SUCCESS == code) {
72!
2755
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanSubType, pNode->subType, code);
72✔
2756
  }
2757
  if (TSDB_CODE_SUCCESS == code) {
72!
2758
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanWinOffset, &pNode->pWindowOffset);
72✔
2759
  }
2760
  if (TSDB_CODE_SUCCESS == code) {
72!
2761
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanJoinLimit, &pNode->pJLimit);
72✔
2762
  }
2763
  if (TSDB_CODE_SUCCESS == code) {
72!
2764
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanAsofOp, pNode->asofOpType, code);
72✔
2765
  }
2766
  if (TSDB_CODE_SUCCESS == code) {
72!
2767
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanLeftPrimExpr, &pNode->leftPrimExpr);
72✔
2768
  }
2769
  if (TSDB_CODE_SUCCESS == code) {
72!
2770
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanRightPrimExpr, &pNode->rightPrimExpr);
72✔
2771
  }
2772
  if (TSDB_CODE_SUCCESS == code) {
72!
2773
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId, code);
72✔
2774
  }
2775
  if (TSDB_CODE_SUCCESS == code) {
72!
2776
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId, code);
72✔
2777
  }
2778
  if (TSDB_CODE_SUCCESS == code) {
72!
2779
    code = jsonToNodeList(pJson, jkJoinPhysiPlanLeftEqCols, &pNode->pEqLeft);
72✔
2780
  }
2781
  if (TSDB_CODE_SUCCESS == code) {
72!
2782
    code = jsonToNodeList(pJson, jkJoinPhysiPlanRightEqCols, &pNode->pEqRight);
72✔
2783
  }
2784
  if (TSDB_CODE_SUCCESS == code) {
72!
2785
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanOnConditions, &pNode->pFullOnCond);
72✔
2786
  }
2787
  if (TSDB_CODE_SUCCESS == code) {
72!
2788
    code = jsonToNodeList(pJson, jkJoinPhysiPlanTargets, &pNode->pTargets);
72✔
2789
  }
2790
  if (TSDB_CODE_SUCCESS == code) {
72!
2791
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanColOnConditions, &pNode->pColOnCond);
72✔
2792
  }
2793
  if (TSDB_CODE_SUCCESS == code) {
72!
2794
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum, code);
72✔
2795
  }
2796
  if (TSDB_CODE_SUCCESS == code) {
72!
2797
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize, code);
72✔
2798
  }
2799
  if (TSDB_CODE_SUCCESS == code) {
72!
2800
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum, code);
72✔
2801
  }
2802
  if (TSDB_CODE_SUCCESS == code) {
72!
2803
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize, code);
72✔
2804
  }
2805
  if (TSDB_CODE_SUCCESS == code) {
72!
2806
    code = tjsonGetBoolValue(pJson, jkJoinPhysiPlanSeqWinGroup, &pNode->seqWinGroup);
72✔
2807
  }
2808
  if (TSDB_CODE_SUCCESS == code) {
72!
2809
    code = tjsonGetBoolValue(pJson, jkJoinPhysiPlanGroupJoin, &pNode->grpJoin);
72✔
2810
  }
2811

2812
  return code;
72✔
2813
}
2814

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

2818
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
2819
  if (TSDB_CODE_SUCCESS == code) {
×
2820
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanJoinType, pNode->joinType);
×
2821
  }
2822
  if (TSDB_CODE_SUCCESS == code) {
×
2823
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanSubType, pNode->subType);
×
2824
  }
2825
  if (TSDB_CODE_SUCCESS == code) {
×
2826
    code = nodeListToJson(pJson, jkJoinPhysiPlanOnLeftCols, pNode->pOnLeft);
×
2827
  }
2828
  if (TSDB_CODE_SUCCESS == code) {
×
2829
    code = nodeListToJson(pJson, jkJoinPhysiPlanOnRightCols, pNode->pOnRight);
×
2830
  }
2831
  if (TSDB_CODE_SUCCESS == code) {
×
2832
    code = tjsonAddObject(pJson, jkJoinPhysiPlanLeftPrimExpr, nodeToJson, pNode->leftPrimExpr);
×
2833
  }
2834
  if (TSDB_CODE_SUCCESS == code) {
×
2835
    code = tjsonAddObject(pJson, jkJoinPhysiPlanRightPrimExpr, nodeToJson, pNode->rightPrimExpr);
×
2836
  }
2837
  if (TSDB_CODE_SUCCESS == code) {
×
2838
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId);
×
2839
  }
2840
  if (TSDB_CODE_SUCCESS == code) {
×
2841
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId);
×
2842
  }
2843
  if (TSDB_CODE_SUCCESS == code) {
×
2844
    code = tjsonAddObject(pJson, jkJoinPhysiPlanOnConditions, nodeToJson, pNode->pFullOnCond);
×
2845
  }
2846
  if (TSDB_CODE_SUCCESS == code) {
×
2847
    code = nodeListToJson(pJson, jkJoinPhysiPlanTargets, pNode->pTargets);
×
2848
  }
2849
  if (TSDB_CODE_SUCCESS == code) {
×
2850
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum);
×
2851
  }
2852
  if (TSDB_CODE_SUCCESS == code) {
×
2853
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize);
×
2854
  }
2855
  if (TSDB_CODE_SUCCESS == code) {
×
2856
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum);
×
2857
  }
2858
  if (TSDB_CODE_SUCCESS == code) {
×
2859
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize);
×
2860
  }
2861
  if (TSDB_CODE_SUCCESS == code) {
×
2862
    code = tjsonAddObject(pJson, jkJoinPhysiPlanLeftOnCond, nodeToJson, pNode->pLeftOnCond);
×
2863
  }
2864
  if (TSDB_CODE_SUCCESS == code) {
×
2865
    code = tjsonAddObject(pJson, jkJoinPhysiPlanRightOnCond, nodeToJson, pNode->pRightOnCond);
×
2866
  }
2867
  if (TSDB_CODE_SUCCESS == code) {
×
2868
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanTimeRangeTarget, pNode->timeRangeTarget);
×
2869
  }
2870
  if (TSDB_CODE_SUCCESS == code) {
×
2871
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanTimeRangeSKey, pNode->timeRange.skey);
×
2872
  }
2873
  if (TSDB_CODE_SUCCESS == code) {
×
2874
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanTimeRangeEKey, pNode->timeRange.ekey);
×
2875
  }
2876

2877
  return code;
×
2878
}
2879

2880
static int32_t jsonToPhysiHashJoinNode(const SJson* pJson, void* pObj) {
×
2881
  SHashJoinPhysiNode* pNode = (SHashJoinPhysiNode*)pObj;
×
2882

2883
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
2884
  if (TSDB_CODE_SUCCESS == code) {
×
2885
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanJoinType, pNode->joinType, code);
×
2886
  }
2887
  if (TSDB_CODE_SUCCESS == code) {
×
2888
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanSubType, pNode->subType, code);
×
2889
  }
2890
  if (TSDB_CODE_SUCCESS == code) {
×
2891
    code = jsonToNodeList(pJson, jkJoinPhysiPlanOnLeftCols, &pNode->pOnLeft);
×
2892
  }
2893
  if (TSDB_CODE_SUCCESS == code) {
×
2894
    code = jsonToNodeList(pJson, jkJoinPhysiPlanOnRightCols, &pNode->pOnRight);
×
2895
  }
2896
  if (TSDB_CODE_SUCCESS == code) {
×
2897
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanLeftPrimExpr, &pNode->leftPrimExpr);
×
2898
  }
2899
  if (TSDB_CODE_SUCCESS == code) {
×
2900
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanRightPrimExpr, &pNode->rightPrimExpr);
×
2901
  }
2902
  if (TSDB_CODE_SUCCESS == code) {
×
2903
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId, code);
×
2904
  }
2905
  if (TSDB_CODE_SUCCESS == code) {
×
2906
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId, code);
×
2907
  }
2908
  if (TSDB_CODE_SUCCESS == code) {
×
2909
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanOnConditions, &pNode->pFullOnCond);
×
2910
  }
2911
  if (TSDB_CODE_SUCCESS == code) {
×
2912
    code = jsonToNodeList(pJson, jkJoinPhysiPlanTargets, &pNode->pTargets);
×
2913
  }
2914
  if (TSDB_CODE_SUCCESS == code) {
×
2915
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum, code);
×
2916
  }
2917
  if (TSDB_CODE_SUCCESS == code) {
×
2918
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize, code);
×
2919
  }
2920
  if (TSDB_CODE_SUCCESS == code) {
×
2921
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum, code);
×
2922
  }
2923
  if (TSDB_CODE_SUCCESS == code) {
×
2924
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize, code);
×
2925
  }
2926
  if (TSDB_CODE_SUCCESS == code) {
×
2927
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanLeftOnCond, &pNode->pLeftOnCond);
×
2928
  }
2929
  if (TSDB_CODE_SUCCESS == code) {
×
2930
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanRightOnCond, &pNode->pRightOnCond);
×
2931
  }
2932
  if (TSDB_CODE_SUCCESS == code) {
×
2933
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanTimeRangeTarget, pNode->timeRangeTarget, code);
×
2934
  }
2935
  if (TSDB_CODE_SUCCESS == code) {
×
2936
    code = tjsonGetBigIntValue(pJson, jkJoinPhysiPlanTimeRangeSKey, &pNode->timeRange.skey);
×
2937
  }
2938
  if (TSDB_CODE_SUCCESS == code) {
×
2939
    code = tjsonGetBigIntValue(pJson, jkJoinPhysiPlanTimeRangeEKey, &pNode->timeRange.ekey);
×
2940
  }
2941

2942
  return code;
×
2943
}
2944

2945
static const char* jkAggPhysiPlanExprs = "Exprs";
2946
static const char* jkAggPhysiPlanGroupKeys = "GroupKeys";
2947
static const char* jkAggPhysiPlanAggFuncs = "AggFuncs";
2948
static const char* jkAggPhysiPlanMergeDataBlock = "MergeDataBlock";
2949
static const char* jkAggPhysiPlanGroupKeyOptimized = "GroupKeyOptimized";
2950
static const char* jkAggPhysiPlanHasCountLikeFunc = "HasCountFunc";
2951

2952
static int32_t physiAggNodeToJson(const void* pObj, SJson* pJson) {
179,021✔
2953
  const SAggPhysiNode* pNode = (const SAggPhysiNode*)pObj;
179,021✔
2954

2955
  int32_t code = physicPlanNodeToJson(pObj, pJson);
179,021✔
2956
  if (TSDB_CODE_SUCCESS == code) {
179,059!
2957
    code = nodeListToJson(pJson, jkAggPhysiPlanExprs, pNode->pExprs);
179,063✔
2958
  }
2959
  if (TSDB_CODE_SUCCESS == code) {
179,056✔
2960
    code = nodeListToJson(pJson, jkAggPhysiPlanGroupKeys, pNode->pGroupKeys);
179,050✔
2961
  }
2962
  if (TSDB_CODE_SUCCESS == code) {
179,066✔
2963
    code = nodeListToJson(pJson, jkAggPhysiPlanAggFuncs, pNode->pAggFuncs);
179,062✔
2964
  }
2965
  if (TSDB_CODE_SUCCESS == code) {
179,073✔
2966
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
179,070✔
2967
  }
2968
  if (TSDB_CODE_SUCCESS == code) {
179,079✔
2969
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanGroupKeyOptimized, pNode->groupKeyOptimized);
179,077✔
2970
  }
2971
  if (TSDB_CODE_SUCCESS == code) {
179,074✔
2972
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanHasCountLikeFunc, pNode->hasCountLikeFunc);
179,069✔
2973
  }
2974

2975
  return code;
179,075✔
2976
}
2977

2978
static int32_t jsonToPhysiAggNode(const SJson* pJson, void* pObj) {
2,659✔
2979
  SAggPhysiNode* pNode = (SAggPhysiNode*)pObj;
2,659✔
2980

2981
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
2,659✔
2982
  if (TSDB_CODE_SUCCESS == code) {
2,660!
2983
    code = jsonToNodeList(pJson, jkAggPhysiPlanExprs, &pNode->pExprs);
2,660✔
2984
  }
2985
  if (TSDB_CODE_SUCCESS == code) {
2,660!
2986
    code = jsonToNodeList(pJson, jkAggPhysiPlanGroupKeys, &pNode->pGroupKeys);
2,660✔
2987
  }
2988
  if (TSDB_CODE_SUCCESS == code) {
2,660!
2989
    code = jsonToNodeList(pJson, jkAggPhysiPlanAggFuncs, &pNode->pAggFuncs);
2,660✔
2990
  }
2991
  if (TSDB_CODE_SUCCESS == code) {
2,660!
2992
    code = tjsonGetBoolValue(pJson, jkAggPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
2,660✔
2993
  }
2994
  if (TSDB_CODE_SUCCESS == code) {
2,660!
2995
    code = tjsonGetBoolValue(pJson, jkAggPhysiPlanGroupKeyOptimized, &pNode->groupKeyOptimized);
2,660✔
2996
  }
2997
  if (TSDB_CODE_SUCCESS == code) {
2,660!
2998
    code = tjsonGetBoolValue(pJson, jkAggPhysiPlanHasCountLikeFunc, &pNode->hasCountLikeFunc);
2,660✔
2999
  }
3000

3001
  return code;
2,660✔
3002
}
3003

3004
static const char* jkExchangePhysiPlanSrcStartGroupId = "SrcStartGroupId";
3005
static const char* jkExchangePhysiPlanSrcEndGroupId = "SrcEndGroupId";
3006
static const char* jkExchangePhysiPlanSrcEndPoints = "SrcEndPoints";
3007
static const char* jkExchangePhysiPlanSeqRecvData = "SeqRecvData";
3008
static const char* jkExchangePhysiPlanDynTbname = "DynTbname";
3009
static const char* jkExchangePhysiPlanSingleChannel = "SingleChannel";
3010

3011
static int32_t physiExchangeNodeToJson(const void* pObj, SJson* pJson) {
29,277✔
3012
  const SExchangePhysiNode* pNode = (const SExchangePhysiNode*)pObj;
29,277✔
3013

3014
  int32_t code = physicPlanNodeToJson(pObj, pJson);
29,277✔
3015
  if (TSDB_CODE_SUCCESS == code) {
29,277!
3016
    code = tjsonAddIntegerToObject(pJson, jkExchangePhysiPlanSrcStartGroupId, pNode->srcStartGroupId);
29,277✔
3017
  }
3018
  if (TSDB_CODE_SUCCESS == code) {
29,277!
3019
    code = tjsonAddIntegerToObject(pJson, jkExchangePhysiPlanSrcEndGroupId, pNode->srcEndGroupId);
29,277✔
3020
  }
3021
  if (TSDB_CODE_SUCCESS == code) {
29,277!
3022
    code = nodeListToJson(pJson, jkExchangePhysiPlanSrcEndPoints, pNode->pSrcEndPoints);
29,277✔
3023
  }
3024
  if (TSDB_CODE_SUCCESS == code) {
29,277!
3025
    code = tjsonAddBoolToObject(pJson, jkExchangePhysiPlanSeqRecvData, pNode->seqRecvData);
29,277✔
3026
  }
3027
  if (TSDB_CODE_SUCCESS == code) {
29,277!
3028
    code = tjsonAddBoolToObject(pJson, jkExchangePhysiPlanDynTbname, pNode->dynTbname);
29,277✔
3029
  }
3030
  if (TSDB_CODE_SUCCESS == code) {
29,277!
3031
    code = tjsonAddBoolToObject(pJson, jkExchangePhysiPlanSingleChannel, pNode->singleChannel);
29,277✔
3032
  }
3033

3034
  return code;
29,277✔
3035
}
3036

3037
static int32_t jsonToPhysiExchangeNode(const SJson* pJson, void* pObj) {
3,207✔
3038
  SExchangePhysiNode* pNode = (SExchangePhysiNode*)pObj;
3,207✔
3039

3040
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
3,207✔
3041
  if (TSDB_CODE_SUCCESS == code) {
3,208!
3042
    code = tjsonGetIntValue(pJson, jkExchangePhysiPlanSrcStartGroupId, &pNode->srcStartGroupId);
3,208✔
3043
  }
3044
  if (TSDB_CODE_SUCCESS == code) {
3,208!
3045
    code = tjsonGetIntValue(pJson, jkExchangePhysiPlanSrcEndGroupId, &pNode->srcEndGroupId);
3,208✔
3046
  }
3047
  if (TSDB_CODE_SUCCESS == code) {
3,208!
3048
    code = jsonToNodeList(pJson, jkExchangePhysiPlanSrcEndPoints, &pNode->pSrcEndPoints);
3,208✔
3049
  }
3050
  if (TSDB_CODE_SUCCESS == code) {
3,208✔
3051
    code = tjsonGetBoolValue(pJson, jkExchangePhysiPlanSeqRecvData, &pNode->seqRecvData);
3,207✔
3052
  }
3053
  if (TSDB_CODE_SUCCESS == code) {
3,209✔
3054
    code = tjsonGetBoolValue(pJson, jkExchangePhysiPlanDynTbname, &pNode->dynTbname);
3,208✔
3055
  }
3056
  if (TSDB_CODE_SUCCESS == code) {
3,209✔
3057
    code = tjsonGetBoolValue(pJson, jkExchangePhysiPlanSingleChannel, &pNode->singleChannel);
3,208✔
3058
  }
3059

3060
  return code;
3,208✔
3061
}
3062

3063
static const char* jkMergePhysiPlanMergeKeys = "MergeKeys";
3064
static const char* jkMergePhysiPlanTargets = "Targets";
3065
static const char* jkMergePhysiPlanNumOfChannels = "NumOfChannels";
3066
static const char* jkMergePhysiPlanSrcGroupId = "SrcGroupId";
3067
static const char* jkMergePhysiPlanSrcEndGroupId = "SrcEndGroupId";
3068
static const char* jkMergePhysiPlanGroupSort = "GroupSort";
3069
static const char* jkMergePhysiPlanIgnoreGroupID = "IgnoreGroupID";
3070
static const char* jkMergePhysiPlanInputWithGroupId = "InputWithGroupId";
3071
static const char* jkMergePhysiPlanType = "Type";
3072

3073
static int32_t physiMergeNodeToJson(const void* pObj, SJson* pJson) {
2,401✔
3074
  const SMergePhysiNode* pNode = (const SMergePhysiNode*)pObj;
2,401✔
3075

3076
  int32_t code = physicPlanNodeToJson(pObj, pJson);
2,401✔
3077
  if (TSDB_CODE_SUCCESS == code) {
2,401!
3078
    code = nodeListToJson(pJson, jkMergePhysiPlanMergeKeys, pNode->pMergeKeys);
2,401✔
3079
  }
3080
  if (TSDB_CODE_SUCCESS == code) {
2,401!
3081
    code = nodeListToJson(pJson, jkMergePhysiPlanTargets, pNode->pTargets);
2,401✔
3082
  }
3083
  if (TSDB_CODE_SUCCESS == code) {
2,401!
3084
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanNumOfChannels, pNode->numOfChannels);
2,401✔
3085
  }
3086
  if (TSDB_CODE_SUCCESS == code) {
2,401!
3087
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanSrcGroupId, pNode->srcGroupId);
2,401✔
3088
  }
3089
  if (TSDB_CODE_SUCCESS == code) {
2,401!
3090
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanSrcEndGroupId, pNode->srcEndGroupId);
2,401✔
3091
  }
3092
  if (TSDB_CODE_SUCCESS == code) {
2,401!
3093
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanGroupSort, pNode->groupSort);
2,401✔
3094
  }
3095
  if (TSDB_CODE_SUCCESS == code) {
2,401!
3096
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanIgnoreGroupID, pNode->ignoreGroupId);
2,401✔
3097
  }
3098
  if (TSDB_CODE_SUCCESS == code) {
2,401!
3099
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanInputWithGroupId, pNode->inputWithGroupId);
2,401✔
3100
  }
3101
  if (TSDB_CODE_SUCCESS == code) {
2,401!
3102
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanType, pNode->type);
2,401✔
3103
  }
3104

3105
  return code;
2,401✔
3106
}
3107

3108
static int32_t jsonToPhysiMergeNode(const SJson* pJson, void* pObj) {
260✔
3109
  SMergePhysiNode* pNode = (SMergePhysiNode*)pObj;
260✔
3110

3111
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
260✔
3112
  if (TSDB_CODE_SUCCESS == code) {
260!
3113
    code = jsonToNodeList(pJson, jkMergePhysiPlanMergeKeys, &pNode->pMergeKeys);
260✔
3114
  }
3115
  if (TSDB_CODE_SUCCESS == code) {
260!
3116
    code = jsonToNodeList(pJson, jkMergePhysiPlanTargets, &pNode->pTargets);
260✔
3117
  }
3118
  if (TSDB_CODE_SUCCESS == code) {
260!
3119
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanNumOfChannels, &pNode->numOfChannels);
260✔
3120
  }
3121
  if (TSDB_CODE_SUCCESS == code) {
260!
3122
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanSrcGroupId, &pNode->srcGroupId);
260✔
3123
  }
3124
  if (TSDB_CODE_SUCCESS == code) {
260!
3125
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanSrcEndGroupId, &pNode->srcEndGroupId);
260✔
3126
  }
3127
  if (TSDB_CODE_SUCCESS == code) {
260!
3128
    code = tjsonGetBoolValue(pJson, jkMergePhysiPlanGroupSort, &pNode->groupSort);
260✔
3129
  }
3130
  if (TSDB_CODE_SUCCESS == code) {
260!
3131
    code = tjsonGetBoolValue(pJson, jkMergePhysiPlanIgnoreGroupID, &pNode->ignoreGroupId);
260✔
3132
  }
3133
  if (TSDB_CODE_SUCCESS == code) {
260!
3134
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanType, (int32_t*)&pNode->type);
260✔
3135
  }
3136

3137
  return code;
260✔
3138
}
3139

3140
static const char* jkSortPhysiPlanExprs = "Exprs";
3141
static const char* jkSortPhysiPlanSortKeys = "SortKeys";
3142
static const char* jkSortPhysiPlanTargets = "Targets";
3143
static const char* jkSortPhysiPlanCalcGroupIds = "CalcGroupIds";
3144
static const char* jkSortPhysiPlanExcludePKCol = "ExcludePKCol";
3145

3146
static int32_t physiSortNodeToJson(const void* pObj, SJson* pJson) {
3,338✔
3147
  const SSortPhysiNode* pNode = (const SSortPhysiNode*)pObj;
3,338✔
3148

3149
  int32_t code = physicPlanNodeToJson(pObj, pJson);
3,338✔
3150
  if (TSDB_CODE_SUCCESS == code) {
3,338!
3151
    code = nodeListToJson(pJson, jkSortPhysiPlanExprs, pNode->pExprs);
3,338✔
3152
  }
3153
  if (TSDB_CODE_SUCCESS == code) {
3,338!
3154
    code = nodeListToJson(pJson, jkSortPhysiPlanSortKeys, pNode->pSortKeys);
3,338✔
3155
  }
3156
  if (TSDB_CODE_SUCCESS == code) {
3,338!
3157
    code = nodeListToJson(pJson, jkSortPhysiPlanTargets, pNode->pTargets);
3,338✔
3158
  }
3159
  if (TSDB_CODE_SUCCESS == code) {
3,338!
3160
    code = tjsonAddBoolToObject(pJson, jkSortPhysiPlanCalcGroupIds, pNode->calcGroupId);
3,338✔
3161
  }
3162
  if (TSDB_CODE_SUCCESS == code) {
3,338!
3163
    code = tjsonAddBoolToObject(pJson, jkSortPhysiPlanExcludePKCol, pNode->excludePkCol);
3,338✔
3164
  }
3165

3166
  return code;
3,338✔
3167
}
3168

3169
static int32_t jsonToPhysiSortNode(const SJson* pJson, void* pObj) {
304✔
3170
  SSortPhysiNode* pNode = (SSortPhysiNode*)pObj;
304✔
3171

3172
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
304✔
3173
  if (TSDB_CODE_SUCCESS == code) {
304!
3174
    code = jsonToNodeList(pJson, jkSortPhysiPlanExprs, &pNode->pExprs);
304✔
3175
  }
3176
  if (TSDB_CODE_SUCCESS == code) {
304!
3177
    code = jsonToNodeList(pJson, jkSortPhysiPlanSortKeys, &pNode->pSortKeys);
304✔
3178
  }
3179
  if (TSDB_CODE_SUCCESS == code) {
304!
3180
    code = jsonToNodeList(pJson, jkSortPhysiPlanTargets, &pNode->pTargets);
304✔
3181
  }
3182
  if (TSDB_CODE_SUCCESS == code) {
304!
3183
    code = tjsonGetBoolValue(pJson, jkSortPhysiPlanCalcGroupIds, &pNode->calcGroupId);
304✔
3184
  }
3185
  if (TSDB_CODE_SUCCESS == code) {
304!
3186
    code = tjsonGetBoolValue(pJson, jkSortPhysiPlanExcludePKCol, &pNode->excludePkCol);
304✔
3187
  }
3188

3189
  return code;
304✔
3190
}
3191

3192
static const char* jkWindowPhysiPlanExprs = "Exprs";
3193
static const char* jkWindowPhysiPlanFuncs = "Funcs";
3194
static const char* jkWindowPhysiPlanProjs = "Projs";
3195
static const char* jkWindowPhysiPlanTsPk = "TsPk";
3196
static const char* jkWindowPhysiPlanTsEnd = "TsEnd";
3197
static const char* jkWindowPhysiPlanTriggerType = "TriggerType";
3198
static const char* jkWindowPhysiPlanWatermark = "Watermark";
3199
static const char* jkWindowPhysiPlanDeleteMark = "DeleteMark";
3200
static const char* jkWindowPhysiPlanIgnoreExpired = "IgnoreExpired";
3201
static const char* jkWindowPhysiPlanInputTsOrder = "InputTsOrder";
3202
static const char* jkWindowPhysiPlanMergeDataBlock = "MergeDataBlock";
3203
static const char* jkWindowPhysiPlanDestHasPrimaryKey = "DestHasPrimaryKey";
3204
static const char* jkWindowPhysiPlanRecalculateInterval = "RecalculateInterval";
3205
static const char* jkWindowPhysiPlanIndefRowsFunc = "IndefRowsFunc";
3206

3207
static int32_t physiWindowNodeToJson(const void* pObj, SJson* pJson) {
5,465✔
3208
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
5,465✔
3209

3210
  int32_t code = physicPlanNodeToJson(pObj, pJson);
5,465✔
3211
  if (TSDB_CODE_SUCCESS == code) {
5,465!
3212
    code = nodeListToJson(pJson, jkWindowPhysiPlanExprs, pNode->pExprs);
5,465✔
3213
  }
3214
  if (TSDB_CODE_SUCCESS == code) {
5,465!
3215
    code = nodeListToJson(pJson, jkWindowPhysiPlanFuncs, pNode->pFuncs);
5,465✔
3216
  }
3217
  if (TSDB_CODE_SUCCESS == code) {
5,465!
3218
    code = nodeListToJson(pJson, jkWindowPhysiPlanProjs, pNode->pProjs);
5,465✔
3219
  }
3220
  if (TSDB_CODE_SUCCESS == code) {
5,465!
3221
    code = tjsonAddObject(pJson, jkWindowPhysiPlanTsPk, nodeToJson, pNode->pTspk);
5,465✔
3222
  }
3223
  if (TSDB_CODE_SUCCESS == code) {
5,465!
3224
    code = tjsonAddObject(pJson, jkWindowPhysiPlanTsEnd, nodeToJson, pNode->pTsEnd);
5,465✔
3225
  }
3226
  if (TSDB_CODE_SUCCESS == code) {
5,465!
3227
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanTriggerType, pNode->triggerType);
5,465✔
3228
  }
3229
  if (TSDB_CODE_SUCCESS == code) {
5,465!
3230
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanWatermark, pNode->watermark);
5,465✔
3231
  }
3232
  if (TSDB_CODE_SUCCESS == code) {
5,465!
3233
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanDeleteMark, pNode->deleteMark);
5,465✔
3234
  }
3235
  if (TSDB_CODE_SUCCESS == code) {
5,465!
3236
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanIgnoreExpired, pNode->igExpired);
5,465✔
3237
  }
3238
  if (TSDB_CODE_SUCCESS == code) {
5,465!
3239
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanIndefRowsFunc, pNode->indefRowsFunc);
5,465✔
3240
  }
3241
  if (TSDB_CODE_SUCCESS == code) {
5,465!
3242
    code = tjsonAddBoolToObject(pJson, jkWindowPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
5,465✔
3243
  }
3244
  if (TSDB_CODE_SUCCESS == code) {
5,465!
3245
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanRecalculateInterval, pNode->recalculateInterval);
5,465✔
3246
  }
3247

3248
  return code;
5,465✔
3249
}
3250

3251
static int32_t jsonToPhysiWindowNode(const SJson* pJson, void* pObj) {
988✔
3252
  SWindowPhysiNode* pNode = (SWindowPhysiNode*)pObj;
988✔
3253

3254
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
988✔
3255
  if (TSDB_CODE_SUCCESS == code) {
988!
3256
    code = jsonToNodeList(pJson, jkWindowPhysiPlanExprs, &pNode->pExprs);
988✔
3257
  }
3258
  if (TSDB_CODE_SUCCESS == code) {
988!
3259
    code = jsonToNodeList(pJson, jkWindowPhysiPlanFuncs, &pNode->pFuncs);
988✔
3260
  }
3261
  if (TSDB_CODE_SUCCESS == code) {
988!
3262
    code = jsonToNodeList(pJson, jkWindowPhysiPlanProjs, &pNode->pProjs);
988✔
3263
  }
3264
  if (TSDB_CODE_SUCCESS == code) {
988!
3265
    code = jsonToNodeObject(pJson, jkWindowPhysiPlanTsPk, (SNode**)&pNode->pTspk);
988✔
3266
  }
3267
  if (TSDB_CODE_SUCCESS == code) {
988!
3268
    code = jsonToNodeObject(pJson, jkWindowPhysiPlanTsEnd, (SNode**)&pNode->pTsEnd);
988✔
3269
  }
3270
  if (TSDB_CODE_SUCCESS == code) {
988!
3271
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanTriggerType, &pNode->triggerType);
988✔
3272
  }
3273
  if (TSDB_CODE_SUCCESS == code) {
988!
3274
    code = tjsonGetBigIntValue(pJson, jkWindowPhysiPlanWatermark, &pNode->watermark);
988✔
3275
  }
3276
  if (TSDB_CODE_SUCCESS == code) {
988!
3277
    code = tjsonGetBigIntValue(pJson, jkWindowPhysiPlanDeleteMark, &pNode->deleteMark);
988✔
3278
  }
3279
  if (TSDB_CODE_SUCCESS == code) {
988!
3280
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanIgnoreExpired, &pNode->igExpired);
988✔
3281
  }
3282
  if (TSDB_CODE_SUCCESS == code) {
988!
3283
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanIndefRowsFunc, &pNode->indefRowsFunc);
988✔
3284
  }
3285
  if (TSDB_CODE_SUCCESS == code) {
988!
3286
    code = tjsonGetBoolValue(pJson, jkWindowPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
988✔
3287
  }
3288
  if (TSDB_CODE_SUCCESS == code) {
988!
3289
    code = tjsonGetBigIntValue(pJson, jkWindowPhysiPlanRecalculateInterval, &pNode->recalculateInterval);
988✔
3290
  }
3291

3292
  return code;
988✔
3293
}
3294

3295
static const char* jkIntervalPhysiPlanInterval = "Interval";
3296
static const char* jkIntervalPhysiPlanOffset = "Offset";
3297
static const char* jkIntervalPhysiPlanSliding = "Sliding";
3298
static const char* jkIntervalPhysiPlanIntervalUnit = "intervalUnit";
3299
static const char* jkIntervalPhysiPlanSlidingUnit = "slidingUnit";
3300
static const char* jkIntervalPhysiPlanStartTime = "StartTime";
3301
static const char* jkIntervalPhysiPlanEndTime = "EndTime";
3302

3303
static int32_t physiIntervalNodeToJson(const void* pObj, SJson* pJson) {
4,486✔
3304
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
4,486✔
3305

3306
  int32_t code = physiWindowNodeToJson(pObj, pJson);
4,486✔
3307
  if (TSDB_CODE_SUCCESS == code) {
4,486!
3308
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanInterval, pNode->interval);
4,486✔
3309
  }
3310
  if (TSDB_CODE_SUCCESS == code) {
4,486!
3311
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanOffset, pNode->offset);
4,486✔
3312
  }
3313
  if (TSDB_CODE_SUCCESS == code) {
4,486!
3314
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanSliding, pNode->sliding);
4,486✔
3315
  }
3316
  if (TSDB_CODE_SUCCESS == code) {
4,486!
3317
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanIntervalUnit, pNode->intervalUnit);
4,486✔
3318
  }
3319
  if (TSDB_CODE_SUCCESS == code) {
4,486!
3320
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanSlidingUnit, pNode->slidingUnit);
4,486✔
3321
  }
3322
  if (TSDB_CODE_SUCCESS == code) {
4,486!
3323
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanStartTime, pNode->timeRange.skey);
4,486✔
3324
  }
3325
  if (TSDB_CODE_SUCCESS == code) {
4,486!
3326
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanEndTime, pNode->timeRange.ekey);
4,486✔
3327
  }
3328

3329
  return code;
4,486✔
3330
}
3331

3332
static int32_t jsonToPhysiIntervalNode(const SJson* pJson, void* pObj) {
318✔
3333
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
318✔
3334

3335
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
318✔
3336
  if (TSDB_CODE_SUCCESS == code) {
318!
3337
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanInterval, &pNode->interval);
318✔
3338
  }
3339
  if (TSDB_CODE_SUCCESS == code) {
318!
3340
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanOffset, &pNode->offset);
318✔
3341
  }
3342
  if (TSDB_CODE_SUCCESS == code) {
318!
3343
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanSliding, &pNode->sliding);
318✔
3344
  }
3345
  if (TSDB_CODE_SUCCESS == code) {
318!
3346
    code = tjsonGetTinyIntValue(pJson, jkIntervalPhysiPlanIntervalUnit, &pNode->intervalUnit);
318✔
3347
  }
3348
  if (TSDB_CODE_SUCCESS == code) {
318!
3349
    code = tjsonGetTinyIntValue(pJson, jkIntervalPhysiPlanSlidingUnit, &pNode->slidingUnit);
318✔
3350
  }
3351
  if (TSDB_CODE_SUCCESS == code) {
318!
3352
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanStartTime, &pNode->timeRange.skey);
318✔
3353
  }
3354
  if (TSDB_CODE_SUCCESS == code) {
318!
3355
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanEndTime, &pNode->timeRange.ekey);
318✔
3356
  }
3357

3358
  return code;
318✔
3359
}
3360

3361
static const char* jkExternalPhysiPlanStartTime = "StartTime";
3362
static const char* jkExternalPhysiPlanEndTime = "EndTime";
3363

3364
static int32_t physiExternalNodeToJson(const void* pObj, SJson* pJson) {
606✔
3365
  const SExternalWindowPhysiNode* pNode = (const SExternalWindowPhysiNode*)pObj;
606✔
3366

3367
  int32_t code = physiWindowNodeToJson(pObj, pJson);
606✔
3368
  if (TSDB_CODE_SUCCESS == code) {
606!
3369
    code = tjsonAddIntegerToObject(pJson, jkExternalPhysiPlanStartTime, pNode->timeRange.skey);
606✔
3370
  }
3371
  if (TSDB_CODE_SUCCESS == code) {
606!
3372
    code = tjsonAddIntegerToObject(pJson, jkExternalPhysiPlanEndTime, pNode->timeRange.ekey);
606✔
3373
  }
3374

3375
  return code;
606✔
3376
}
3377

3378
static int32_t jsonToPhysiExternalNode(const SJson* pJson, void* pObj) {
586✔
3379
  SExternalWindowPhysiNode* pNode = (SExternalWindowPhysiNode*)pObj;
586✔
3380

3381
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
586✔
3382
  if (TSDB_CODE_SUCCESS == code) {
586!
3383
    code = tjsonGetBigIntValue(pJson, jkExternalPhysiPlanStartTime, &pNode->timeRange.skey);
586✔
3384
  }
3385
  if (TSDB_CODE_SUCCESS == code) {
586!
3386
    code = tjsonGetBigIntValue(pJson, jkExternalPhysiPlanEndTime, &pNode->timeRange.ekey);
586✔
3387
  }
3388

3389
  return code;
586✔
3390
}
3391

3392
static const char* jkFillPhysiPlanMode = "Mode";
3393
static const char* jkFillPhysiPlanFillExprs = "FillExprs";
3394
static const char* jkFillPhysiPlanNotFillExprs = "NotFillExprs";
3395
static const char* jkFillPhysiPlanWStartTs = "WStartTs";
3396
static const char* jkFillPhysiPlanValues = "Values";
3397
static const char* jkFillPhysiPlanStartTime = "StartTime";
3398
static const char* jkFillPhysiPlanEndTime = "EndTime";
3399
static const char* jkFillPhysiPlanFillNullExprs = "FillNullExprs";
3400
static const char* jkFillPhysiPlanFillTimeRangeExpr = "TimeRangeExpr";
3401

3402
static int32_t physiFillNodeToJson(const void* pObj, SJson* pJson) {
143✔
3403
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
143✔
3404

3405
  int32_t code = physicPlanNodeToJson(pObj, pJson);
143✔
3406
  if (TSDB_CODE_SUCCESS == code) {
143!
3407
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanMode, pNode->mode);
143✔
3408
  }
3409
  if (TSDB_CODE_SUCCESS == code) {
143!
3410
    code = nodeListToJson(pJson, jkFillPhysiPlanFillExprs, pNode->pFillExprs);
143✔
3411
  }
3412
  if (TSDB_CODE_SUCCESS == code) {
143!
3413
    code = nodeListToJson(pJson, jkFillPhysiPlanNotFillExprs, pNode->pNotFillExprs);
143✔
3414
  }
3415
  if (TSDB_CODE_SUCCESS == code) {
143!
3416
    code = tjsonAddObject(pJson, jkFillPhysiPlanWStartTs, nodeToJson, pNode->pWStartTs);
143✔
3417
  }
3418
  if (TSDB_CODE_SUCCESS == code) {
143!
3419
    code = tjsonAddObject(pJson, jkFillPhysiPlanValues, nodeToJson, pNode->pValues);
143✔
3420
  }
3421
  if (TSDB_CODE_SUCCESS == code) {
143!
3422
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanStartTime, pNode->timeRange.skey);
143✔
3423
  }
3424
  if (TSDB_CODE_SUCCESS == code) {
143!
3425
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanEndTime, pNode->timeRange.ekey);
143✔
3426
  }
3427
  if (TSDB_CODE_SUCCESS == code) {
143!
3428
    code = nodeListToJson(pJson, jkFillPhysiPlanFillNullExprs, pNode->pFillNullExprs);
143✔
3429
  }
3430
  if (TSDB_CODE_SUCCESS == code) {
143!
3431
    code = tjsonAddObject(pJson, jkFillPhysiPlanFillTimeRangeExpr, nodeToJson, pNode->pTimeRange);
143✔
3432
  }
3433

3434
  return code;
143✔
3435
}
3436

3437
static int32_t jsonToPhysiFillNode(const SJson* pJson, void* pObj) {
72✔
3438
  SFillPhysiNode* pNode = (SFillPhysiNode*)pObj;
72✔
3439

3440
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
72✔
3441
  if (TSDB_CODE_SUCCESS == code) {
72!
3442
    tjsonGetNumberValue(pJson, jkFillPhysiPlanMode, pNode->mode, code);
72✔
3443
  }
3444
  if (TSDB_CODE_SUCCESS == code) {
72!
3445
    code = jsonToNodeList(pJson, jkFillPhysiPlanFillExprs, &pNode->pFillExprs);
72✔
3446
  }
3447
  if (TSDB_CODE_SUCCESS == code) {
72!
3448
    code = jsonToNodeList(pJson, jkFillPhysiPlanNotFillExprs, &pNode->pNotFillExprs);
72✔
3449
  }
3450
  if (TSDB_CODE_SUCCESS == code) {
72!
3451
    code = jsonToNodeObject(pJson, jkFillPhysiPlanWStartTs, &pNode->pWStartTs);
72✔
3452
  }
3453
  if (TSDB_CODE_SUCCESS == code) {
72!
3454
    code = jsonToNodeObject(pJson, jkFillPhysiPlanValues, &pNode->pValues);
72✔
3455
  }
3456
  if (TSDB_CODE_SUCCESS == code) {
72!
3457
    code = tjsonGetBigIntValue(pJson, jkFillPhysiPlanStartTime, &pNode->timeRange.skey);
72✔
3458
  }
3459
  if (TSDB_CODE_SUCCESS == code) {
72!
3460
    code = tjsonGetBigIntValue(pJson, jkFillPhysiPlanEndTime, &pNode->timeRange.ekey);
72✔
3461
  }
3462
  if (TSDB_CODE_SUCCESS == code) {
72!
3463
    code = jsonToNodeList(pJson, jkFillPhysiPlanFillNullExprs, &pNode->pFillNullExprs);
72✔
3464
  }
3465
  if (TSDB_CODE_SUCCESS == code) {
72!
3466
    code = jsonToNodeObject(pJson, jkFillPhysiPlanFillTimeRangeExpr, &pNode->pTimeRange);
72✔
3467
  }
3468

3469
  return code;
72✔
3470
}
3471

3472
static const char* jkSessionWindowPhysiPlanGap = "Gap";
3473

3474
static int32_t physiSessionWindowNodeToJson(const void* pObj, SJson* pJson) {
113✔
3475
  const SSessionWinodwPhysiNode* pNode = (const SSessionWinodwPhysiNode*)pObj;
113✔
3476

3477
  int32_t code = physiWindowNodeToJson(pObj, pJson);
113✔
3478
  if (TSDB_CODE_SUCCESS == code) {
113!
3479
    code = tjsonAddIntegerToObject(pJson, jkSessionWindowPhysiPlanGap, pNode->gap);
113✔
3480
  }
3481

3482
  return code;
113✔
3483
}
3484

3485
static int32_t jsonToPhysiSessionWindowNode(const SJson* pJson, void* pObj) {
36✔
3486
  SSessionWinodwPhysiNode* pNode = (SSessionWinodwPhysiNode*)pObj;
36✔
3487

3488
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
36✔
3489
  if (TSDB_CODE_SUCCESS == code) {
36!
3490
    tjsonGetNumberValue(pJson, jkSessionWindowPhysiPlanGap, pNode->gap, code);
36✔
3491
  }
3492

3493
  return code;
36✔
3494
}
3495

3496
static const char* jkStateWindowPhysiPlanStateKey = "StateKey";
3497
static const char* jkStateWindowPhysiPlanTrueForLimit = "TrueForLimit";
3498

3499
static int32_t physiStateWindowNodeToJson(const void* pObj, SJson* pJson) {
102✔
3500
  const SStateWinodwPhysiNode* pNode = (const SStateWinodwPhysiNode*)pObj;
102✔
3501

3502
  int32_t code = physiWindowNodeToJson(pObj, pJson);
102✔
3503
  if (TSDB_CODE_SUCCESS == code) {
102!
3504
    code = tjsonAddObject(pJson, jkStateWindowPhysiPlanStateKey, nodeToJson, pNode->pStateKey);
102✔
3505
  }
3506
  if (TSDB_CODE_SUCCESS == code) {
102!
3507
    code = tjsonAddIntegerToObject(pJson, jkStateWindowPhysiPlanTrueForLimit, pNode->trueForLimit);
102✔
3508
  }
3509

3510
  return code;
102✔
3511
}
3512

3513
static int32_t jsonToPhysiStateWindowNode(const SJson* pJson, void* pObj) {
36✔
3514
  SStateWinodwPhysiNode* pNode = (SStateWinodwPhysiNode*)pObj;
36✔
3515

3516
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
36✔
3517
  if (TSDB_CODE_SUCCESS == code) {
36!
3518
    code = jsonToNodeObject(pJson, jkStateWindowPhysiPlanStateKey, &pNode->pStateKey);
36✔
3519
  }
3520
  if (TSDB_CODE_SUCCESS == code) {
36!
3521
    code = tjsonGetBigIntValue(pJson, jkStateWindowPhysiPlanTrueForLimit, &pNode->trueForLimit);
36✔
3522
  }
3523

3524
  return code;
36✔
3525
}
3526

3527
static const char* jkEventWindowPhysiPlanStartCond = "StartCond";
3528
static const char* jkEventWindowPhysiPlanEndCond = "EndCond";
3529
static const char* jkEventWindowPhysiPlanTrueForLimit = "TrueForLimit";
3530

3531
static int32_t physiEventWindowNodeToJson(const void* pObj, SJson* pJson) {
86✔
3532
  const SEventWinodwPhysiNode* pNode = (const SEventWinodwPhysiNode*)pObj;
86✔
3533

3534
  int32_t code = physiWindowNodeToJson(pObj, pJson);
86✔
3535
  if (TSDB_CODE_SUCCESS == code) {
86!
3536
    code = tjsonAddObject(pJson, jkEventWindowPhysiPlanStartCond, nodeToJson, pNode->pStartCond);
86✔
3537
  }
3538
  if (TSDB_CODE_SUCCESS == code) {
86!
3539
    code = tjsonAddObject(pJson, jkEventWindowPhysiPlanEndCond, nodeToJson, pNode->pEndCond);
86✔
3540
  }
3541
  if (TSDB_CODE_SUCCESS == code) {
86!
3542
    code = tjsonAddIntegerToObject(pJson, jkEventWindowPhysiPlanTrueForLimit, pNode->trueForLimit);
86✔
3543
  }
3544

3545
  return code;
86✔
3546
}
3547

3548
static int32_t jsonToPhysiEventWindowNode(const SJson* pJson, void* pObj) {
12✔
3549
  SEventWinodwPhysiNode* pNode = (SEventWinodwPhysiNode*)pObj;
12✔
3550

3551
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
12✔
3552
  if (TSDB_CODE_SUCCESS == code) {
12!
3553
    code = jsonToNodeObject(pJson, jkEventWindowPhysiPlanStartCond, &pNode->pStartCond);
12✔
3554
  }
3555
  if (TSDB_CODE_SUCCESS == code) {
12!
3556
    code = jsonToNodeObject(pJson, jkEventWindowPhysiPlanEndCond, &pNode->pEndCond);
12✔
3557
  }
3558
  if (TSDB_CODE_SUCCESS == code) {
12!
3559
    code = tjsonGetBigIntValue(pJson, jkEventWindowPhysiPlanTrueForLimit, &pNode->trueForLimit);
12✔
3560
  }
3561

3562
  return code;
12✔
3563
}
3564

3565
static const char* jkCountWindowPhysiPlanWindowCount = "WindowCount";
3566
static const char* jkCountWindowPhysiPlanWindowSliding = "WindowSliding";
3567

3568
static int32_t physiCountWindowNodeToJson(const void* pObj, SJson* pJson) {
72✔
3569
  const SCountWindowPhysiNode* pNode = (const SCountWindowPhysiNode*)pObj;
72✔
3570

3571
  int32_t code = physiWindowNodeToJson(pObj, pJson);
72✔
3572
  if (TSDB_CODE_SUCCESS == code) {
72!
3573
    code = tjsonAddIntegerToObject(pJson, jkCountWindowPhysiPlanWindowCount, pNode->windowCount);
72✔
3574
  }
3575
  if (TSDB_CODE_SUCCESS == code) {
72!
3576
    code = tjsonAddIntegerToObject(pJson, jkCountWindowPhysiPlanWindowSliding, pNode->windowSliding);
72✔
3577
  }
3578
  return code;
72✔
3579
}
3580

3581
static int32_t jsonToPhysiCountWindowNode(const SJson* pJson, void* pObj) {
×
3582
  SCountWindowPhysiNode* pNode = (SCountWindowPhysiNode*)pObj;
×
3583

3584
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
×
3585
  if (TSDB_CODE_SUCCESS == code) {
×
3586
    code = tjsonGetBigIntValue(pJson, jkCountWindowPhysiPlanWindowCount, &pNode->windowCount);
×
3587
  }
3588
  if (TSDB_CODE_SUCCESS == code) {
×
3589
    code = tjsonGetBigIntValue(pJson, jkCountWindowPhysiPlanWindowSliding, &pNode->windowSliding);
×
3590
  }
3591

3592
  return code;
×
3593
}
3594

3595
static const char* jkAnomalyWindowPhysiPlanAnomalyKey = "AnomalyKey";
3596
static const char* jkAnomalyWindowPhysiPlanAnomalyOption = "AnomalyOpt";
3597

3598
static int32_t physiAnomalyWindowNodeToJson(const void* pObj, SJson* pJson) {
×
3599
  const SAnomalyWindowPhysiNode* pNode = (const SAnomalyWindowPhysiNode*)pObj;
×
3600

3601
  int32_t code = physiWindowNodeToJson(pObj, pJson);
×
3602
  if (TSDB_CODE_SUCCESS == code) {
×
3603
    code = tjsonAddObject(pJson, jkAnomalyWindowPhysiPlanAnomalyKey, nodeToJson, pNode->pAnomalyKey);
×
3604
  }
3605
  if (TSDB_CODE_SUCCESS == code) {
×
3606
    code = tjsonAddStringToObject(pJson, jkAnomalyWindowPhysiPlanAnomalyOption, pNode->anomalyOpt);
×
3607
  }
3608
  return code;
×
3609
}
3610

3611
static int32_t jsonToPhysiAnomalyWindowNode(const SJson* pJson, void* pObj) {
×
3612
  SAnomalyWindowPhysiNode* pNode = (SAnomalyWindowPhysiNode*)pObj;
×
3613

3614
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
×
3615
  if (TSDB_CODE_SUCCESS == code) {
×
3616
    code = jsonToNodeObject(pJson, jkAnomalyWindowPhysiPlanAnomalyKey, &pNode->pAnomalyKey);
×
3617
  }
3618
  if (TSDB_CODE_SUCCESS == code) {
×
3619
    code = tjsonGetStringValue(pJson, jkAnomalyWindowPhysiPlanAnomalyOption, pNode->anomalyOpt);
×
3620
  }
3621

3622
  return code;
×
3623
}
3624

3625
static const char* jkPartitionPhysiPlanExprs = "Exprs";
3626
static const char* jkPartitionPhysiPlanPartitionKeys = "PartitionKeys";
3627
static const char* jkPartitionPhysiPlanTargets = "Targets";
3628
static const char* jkPartitionPhysiPlanNeedBlockOutputTsOrder = "NeedBlockOutputTsOrder";
3629
static const char* jkPartitionPhysiPlanTsSlotId = "tsSlotId";
3630

3631
static int32_t physiPartitionNodeToJson(const void* pObj, SJson* pJson) {
270✔
3632
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
270✔
3633

3634
  int32_t code = physicPlanNodeToJson(pObj, pJson);
270✔
3635
  if (TSDB_CODE_SUCCESS == code) {
270!
3636
    code = nodeListToJson(pJson, jkPartitionPhysiPlanExprs, pNode->pExprs);
270✔
3637
  }
3638
  if (TSDB_CODE_SUCCESS == code) {
270!
3639
    code = nodeListToJson(pJson, jkPartitionPhysiPlanPartitionKeys, pNode->pPartitionKeys);
270✔
3640
  }
3641
  if (TSDB_CODE_SUCCESS == code) {
270!
3642
    code = nodeListToJson(pJson, jkPartitionPhysiPlanTargets, pNode->pTargets);
270✔
3643
  }
3644
  if (TSDB_CODE_SUCCESS == code) {
270!
3645
    code = tjsonAddBoolToObject(pJson, jkPartitionPhysiPlanNeedBlockOutputTsOrder, pNode->needBlockOutputTsOrder);
270✔
3646
  }
3647
  if (TSDB_CODE_SUCCESS == code) {
270!
3648
    code = tjsonAddIntegerToObject(pJson, jkPartitionPhysiPlanTsSlotId, pNode->tsSlotId);
270✔
3649
  }
3650

3651
  return code;
270✔
3652
}
3653

3654
static int32_t jsonToPhysiPartitionNode(const SJson* pJson, void* pObj) {
126✔
3655
  SPartitionPhysiNode* pNode = (SPartitionPhysiNode*)pObj;
126✔
3656

3657
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
126✔
3658
  if (TSDB_CODE_SUCCESS == code) {
126!
3659
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanExprs, &pNode->pExprs);
126✔
3660
  }
3661
  if (TSDB_CODE_SUCCESS == code) {
126!
3662
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanPartitionKeys, &pNode->pPartitionKeys);
126✔
3663
  }
3664
  if (TSDB_CODE_SUCCESS == code) {
126!
3665
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanTargets, &pNode->pTargets);
126✔
3666
  }
3667
  if (TSDB_CODE_SUCCESS == code) {
126!
3668
    code = tjsonGetBoolValue(pJson, jkPartitionPhysiPlanNeedBlockOutputTsOrder, &pNode->needBlockOutputTsOrder);
126✔
3669
  }
3670
  if (TSDB_CODE_SUCCESS == code) {
126!
3671
    code = tjsonGetIntValue(pJson, jkPartitionPhysiPlanTsSlotId, &pNode->tsSlotId);
126✔
3672
  }
3673

3674
  return code;
126✔
3675
}
3676

3677
static const char* jkIndefRowsFuncPhysiPlanExprs = "Exprs";
3678
static const char* jkIndefRowsFuncPhysiPlanFuncs = "Funcs";
3679

3680
static int32_t physiIndefRowsFuncNodeToJson(const void* pObj, SJson* pJson) {
220✔
3681
  const SIndefRowsFuncPhysiNode* pNode = (const SIndefRowsFuncPhysiNode*)pObj;
220✔
3682

3683
  int32_t code = physicPlanNodeToJson(pObj, pJson);
220✔
3684
  if (TSDB_CODE_SUCCESS == code) {
220!
3685
    code = nodeListToJson(pJson, jkIndefRowsFuncPhysiPlanExprs, pNode->pExprs);
220✔
3686
  }
3687
  if (TSDB_CODE_SUCCESS == code) {
220!
3688
    code = nodeListToJson(pJson, jkIndefRowsFuncPhysiPlanFuncs, pNode->pFuncs);
220✔
3689
  }
3690

3691
  return code;
220✔
3692
}
3693

3694
static int32_t jsonToPhysiIndefRowsFuncNode(const SJson* pJson, void* pObj) {
60✔
3695
  SIndefRowsFuncPhysiNode* pNode = (SIndefRowsFuncPhysiNode*)pObj;
60✔
3696

3697
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
60✔
3698
  if (TSDB_CODE_SUCCESS == code) {
60!
3699
    code = jsonToNodeList(pJson, jkIndefRowsFuncPhysiPlanExprs, &pNode->pExprs);
60✔
3700
  }
3701
  if (TSDB_CODE_SUCCESS == code) {
60!
3702
    code = jsonToNodeList(pJson, jkIndefRowsFuncPhysiPlanFuncs, &pNode->pFuncs);
60✔
3703
  }
3704

3705
  return code;
60✔
3706
}
3707

3708
static const char* jkInterpFuncPhysiPlanExprs = "Exprs";
3709
static const char* jkInterpFuncPhysiPlanFuncs = "Funcs";
3710
static const char* jkInterpFuncPhysiPlanStartTime = "StartTime";
3711
static const char* jkInterpFuncPhysiPlanEndTime = "EndTime";
3712
static const char* jkInterpFuncPhysiPlanInterval = "Interval";
3713
static const char* jkInterpFuncPhysiPlanIntervalUnit = "intervalUnit";
3714
static const char* jkInterpFuncPhysiPlanPrecision = "precision";
3715
static const char* jkInterpFuncPhysiPlanFillMode = "FillMode";
3716
static const char* jkInterpFuncPhysiPlanFillValues = "FillValues";
3717
static const char* jkInterpFuncPhysiPlanTimeSeries = "TimeSeries";
3718
static const char* jkInterpFuncPhysiPlanRangeInterval = "RangeInterval";
3719
static const char* jkInterpFuncPhysiPlanRangeIntervalUnit = "RangeIntervalUnit";
3720

3721
static int32_t physiInterpFuncNodeToJson(const void* pObj, SJson* pJson) {
343✔
3722
  const SInterpFuncPhysiNode* pNode = (const SInterpFuncPhysiNode*)pObj;
343✔
3723

3724
  int32_t code = physicPlanNodeToJson(pObj, pJson);
343✔
3725
  if (TSDB_CODE_SUCCESS == code) {
343!
3726
    code = nodeListToJson(pJson, jkInterpFuncPhysiPlanExprs, pNode->pExprs);
343✔
3727
  }
3728
  if (TSDB_CODE_SUCCESS == code) {
343!
3729
    code = nodeListToJson(pJson, jkInterpFuncPhysiPlanFuncs, pNode->pFuncs);
343✔
3730
  }
3731
  if (TSDB_CODE_SUCCESS == code) {
343!
3732
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanStartTime, pNode->timeRange.skey);
343✔
3733
  }
3734
  if (TSDB_CODE_SUCCESS == code) {
343!
3735
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanEndTime, pNode->timeRange.ekey);
343✔
3736
  }
3737
  if (TSDB_CODE_SUCCESS == code) {
343!
3738
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanInterval, pNode->interval);
343✔
3739
  }
3740
  if (TSDB_CODE_SUCCESS == code) {
343!
3741
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanIntervalUnit, pNode->intervalUnit);
343✔
3742
  }
3743
  if (TSDB_CODE_SUCCESS == code) {
343!
3744
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanPrecision, pNode->precision);
343✔
3745
  }
3746
  if (TSDB_CODE_SUCCESS == code) {
343!
3747
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanFillMode, pNode->fillMode);
343✔
3748
  }
3749
  if (TSDB_CODE_SUCCESS == code) {
343!
3750
    code = tjsonAddObject(pJson, jkInterpFuncPhysiPlanFillValues, nodeToJson, pNode->pFillValues);
343✔
3751
  }
3752
  if (TSDB_CODE_SUCCESS == code) {
343!
3753
    code = tjsonAddObject(pJson, jkInterpFuncPhysiPlanTimeSeries, nodeToJson, pNode->pTimeSeries);
343✔
3754
  }
3755
  if (TSDB_CODE_SUCCESS == code) {
343!
3756
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanRangeInterval, pNode->rangeInterval);
343✔
3757
  }
3758
  if (TSDB_CODE_SUCCESS == code) {
343!
3759
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanRangeIntervalUnit, pNode->rangeIntervalUnit);
343✔
3760
  }
3761

3762
  return code;
343✔
3763
}
3764

3765
static int32_t jsonToPhysiInterpFuncNode(const SJson* pJson, void* pObj) {
24✔
3766
  SInterpFuncPhysiNode* pNode = (SInterpFuncPhysiNode*)pObj;
24✔
3767

3768
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
24✔
3769
  if (TSDB_CODE_SUCCESS == code) {
24!
3770
    code = jsonToNodeList(pJson, jkInterpFuncPhysiPlanExprs, &pNode->pExprs);
24✔
3771
  }
3772
  if (TSDB_CODE_SUCCESS == code) {
24!
3773
    code = jsonToNodeList(pJson, jkInterpFuncPhysiPlanFuncs, &pNode->pFuncs);
24✔
3774
  }
3775
  if (TSDB_CODE_SUCCESS == code) {
24!
3776
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanStartTime, &pNode->timeRange.skey);
24✔
3777
  }
3778
  if (TSDB_CODE_SUCCESS == code) {
24!
3779
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanEndTime, &pNode->timeRange.ekey);
24✔
3780
  }
3781
  if (TSDB_CODE_SUCCESS == code) {
24!
3782
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanInterval, &pNode->interval);
24✔
3783
  }
3784
  if (TSDB_CODE_SUCCESS == code) {
24!
3785
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncPhysiPlanIntervalUnit, &pNode->intervalUnit);
24✔
3786
  }
3787
  if (TSDB_CODE_SUCCESS == code) {
24!
3788
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncPhysiPlanPrecision, &pNode->precision);
24✔
3789
  }
3790
  if (TSDB_CODE_SUCCESS == code) {
24!
3791
    tjsonGetNumberValue(pJson, jkInterpFuncPhysiPlanFillMode, pNode->fillMode, code);
24✔
3792
  }
3793
  if (TSDB_CODE_SUCCESS == code) {
24!
3794
    code = jsonToNodeObject(pJson, jkInterpFuncPhysiPlanFillValues, &pNode->pFillValues);
24✔
3795
  }
3796
  if (TSDB_CODE_SUCCESS == code) {
24!
3797
    code = jsonToNodeObject(pJson, jkInterpFuncPhysiPlanTimeSeries, &pNode->pTimeSeries);
24✔
3798
  }
3799
  if (TSDB_CODE_SUCCESS == code) {
24!
3800
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanRangeInterval, &pNode->rangeInterval);
24✔
3801
  }
3802
  if (TSDB_CODE_SUCCESS == code) {
24!
3803
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncPhysiPlanRangeIntervalUnit, &pNode->rangeIntervalUnit);
24✔
3804
  }
3805

3806
  return code;
24✔
3807
}
3808

3809
static const char* jkForecastFuncPhysiPlanExprs = "Exprs";
3810
static const char* jkForecastFuncPhysiPlanFuncs = "Funcs";
3811

3812
static int32_t physiForecastFuncNodeToJson(const void* pObj, SJson* pJson) {
×
3813
  const SForecastFuncPhysiNode* pNode = (const SForecastFuncPhysiNode*)pObj;
×
3814

3815
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3816
  if (TSDB_CODE_SUCCESS == code) {
×
3817
    code = nodeListToJson(pJson, jkForecastFuncPhysiPlanExprs, pNode->pExprs);
×
3818
  }
3819
  if (TSDB_CODE_SUCCESS == code) {
×
3820
    code = nodeListToJson(pJson, jkForecastFuncPhysiPlanFuncs, pNode->pFuncs);
×
3821
  }
3822

3823
  return code;
×
3824
}
3825

3826
static int32_t jsonToPhysiForecastFuncNode(const SJson* pJson, void* pObj) {
×
3827
  SForecastFuncPhysiNode* pNode = (SForecastFuncPhysiNode*)pObj;
×
3828

3829
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3830
  if (TSDB_CODE_SUCCESS == code) {
×
3831
    code = jsonToNodeList(pJson, jkForecastFuncPhysiPlanExprs, &pNode->pExprs);
×
3832
  }
3833
  if (TSDB_CODE_SUCCESS == code) {
×
3834
    code = jsonToNodeList(pJson, jkForecastFuncPhysiPlanFuncs, &pNode->pFuncs);
×
3835
  }
3836

3837
  return code;
×
3838
}
3839

3840
static const char* jkDataSinkInputDataBlockDesc = "InputDataBlockDesc";
3841

3842
static int32_t physicDataSinkNodeToJson(const void* pObj, SJson* pJson) {
229,225✔
3843
  const SDataSinkNode* pNode = (const SDataSinkNode*)pObj;
229,225✔
3844
  return tjsonAddObject(pJson, jkDataSinkInputDataBlockDesc, nodeToJson, pNode->pInputDataBlockDesc);
229,225✔
3845
}
3846

3847
static int32_t jsonToPhysicDataSinkNode(const SJson* pJson, void* pObj) {
19,926✔
3848
  SDataSinkNode* pNode = (SDataSinkNode*)pObj;
19,926✔
3849
  return jsonToNodeObject(pJson, jkDataSinkInputDataBlockDesc, (SNode**)&pNode->pInputDataBlockDesc);
19,926✔
3850
}
3851

3852
static int32_t physiDispatchNodeToJson(const void* pObj, SJson* pJson) { return physicDataSinkNodeToJson(pObj, pJson); }
175,742✔
3853

3854
static int32_t jsonToPhysiDispatchNode(const SJson* pJson, void* pObj) { return jsonToPhysicDataSinkNode(pJson, pObj); }
19,872✔
3855

3856
static const char* jkQueryInsertPhysiPlanInsertCols = "InsertCols";
3857
static const char* jkQueryInsertPhysiPlanStableId = "StableId";
3858
static const char* jkQueryInsertPhysiPlanTableId = "TableId";
3859
static const char* jkQueryInsertPhysiPlanTableType = "TableType";
3860
static const char* jkQueryInsertPhysiPlanTableFName = "TableFName";
3861
static const char* jkQueryInsertPhysiPlanVgId = "VgId";
3862
static const char* jkQueryInsertPhysiPlanEpSet = "EpSet";
3863
static const char* jkQueryInsertPhysiPlanExplain = "Explain";
3864

3865
static int32_t physiQueryInsertNodeToJson(const void* pObj, SJson* pJson) {
28✔
3866
  const SQueryInserterNode* pNode = (const SQueryInserterNode*)pObj;
28✔
3867

3868
  int32_t code = physicDataSinkNodeToJson(pObj, pJson);
28✔
3869
  if (TSDB_CODE_SUCCESS == code) {
28!
3870
    code = nodeListToJson(pJson, jkQueryInsertPhysiPlanInsertCols, pNode->pCols);
28✔
3871
  }
3872
  if (TSDB_CODE_SUCCESS == code) {
28!
3873
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanStableId, pNode->stableId);
28✔
3874
  }
3875
  if (TSDB_CODE_SUCCESS == code) {
28!
3876
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanTableId, pNode->tableId);
28✔
3877
  }
3878
  if (TSDB_CODE_SUCCESS == code) {
28!
3879
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanTableType, pNode->tableType);
28✔
3880
  }
3881
  if (TSDB_CODE_SUCCESS == code) {
28!
3882
    code = tjsonAddStringToObject(pJson, jkQueryInsertPhysiPlanTableFName, pNode->tableName);
28✔
3883
  }
3884
  if (TSDB_CODE_SUCCESS == code) {
28!
3885
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanVgId, pNode->vgId);
28✔
3886
  }
3887
  if (TSDB_CODE_SUCCESS == code) {
28!
3888
    code = tjsonAddObject(pJson, jkQueryInsertPhysiPlanEpSet, epSetToJson, &pNode->epSet);
28✔
3889
  }
3890
  if (TSDB_CODE_SUCCESS == code) {
28!
3891
    code = tjsonAddBoolToObject(pJson, jkQueryInsertPhysiPlanExplain, pNode->explain);
28✔
3892
  }
3893

3894
  return code;
28✔
3895
}
3896

3897
static int32_t jsonToPhysiQueryInsertNode(const SJson* pJson, void* pObj) {
18✔
3898
  SQueryInserterNode* pNode = (SQueryInserterNode*)pObj;
18✔
3899

3900
  int32_t code = jsonToPhysicDataSinkNode(pJson, pObj);
18✔
3901
  if (TSDB_CODE_SUCCESS == code) {
18!
3902
    code = jsonToNodeList(pJson, jkQueryInsertPhysiPlanInsertCols, &pNode->pCols);
18✔
3903
  }
3904
  if (TSDB_CODE_SUCCESS == code) {
18!
3905
    code = tjsonGetUBigIntValue(pJson, jkQueryInsertPhysiPlanStableId, &pNode->stableId);
18✔
3906
  }
3907
  if (TSDB_CODE_SUCCESS == code) {
18!
3908
    code = tjsonGetUBigIntValue(pJson, jkQueryInsertPhysiPlanTableId, &pNode->tableId);
18✔
3909
  }
3910
  if (TSDB_CODE_SUCCESS == code) {
18!
3911
    code = tjsonGetTinyIntValue(pJson, jkQueryInsertPhysiPlanTableType, &pNode->tableType);
18✔
3912
  }
3913
  if (TSDB_CODE_SUCCESS == code) {
18!
3914
    code = tjsonGetStringValue(pJson, jkQueryInsertPhysiPlanTableFName, pNode->tableName);
18✔
3915
  }
3916
  if (TSDB_CODE_SUCCESS == code) {
18!
3917
    code = tjsonGetIntValue(pJson, jkQueryInsertPhysiPlanVgId, &pNode->vgId);
18✔
3918
  }
3919
  if (TSDB_CODE_SUCCESS == code) {
18!
3920
    code = tjsonToObject(pJson, jkQueryInsertPhysiPlanEpSet, jsonToEpSet, &pNode->epSet);
18✔
3921
  }
3922
  if (TSDB_CODE_SUCCESS == code) {
18!
3923
    code = tjsonGetBoolValue(pJson, jkQueryInsertPhysiPlanExplain, &pNode->explain);
18✔
3924
  }
3925

3926
  return code;
18✔
3927
}
3928

3929
static const char* jkDeletePhysiPlanTableId = "TableId";
3930
static const char* jkDeletePhysiPlanTableType = "TableType";
3931
static const char* jkDeletePhysiPlanTableFName = "TableFName";
3932
static const char* jkDeletePhysiPlanTsColName = "TsColName";
3933
static const char* jkDeletePhysiPlanDeleteTimeRangeStartKey = "DeleteTimeRangeStartKey";
3934
static const char* jkDeletePhysiPlanDeleteTimeRangeEndKey = "DeleteTimeRangeEndKey";
3935
static const char* jkDeletePhysiPlanAffectedRows = "AffectedRows";
3936
static const char* jkDeletePhysiPlanStartTs = "StartTs";
3937
static const char* jkDeletePhysiPlanEndTs = "EndTs";
3938

3939
static int32_t physiDeleteNodeToJson(const void* pObj, SJson* pJson) {
53,448✔
3940
  const SDataDeleterNode* pNode = (const SDataDeleterNode*)pObj;
53,448✔
3941

3942
  int32_t code = physicDataSinkNodeToJson(pObj, pJson);
53,448✔
3943
  if (TSDB_CODE_SUCCESS == code) {
53,451!
3944
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanTableId, pNode->tableId);
53,452✔
3945
  }
3946
  if (TSDB_CODE_SUCCESS == code) {
53,450!
3947
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanTableType, pNode->tableType);
53,451✔
3948
  }
3949
  if (TSDB_CODE_SUCCESS == code) {
53,451!
3950
    code = tjsonAddStringToObject(pJson, jkDeletePhysiPlanTableFName, pNode->tableFName);
53,452✔
3951
  }
3952
  if (TSDB_CODE_SUCCESS == code) {
53,451!
3953
    code = tjsonAddStringToObject(pJson, jkDeletePhysiPlanTsColName, pNode->tsColName);
53,452✔
3954
  }
3955
  if (TSDB_CODE_SUCCESS == code) {
53,451!
3956
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanDeleteTimeRangeStartKey, pNode->deleteTimeRange.skey);
53,452✔
3957
  }
3958
  if (TSDB_CODE_SUCCESS == code) {
53,449!
3959
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanDeleteTimeRangeEndKey, pNode->deleteTimeRange.ekey);
53,450✔
3960
  }
3961
  if (TSDB_CODE_SUCCESS == code) {
53,450!
3962
    code = tjsonAddObject(pJson, jkDeletePhysiPlanAffectedRows, nodeToJson, pNode->pAffectedRows);
53,451✔
3963
  }
3964
  if (TSDB_CODE_SUCCESS == code) {
53,450!
3965
    code = tjsonAddObject(pJson, jkDeletePhysiPlanStartTs, nodeToJson, pNode->pStartTs);
53,450✔
3966
  }
3967
  if (TSDB_CODE_SUCCESS == code) {
53,452!
3968
    code = tjsonAddObject(pJson, jkDeletePhysiPlanEndTs, nodeToJson, pNode->pEndTs);
53,452✔
3969
  }
3970

3971
  return code;
53,452✔
3972
}
3973

3974
static int32_t jsonToPhysiDeleteNode(const SJson* pJson, void* pObj) {
36✔
3975
  SDataDeleterNode* pNode = (SDataDeleterNode*)pObj;
36✔
3976

3977
  int32_t code = jsonToPhysicDataSinkNode(pJson, pObj);
36✔
3978
  if (TSDB_CODE_SUCCESS == code) {
36!
3979
    code = tjsonGetUBigIntValue(pJson, jkDeletePhysiPlanTableId, &pNode->tableId);
36✔
3980
  }
3981
  if (TSDB_CODE_SUCCESS == code) {
36!
3982
    code = tjsonGetTinyIntValue(pJson, jkDeletePhysiPlanTableType, &pNode->tableType);
36✔
3983
  }
3984
  if (TSDB_CODE_SUCCESS == code) {
36!
3985
    code = tjsonGetStringValue(pJson, jkDeletePhysiPlanTableFName, pNode->tableFName);
36✔
3986
  }
3987
  if (TSDB_CODE_SUCCESS == code) {
36!
3988
    code = tjsonGetStringValue(pJson, jkDeletePhysiPlanTsColName, pNode->tsColName);
36✔
3989
  }
3990
  if (TSDB_CODE_SUCCESS == code) {
36!
3991
    code = tjsonGetBigIntValue(pJson, jkDeletePhysiPlanDeleteTimeRangeStartKey, &pNode->deleteTimeRange.skey);
36✔
3992
  }
3993
  if (TSDB_CODE_SUCCESS == code) {
36!
3994
    code = tjsonGetBigIntValue(pJson, jkDeletePhysiPlanDeleteTimeRangeEndKey, &pNode->deleteTimeRange.ekey);
36✔
3995
  }
3996
  if (TSDB_CODE_SUCCESS == code) {
36!
3997
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanAffectedRows, &pNode->pAffectedRows);
36✔
3998
  }
3999
  if (TSDB_CODE_SUCCESS == code) {
36!
4000
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanStartTs, &pNode->pStartTs);
36✔
4001
  }
4002
  if (TSDB_CODE_SUCCESS == code) {
36!
4003
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanEndTs, &pNode->pEndTs);
36✔
4004
  }
4005

4006
  return code;
36✔
4007
}
4008

4009
static const char* jkGroupCachePhysiPlanGroupCols = "GroupColumns";
4010
static const char* jkGroupCachePhysiPlanGrpColsMayBeNull = "GroupColumnsMayBeNull";
4011
static const char* jkGroupCachePhysiPlanGroupByUid = "GroupByUid";
4012
static const char* jkGroupCachePhysiPlanGlobalGroup = "GlobalGroup";
4013
static const char* jkGroupCachePhysiPlanBatchFetch = "BatchFetch";
4014

4015
static int32_t physiGroupCacheNodeToJson(const void* pObj, SJson* pJson) {
×
4016
  const SGroupCachePhysiNode* pNode = (const SGroupCachePhysiNode*)pObj;
×
4017

4018
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
4019
  if (TSDB_CODE_SUCCESS == code) {
×
4020
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGrpColsMayBeNull, pNode->grpColsMayBeNull);
×
4021
  }
4022
  if (TSDB_CODE_SUCCESS == code) {
×
4023
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGroupByUid, pNode->grpByUid);
×
4024
  }
4025
  if (TSDB_CODE_SUCCESS == code) {
×
4026
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGlobalGroup, pNode->globalGrp);
×
4027
  }
4028
  if (TSDB_CODE_SUCCESS == code) {
×
4029
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanBatchFetch, pNode->batchFetch);
×
4030
  }
4031
  if (TSDB_CODE_SUCCESS == code) {
×
4032
    code = nodeListToJson(pJson, jkGroupCachePhysiPlanGroupCols, pNode->pGroupCols);
×
4033
  }
4034
  return code;
×
4035
}
4036

4037
static int32_t jsonToPhysiGroupCacheNode(const SJson* pJson, void* pObj) {
×
4038
  SGroupCachePhysiNode* pNode = (SGroupCachePhysiNode*)pObj;
×
4039

4040
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
4041
  if (TSDB_CODE_SUCCESS == code) {
×
4042
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGrpColsMayBeNull, &pNode->grpColsMayBeNull);
×
4043
  }
4044
  if (TSDB_CODE_SUCCESS == code) {
×
4045
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGroupByUid, &pNode->grpByUid);
×
4046
  }
4047
  if (TSDB_CODE_SUCCESS == code) {
×
4048
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGlobalGroup, &pNode->globalGrp);
×
4049
  }
4050
  if (TSDB_CODE_SUCCESS == code) {
×
4051
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanBatchFetch, &pNode->batchFetch);
×
4052
  }
4053
  if (TSDB_CODE_SUCCESS == code) {
×
4054
    code = jsonToNodeList(pJson, jkGroupCachePhysiPlanGroupCols, &pNode->pGroupCols);
×
4055
  }
4056
  return code;
×
4057
}
4058

4059
static const char* jkDynQueryCtrlPhysiPlanQueryType = "QueryType";
4060
static const char* jkDynQueryCtrlPhysiPlanBatchFetch = "BatchFetch";
4061
static const char* jkDynQueryCtrlPhysiPlanVgSlot0 = "VgSlot[0]";
4062
static const char* jkDynQueryCtrlPhysiPlanVgSlot1 = "VgSlot[1]";
4063
static const char* jkDynQueryCtrlPhysiPlanUidSlot0 = "UidSlot[0]";
4064
static const char* jkDynQueryCtrlPhysiPlanUidSlot1 = "UidSlot[1]";
4065
static const char* jkDynQueryCtrlPhysiPlanSrcScan0 = "SrcScan[0]";
4066
static const char* jkDynQueryCtrlPhysiPlanSrcScan1 = "SrcScan[1]";
4067
static const char* jkDynQueryCtrlPhysiPlanDynTbname = "DynTbname";
4068
static const char* jkDynQueryCtrlPhysiPlanScanAllCols = "ScanAllCols";
4069
static const char* jkDynQueryCtrlPhysiPlanDbName= "DbName";
4070
static const char* jkDynQueryCtrlPhysiPlanStbName= "StbName";
4071
static const char* jkDynQueryCtrlPhysiPlanSuid= "Suid";
4072
static const char* jkDynQueryCtrlPhysiPlanAccountId= "AccountId";
4073
static const char* jkDynQueryCtrlPhysiPlanEpSet = "EpSet";
4074
static const char* jkDynQueryCtrlPhysiPlanScanCols = "ScanCols";
4075

4076
static int32_t physiDynQueryCtrlNodeToJson(const void* pObj, SJson* pJson) {
116✔
4077
  const SDynQueryCtrlPhysiNode* pNode = (const SDynQueryCtrlPhysiNode*)pObj;
116✔
4078

4079
  int32_t code = physicPlanNodeToJson(pObj, pJson);
116✔
4080
  if (TSDB_CODE_SUCCESS == code) {
116!
4081
    code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType);
116✔
4082
  }
4083
  if (TSDB_CODE_SUCCESS == code) {
116!
4084
    switch (pNode->qType) {
116!
4085
      case DYN_QTYPE_STB_HASH: {
×
4086
        code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanBatchFetch, pNode->stbJoin.batchFetch);
×
4087
        if (TSDB_CODE_SUCCESS == code) {
×
4088
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanVgSlot0, pNode->stbJoin.vgSlot[0]);
×
4089
        }
4090
        if (TSDB_CODE_SUCCESS == code) {
×
4091
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanVgSlot1, pNode->stbJoin.vgSlot[1]);
×
4092
        }
4093
        if (TSDB_CODE_SUCCESS == code) {
×
4094
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanUidSlot0, pNode->stbJoin.uidSlot[0]);
×
4095
        }
4096
        if (TSDB_CODE_SUCCESS == code) {
×
4097
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanUidSlot1, pNode->stbJoin.uidSlot[1]);
×
4098
        }
4099
        if (TSDB_CODE_SUCCESS == code) {
×
4100
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanSrcScan0, pNode->stbJoin.srcScan[0]);
×
4101
        }
4102
        if (TSDB_CODE_SUCCESS == code) {
×
4103
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanSrcScan1, pNode->stbJoin.srcScan[1]);
×
4104
        }
4105
        break;
×
4106
      }
4107
        //  bool       scanAllCols;
4108
        //  char       dbName[TSDB_DB_NAME_LEN];
4109
        //  uint64_t   suid;
4110
        //  int32_t    accountId;
4111
        //  SEpSet     mgmtEpSet;
4112
        //  SNodeList *pScanCols;
4113
      case DYN_QTYPE_VTB_SCAN: {
116✔
4114
        code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanScanAllCols, pNode->vtbScan.scanAllCols);
116✔
4115
        if (TSDB_CODE_SUCCESS == code) {
116!
4116
          code = tjsonAddStringToObject(pJson, jkDynQueryCtrlPhysiPlanDbName, pNode->vtbScan.dbName);
116✔
4117
        }
4118
        if (TSDB_CODE_SUCCESS == code) {
116!
4119
          code = tjsonAddStringToObject(pJson, jkDynQueryCtrlPhysiPlanStbName, pNode->vtbScan.stbName);
116✔
4120
        }
4121
        if (TSDB_CODE_SUCCESS == code) {
116!
4122
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanSuid, pNode->vtbScan.suid);
116✔
4123
        }
4124
        if (TSDB_CODE_SUCCESS == code) {
116!
4125
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanAccountId, pNode->vtbScan.accountId);
116✔
4126
        }
4127
        if (TSDB_CODE_SUCCESS == code) {
116!
4128
          code = tjsonAddObject(pJson, jkDynQueryCtrlPhysiPlanEpSet, epSetToJson, &pNode->vtbScan.mgmtEpSet);
116✔
4129
        }
4130
        if (TSDB_CODE_SUCCESS == code) {
116!
4131
          code = nodeListToJson(pJson, jkDynQueryCtrlPhysiPlanScanCols, pNode->vtbScan.pScanCols);
116✔
4132
        }
4133
        break;
116✔
4134
      }
4135
      default:
×
4136
        return TSDB_CODE_INVALID_PARA;
×
4137
    }
4138
  }
4139
  if (TSDB_CODE_SUCCESS == code) {
116!
4140
    code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanDynTbname, pNode->dynTbname);
116✔
4141
  }
4142
  return code;
116✔
4143
}
4144

4145
static int32_t jsonToPhysiDynQueryCtrlNode(const SJson* pJson, void* pObj) {
12✔
4146
  SDynQueryCtrlPhysiNode* pNode = (SDynQueryCtrlPhysiNode*)pObj;
12✔
4147

4148
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
12✔
4149
  if (TSDB_CODE_SUCCESS == code) {
12!
4150
    tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType, code);
12✔
4151
  }
4152
  if (TSDB_CODE_SUCCESS == code) {
12!
4153
    switch (pNode->qType) {
12!
4154
      case DYN_QTYPE_STB_HASH: {
×
4155
        tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType, code);
×
4156
        if (TSDB_CODE_SUCCESS == code) {
×
4157
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanBatchFetch, &pNode->stbJoin.batchFetch);
×
4158
        }
4159
        if (TSDB_CODE_SUCCESS == code) {
×
4160
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanVgSlot0, pNode->stbJoin.vgSlot[0], code);
×
4161
        }
4162
        if (TSDB_CODE_SUCCESS == code) {
×
4163
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanVgSlot1, pNode->stbJoin.vgSlot[1], code);
×
4164
        }
4165
        if (TSDB_CODE_SUCCESS == code) {
×
4166
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanUidSlot0, pNode->stbJoin.uidSlot[0], code);
×
4167
        }
4168
        if (TSDB_CODE_SUCCESS == code) {
×
4169
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanUidSlot1, pNode->stbJoin.uidSlot[1], code);
×
4170
        }
4171
        if (TSDB_CODE_SUCCESS == code) {
×
4172
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanSrcScan0, &pNode->stbJoin.srcScan[0]);
×
4173
        }
4174
        if (TSDB_CODE_SUCCESS == code) {
×
4175
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanSrcScan1, &pNode->stbJoin.srcScan[1]);
×
4176
        }
4177
        break;
×
4178
      }
4179
      case DYN_QTYPE_VTB_SCAN: {
12✔
4180
        code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanScanAllCols, &pNode->vtbScan.scanAllCols);
12✔
4181
        if (TSDB_CODE_SUCCESS == code) {
12!
4182
          code = tjsonGetStringValue(pJson, jkDynQueryCtrlPhysiPlanDbName, pNode->vtbScan.dbName);
12✔
4183
        }
4184
        if (TSDB_CODE_SUCCESS == code) {
12!
4185
          code = tjsonGetStringValue(pJson, jkDynQueryCtrlPhysiPlanStbName, pNode->vtbScan.stbName);
12✔
4186
        }
4187
        if (TSDB_CODE_SUCCESS == code) {
12!
4188
          code = tjsonGetUBigIntValue(pJson, jkDynQueryCtrlPhysiPlanSuid, &pNode->vtbScan.suid);
12✔
4189
        }
4190
        if (TSDB_CODE_SUCCESS == code) {
12!
4191
          code = tjsonGetIntValue(pJson, jkDynQueryCtrlPhysiPlanAccountId, &pNode->vtbScan.accountId);
12✔
4192
        }
4193
        if (TSDB_CODE_SUCCESS == code) {
12!
4194
          code = tjsonToObject(pJson, jkDynQueryCtrlPhysiPlanEpSet, jsonToEpSet, &pNode->vtbScan.mgmtEpSet);
12✔
4195
        }
4196
        if (TSDB_CODE_SUCCESS == code) {
12!
4197
          code = jsonToNodeList(pJson, jkDynQueryCtrlPhysiPlanScanCols, &pNode->vtbScan.pScanCols);
12✔
4198
        }
4199
        break;
12✔
4200
      }
4201
      default:
×
4202
        return TSDB_CODE_INVALID_PARA;
×
4203
    }
4204
  }
4205
  if (TSDB_CODE_SUCCESS == code) {
12!
4206
    code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanDynTbname, &pNode->dynTbname);
12✔
4207
  }
4208
  return code;
12✔
4209
}
4210

4211
static const char* jkQueryNodeAddrId = "Id";
4212
static const char* jkQueryNodeAddrInUse = "InUse";
4213
static const char* jkQueryNodeAddrNumOfEps = "NumOfEps";
4214
static const char* jkQueryNodeAddrEps = "Eps";
4215

4216
static int32_t queryNodeAddrToJson(const void* pObj, SJson* pJson) {
8,265,199✔
4217
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
8,265,199✔
4218

4219
  int32_t code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrId, pNode->nodeId);
8,265,199✔
4220
  if (TSDB_CODE_SUCCESS == code) {
8,288,257!
4221
    code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrInUse, pNode->epSet.inUse);
8,289,052✔
4222
  }
4223
  if (TSDB_CODE_SUCCESS == code) {
8,287,882!
4224
    code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrNumOfEps, pNode->epSet.numOfEps);
8,289,479✔
4225
  }
4226
  if (TSDB_CODE_SUCCESS == code) {
8,287,610!
4227
    code = tjsonAddArray(pJson, jkQueryNodeAddrEps, epToJson, pNode->epSet.eps, sizeof(SEp), pNode->epSet.numOfEps);
8,290,983✔
4228
  }
4229

4230
  return code;
8,277,142✔
4231
}
4232

4233
static int32_t jsonToQueryNodeAddr(const SJson* pJson, void* pObj) {
22,855✔
4234
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
22,855✔
4235

4236
  int32_t code = tjsonGetIntValue(pJson, jkQueryNodeAddrId, &pNode->nodeId);
22,855✔
4237
  if (TSDB_CODE_SUCCESS == code) {
22,856!
4238
    code = tjsonGetTinyIntValue(pJson, jkQueryNodeAddrInUse, &pNode->epSet.inUse);
22,856✔
4239
  }
4240
  if (TSDB_CODE_SUCCESS == code) {
22,856✔
4241
    code = tjsonGetTinyIntValue(pJson, jkQueryNodeAddrNumOfEps, &pNode->epSet.numOfEps);
22,854✔
4242
  }
4243
  if (TSDB_CODE_SUCCESS == code) {
22,858✔
4244
    code = tjsonToArray(pJson, jkQueryNodeAddrEps, jsonToEp, pNode->epSet.eps, sizeof(SEp));
22,856✔
4245
  }
4246

4247
  return code;
22,856✔
4248
}
4249

4250
static const char* jkColOtableName = "colOtableName";
4251
static const char* jkColVtableId = "colVtableId";
4252
static int32_t colIdNameToJson(const void* pObj, SJson* pJson) {
×
4253
  const SColIdName* pCol = (const SColIdName*)pObj;
×
4254

4255
  int32_t code = tjsonAddIntegerToObject(pJson, jkColVtableId, pCol->colId);
×
4256
  if (TSDB_CODE_SUCCESS == code) {
×
4257
    code = tjsonAddStringToObject(pJson, jkColOtableName, pCol->colName);
×
4258
  }
4259

4260
  return code;
×
4261
}
4262

4263

4264
static const char* jkOtableHashSize = "otbHashSize";
4265
static const char* jkOtableHashKV = "otbHashKeyValue";
4266
static const char* jkOtableHashName = "otbHashName";
4267
static const char* jkOtableHashValue = "otbHashValue";
4268
static int32_t oTableHashToJson(const void* pObj, SJson* pJson) {
×
4269
  const SSHashObj* pHash = (const SSHashObj*)pObj;
×
4270
  int32_t code = tjsonAddIntegerToObject(pJson, jkOtableHashSize, tSimpleHashGetSize(pHash));
×
4271
  if (code) {
×
4272
    return code;
×
4273
  }
4274
  
4275
  SJson* pJsonArray = tjsonAddArrayToObject(pJson, jkOtableHashKV);
×
4276
  if (NULL == pJsonArray) {
×
4277
    return terrno;
×
4278
  }
4279

4280
  int32_t iter = 0;
×
4281
  SArray** pCols = NULL;
×
4282
  char* pKey = NULL;
×
4283
  void* p = NULL;
×
4284
  while (NULL != (p = tSimpleHashIterate(pHash, p, &iter))) {
×
4285
    pKey = (char*)tSimpleHashGetKey(p, NULL);
×
4286
    pCols = (SArray**)p;
×
4287
    SJson* pJobj = tjsonCreateObject();
×
4288
    if (pJobj == NULL) {
×
4289
      return terrno;
×
4290
    }
4291
    code = tjsonAddStringToObject(pJobj, jkOtableHashName, pKey);
×
4292
    if (code) {
×
4293
      return code;
×
4294
    }
4295
    code = tjsonAddArray(pJobj, jkOtableHashValue, colIdNameToJson, TARRAY_GET_ELEM(*pCols, 0), sizeof(SColIdName), taosArrayGetSize(*pCols));
×
4296
    if (code) {
×
4297
      return code;
×
4298
    }
4299
    code = tjsonAddItemToArray(pJsonArray, pJobj);
×
4300
    if (code) {
×
4301
      return code;
×
4302
    }
4303
  }
4304

4305
  return code;
×
4306
}
4307

4308
static const char* jkVtablesHashSize = "vtbHashSize";
4309
static const char* jkVtablesHashKV = "vtbHashKeyValue";
4310
static const char* jkVtablesVuid = "vtbHashVuid";
4311
static const char* jkVtablesVValue = "vtbHashVValue";
4312
static int32_t vtablesHashToJson(const void* pObj, SJson* pJson) {
×
4313
  const SSHashObj* pHash = (const SSHashObj*)pObj;
×
4314
  int32_t code = tjsonAddIntegerToObject(pJson, jkVtablesHashSize, tSimpleHashGetSize(pHash));
×
4315
  if (code) {
×
4316
    return code;
×
4317
  }
4318
  
4319
  SJson* pJsonArray = tjsonAddArrayToObject(pJson, jkVtablesHashKV);
×
4320
  if (NULL == pJsonArray) {
×
4321
    return terrno;
×
4322
  }
4323

4324
  int32_t iter = 0;
×
4325
  SSHashObj** pOtable = NULL;
×
4326
  char* pKey = NULL;
×
4327
  void* p = NULL;
×
4328
  while (NULL != (p = tSimpleHashIterate(pHash, p, &iter))) {
×
4329
    pKey = (char*)tSimpleHashGetKey(p, NULL);
×
4330
    pOtable = (SSHashObj**)p;
×
4331
    SJson* pJobj = tjsonCreateObject();
×
4332
    if (pJobj == NULL) {
×
4333
      return terrno;
×
4334
    }
4335
    code = tjsonAddIntegerToObject(pJobj, jkVtablesVuid, *(uint64_t*)((int32_t*)pKey + 1));
×
4336
    if (code) {
×
4337
      return code;
×
4338
    }
4339
    code = tjsonAddObject(pJobj, jkVtablesVValue, oTableHashToJson, *pOtable);
×
4340
    if (code) {
×
4341
      return code;
×
4342
    }
4343
    code = tjsonAddItemToArray(pJsonArray, pJobj);
×
4344
    if (code) {
×
4345
      return code;
×
4346
    }
4347
  }
4348

4349
  return code;
×
4350
}
4351

4352

4353

4354
static const char* jkSubplanId = "Id";
4355
static const char* jkSubplanType = "SubplanType";
4356
static const char* jkSubplanMsgType = "MsgType";
4357
static const char* jkSubplanLevel = "Level";
4358
static const char* jkSubplanDbFName = "DbFName";
4359
static const char* jkSubplanParent = "Parent";
4360
static const char* jkSubplanChildren = "Child";
4361
static const char* jkSubplanUser = "User";
4362
static const char* jkSubplanNodeAddr = "NodeAddr";
4363
static const char* jkSubplanRootNode = "RootNode";
4364
static const char* jkSubplanDataSink = "DataSink";
4365
static const char* jkSubplanTagCond = "TagCond";
4366
static const char* jkSubplanTagIndexCond = "TagIndexCond";
4367
static const char* jkSubplanVTables = "VTables";
4368
static const char* jkSubplanShowRewrite = "ShowRewrite";
4369
static const char* jkSubplanRowsThreshold = "RowThreshold";
4370
static const char* jkSubplanDynamicRowsThreshold = "DyRowThreshold";
4371
static const char* jkSubplanIsView = "IsView";
4372
static const char* jkSubplanIsAudit = "IsAudit";
4373
static const char* jkSubplanDynTbname = "DynTbname";
4374
static const char* jkSubplanProcessOneBlock = "ProcessOneBlock";
4375

4376

4377
static int32_t subplanToJson(const void* pObj, SJson* pJson) {
8,243,796✔
4378
  const SSubplan* pNode = (const SSubplan*)pObj;
8,243,796✔
4379

4380
  int32_t code = tjsonAddObject(pJson, jkSubplanId, subplanIdToJson, &pNode->id);
8,243,796✔
4381
  if (TSDB_CODE_SUCCESS == code) {
8,280,336!
4382
    code = tjsonAddIntegerToObject(pJson, jkSubplanType, pNode->subplanType);
8,281,258✔
4383
  }
4384
  if (TSDB_CODE_SUCCESS == code) {
8,284,040✔
4385
    code = tjsonAddIntegerToObject(pJson, jkSubplanMsgType, pNode->msgType);
8,275,369✔
4386
  }
4387
  if (TSDB_CODE_SUCCESS == code) {
8,293,836✔
4388
    code = tjsonAddIntegerToObject(pJson, jkSubplanLevel, pNode->level);
8,286,053✔
4389
  }
4390
  if (TSDB_CODE_SUCCESS == code) {
8,294,871✔
4391
    code = tjsonAddStringToObject(pJson, jkSubplanDbFName, pNode->dbFName);
8,288,191✔
4392
  }
4393
  if (TSDB_CODE_SUCCESS == code) {
8,295,599✔
4394
    code = tjsonAddStringToObject(pJson, jkSubplanUser, pNode->user);
8,290,113✔
4395
  }
4396
  if (TSDB_CODE_SUCCESS == code) {
8,296,053✔
4397
    code = tjsonAddObject(pJson, jkSubplanNodeAddr, queryNodeAddrToJson, &pNode->execNode);
8,282,856✔
4398
  }
4399
  if (TSDB_CODE_SUCCESS == code) {
8,295,015✔
4400
    code = nodeListToJson(pJson, jkSubplanChildren, pNode->pChildren);
8,282,830✔
4401
  }
4402
  if (TSDB_CODE_SUCCESS == code) {
8,291,370✔
4403
    code = tjsonAddObject(pJson, jkSubplanRootNode, nodeToJson, pNode->pNode);
8,281,179✔
4404
  }
4405
  if (TSDB_CODE_SUCCESS == code) {
8,289,200✔
4406
    code = tjsonAddObject(pJson, jkSubplanDataSink, nodeToJson, pNode->pDataSink);
8,280,417✔
4407
  }
4408
  if (TSDB_CODE_SUCCESS == code) {
8,304,129✔
4409
    code = tjsonAddObject(pJson, jkSubplanTagCond, nodeToJson, pNode->pTagCond);
8,294,628✔
4410
  }
4411
  if (TSDB_CODE_SUCCESS == code) {
8,301,519✔
4412
    code = tjsonAddObject(pJson, jkSubplanTagIndexCond, nodeToJson, pNode->pTagIndexCond);
8,292,321✔
4413
  }
4414
  if (TSDB_CODE_SUCCESS == code) {
8,298,338✔
4415
    code = tjsonAddObject(pJson, jkSubplanVTables, vtablesHashToJson, pNode->pVTables);
8,289,525✔
4416
  }
4417
  if (TSDB_CODE_SUCCESS == code) {
8,296,208✔
4418
    code = tjsonAddBoolToObject(pJson, jkSubplanShowRewrite, pNode->showRewrite);
8,287,564✔
4419
  }
4420
  if (TSDB_CODE_SUCCESS == code) {
8,307,734✔
4421
    code = tjsonAddBoolToObject(pJson, jkSubplanIsView, pNode->isView);
8,297,186✔
4422
  }
4423
  if (TSDB_CODE_SUCCESS == code) {
8,309,083✔
4424
    code = tjsonAddBoolToObject(pJson, jkSubplanIsAudit, pNode->isAudit);
8,298,697✔
4425
  }
4426
  if (TSDB_CODE_SUCCESS == code) {
8,309,106✔
4427
    code = tjsonAddIntegerToObject(pJson, jkSubplanRowsThreshold, pNode->rowsThreshold);
8,298,796✔
4428
  }
4429
  if (TSDB_CODE_SUCCESS == code) {
8,303,575✔
4430
    code = tjsonAddBoolToObject(pJson, jkSubplanDynamicRowsThreshold, pNode->dynamicRowThreshold);
8,293,994✔
4431
  }
4432
  if (TSDB_CODE_SUCCESS == code) {
8,306,869✔
4433
    code = tjsonAddBoolToObject(pJson, jkSubplanDynTbname, pNode->dynTbname);
8,289,186✔
4434
  }
4435
  if (TSDB_CODE_SUCCESS == code) {
8,315,019✔
4436
    code = tjsonAddBoolToObject(pJson, jkSubplanProcessOneBlock, pNode->processOneBlock);
8,297,595✔
4437
  }
4438

4439
  return code;
8,298,033✔
4440
}
4441

4442
static int32_t jsonToOtableCols(const SJson* pJson, void* pObj) {
×
4443
  SArray** pCols = (SArray**)pObj;
×
4444
  SColIdName col;
4445
  char colName[TSDB_COL_NAME_LEN];
4446
  int32_t code = 0;
×
4447
  int32_t colNum = tjsonGetArraySize(pJson);
×
4448
  *pCols = taosArrayInit(colNum, sizeof(SColIdName));
×
4449
  if (NULL == *pCols) {
×
4450
    return terrno;
×
4451
  }
4452
  for (int32_t i = 0; i < colNum; ++i) {
×
4453
    SJson* pCol = tjsonGetArrayItem(pJson, i);
×
4454
    code = tjsonGetSmallIntValue(pCol, jkColVtableId, &col.colId);
×
4455
    if (code < 0) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4456
    code = tjsonGetStringValue(pCol, jkColOtableName, colName);
×
4457
    if (code < 0) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4458
    col.colName = taosStrdup(colName);
×
4459
    if (NULL == col.colName) {
×
4460
      return terrno;
×
4461
    }
4462
    if (NULL == taosArrayPush(*pCols, &col)) {
×
4463
      return terrno;
×
4464
    }
4465
  }
4466

4467
  return code;
×
4468
}
4469

4470
static int32_t jsonToOtableHash(const SJson* pJson, void* pObj) {
×
4471
  SSHashObj** pHash = (SSHashObj**)pObj;
×
4472
  int32_t hashSize = 0;
×
4473
  int32_t code = tjsonGetIntValue(pJson, jkOtableHashSize, &hashSize);
×
4474
  if (TSDB_CODE_SUCCESS == code && hashSize > 0) {
×
4475
    *pHash = tSimpleHashInit(hashSize, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY));
×
4476
    if (NULL == *pHash) {
×
4477
      return terrno;
×
4478
    }
4479
    tSimpleHashSetFreeFp(*pHash, tFreeStreamVtbOtbInfo);
×
4480
    
4481
    SJson *ovalues = tjsonGetObjectItem(pJson, jkOtableHashKV);
×
4482
    if (ovalues == NULL) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4483
    char tbName[TSDB_TABLE_NAME_LEN];
4484
    SArray* pCols = NULL;
×
4485
    for (int32_t d = 0; d < hashSize; ++d) {
×
4486
      SJson *okeyValue = tjsonGetArrayItem(ovalues, d);
×
4487
      if (okeyValue == NULL) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4488
    
4489
      code = tjsonGetStringValue(okeyValue, jkOtableHashName, tbName);
×
4490
      if (code < 0) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4491
      SJson *ovalue = tjsonGetObjectItem(okeyValue, jkOtableHashValue);
×
4492
      code = jsonToOtableCols(ovalue, &pCols);
×
4493
      if (code < 0) return code;
×
4494
      code = tSimpleHashPut(*pHash, tbName, strlen(tbName) + 1, &pCols, POINTER_BYTES);
×
4495
      if (code < 0) return code;
×
4496
    }
4497
  }
4498

4499
  return code;
×
4500
}
4501

4502

4503

4504
static int32_t jsonToVtablesHash(const SJson* pJson, void* pObj) {
×
4505
  SSHashObj** pHash = (SSHashObj**)pObj;
×
4506
  int32_t hashSize = 0;
×
4507
  int32_t code = tjsonGetIntValue(pJson, jkVtablesHashSize, &hashSize);
×
4508
  if (TSDB_CODE_SUCCESS == code && hashSize > 0) {
×
4509
    *pHash = tSimpleHashInit(hashSize, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT));
×
4510
    if (NULL == *pHash) {
×
4511
      return terrno;
×
4512
    }
4513
    tSimpleHashSetFreeFp(*pHash, tFreeStreamVtbVtbInfo);
×
4514
    SJson *vvalues = tjsonGetObjectItem(pJson, jkVtablesHashKV);
×
4515
    if (vvalues == NULL) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4516
    uint64_t vuid = 0;
×
4517
    SSHashObj* pOtable = NULL;
×
4518
    for (int32_t d = 0; d < hashSize; ++d) {
×
4519
      SJson *vkeyValue = tjsonGetArrayItem(vvalues, d);
×
4520
      if (vkeyValue == NULL) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4521
    
4522
      code = tjsonGetUBigIntValue(vkeyValue, jkVtablesVuid, &vuid);
×
4523
      if (code < 0) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4524
      SJson *vvalue = tjsonGetObjectItem(vkeyValue, jkVtablesVValue);
×
4525
      code = jsonToOtableHash(vvalue, &pOtable);
×
4526
      if (code < 0) return code;
×
4527
      code = tSimpleHashPut(*pHash, &vuid, sizeof(vuid), &pOtable, POINTER_BYTES);
×
4528
      if (code < 0) return code;
×
4529
    }
4530
  }
4531

4532
  return code;
×
4533
}
4534

4535

4536
static int32_t jsonToSubplan(const SJson* pJson, void* pObj) {
21,978✔
4537
  SSubplan* pNode = (SSubplan*)pObj;
21,978✔
4538

4539
  int32_t code = tjsonToObject(pJson, jkSubplanId, jsonToSubplanId, &pNode->id);
21,978✔
4540
  if (TSDB_CODE_SUCCESS == code) {
21,980!
4541
    tjsonGetNumberValue(pJson, jkSubplanType, pNode->subplanType, code);
21,980✔
4542
  }
4543
  if (TSDB_CODE_SUCCESS == code) {
21,981✔
4544
    code = tjsonGetIntValue(pJson, jkSubplanMsgType, &pNode->msgType);
21,980✔
4545
  }
4546
  if (TSDB_CODE_SUCCESS == code) {
21,982✔
4547
    code = tjsonGetIntValue(pJson, jkSubplanLevel, &pNode->level);
21,981✔
4548
  }
4549
  if (TSDB_CODE_SUCCESS == code) {
21,982✔
4550
    code = tjsonGetStringValue(pJson, jkSubplanDbFName, pNode->dbFName);
21,981✔
4551
  }
4552
  if (TSDB_CODE_SUCCESS == code) {
21,981✔
4553
    code = tjsonGetStringValue(pJson, jkSubplanUser, pNode->user);
21,980✔
4554
  }
4555
  if (TSDB_CODE_SUCCESS == code) {
21,982✔
4556
    code = tjsonToObject(pJson, jkSubplanNodeAddr, jsonToQueryNodeAddr, &pNode->execNode);
21,980✔
4557
  }
4558
  if (TSDB_CODE_SUCCESS == code) {
21,983✔
4559
    code = jsonToNodeList(pJson, jkSubplanChildren, &pNode->pChildren);
21,981✔
4560
  }
4561
  if (TSDB_CODE_SUCCESS == code) {
21,980✔
4562
    code = jsonToNodeObject(pJson, jkSubplanRootNode, (SNode**)&pNode->pNode);
21,979✔
4563
  }
4564
  if (TSDB_CODE_SUCCESS == code) {
21,981✔
4565
    code = jsonToNodeObject(pJson, jkSubplanDataSink, (SNode**)&pNode->pDataSink);
21,980✔
4566
  }
4567
  if (TSDB_CODE_SUCCESS == code) {
21,982✔
4568
    code = jsonToNodeObject(pJson, jkSubplanTagCond, (SNode**)&pNode->pTagCond);
21,980✔
4569
  }
4570
  if (TSDB_CODE_SUCCESS == code) {
21,983✔
4571
    code = jsonToNodeObject(pJson, jkSubplanTagIndexCond, (SNode**)&pNode->pTagIndexCond);
21,981✔
4572
  }
4573
  if (TSDB_CODE_SUCCESS == code) {
21,983✔
4574
    code = tjsonToObject(pJson, jkSubplanVTables, jsonToVtablesHash, &pNode->pVTables);
21,981✔
4575
  }
4576
  if (TSDB_CODE_SUCCESS == code) {
21,983✔
4577
    code = tjsonGetBoolValue(pJson, jkSubplanShowRewrite, &pNode->showRewrite);
21,981✔
4578
  }
4579
  if (TSDB_CODE_SUCCESS == code) {
21,983✔
4580
    code = tjsonGetBoolValue(pJson, jkSubplanIsView, &pNode->isView);
21,981✔
4581
  }
4582
  if (TSDB_CODE_SUCCESS == code) {
21,983✔
4583
    code = tjsonGetBoolValue(pJson, jkSubplanIsAudit, &pNode->isAudit);
21,981✔
4584
  }
4585
  if (TSDB_CODE_SUCCESS == code) {
21,983✔
4586
    code = tjsonGetIntValue(pJson, jkSubplanRowsThreshold, &pNode->rowsThreshold);
21,981✔
4587
  }
4588
  if (TSDB_CODE_SUCCESS == code) {
21,983✔
4589
    code = tjsonGetBoolValue(pJson, jkSubplanDynamicRowsThreshold, &pNode->dynamicRowThreshold);
21,981✔
4590
  }
4591
  if (TSDB_CODE_SUCCESS == code) {
21,983✔
4592
    SNode* pChild = NULL;
21,981✔
4593
    FOREACH(pChild, pNode->pChildren) {
25,003✔
4594
      if (nodeType(pChild) == QUERY_NODE_PHYSICAL_SUBPLAN) {
3,022✔
4595
        SSubplan* pSubplan = (SSubplan*)pChild;
1,690✔
4596
        code = nodesListMakeAppend(&pSubplan->pParents, (SNode*)pNode);
1,690✔
4597
      }
4598
    }
4599
  }
4600
  if (TSDB_CODE_SUCCESS == code) {
21,983✔
4601
    code = tjsonGetBoolValue(pJson, jkSubplanDynTbname, &pNode->dynTbname);
21,981✔
4602
  }
4603
  if (TSDB_CODE_SUCCESS == code) {
21,982✔
4604
    code = tjsonGetBoolValue(pJson, jkSubplanProcessOneBlock, &pNode->processOneBlock);
21,980✔
4605
  }
4606

4607
  return code;
21,979✔
4608
}
4609

4610
static const char* jkPlanQueryId = "QueryId";
4611
static const char* jkPlanNumOfSubplans = "NumOfSubplans";
4612
static const char* jkPlanSubplans = "Subplans";
4613

4614
static int32_t planToJson(const void* pObj, SJson* pJson) {
8,155,412✔
4615
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
8,155,412✔
4616

4617
  int32_t code = tjsonAddIntegerToObject(pJson, jkPlanQueryId, pNode->queryId);
8,155,412✔
4618
  if (TSDB_CODE_SUCCESS == code) {
8,222,757!
4619
    code = tjsonAddIntegerToObject(pJson, jkPlanNumOfSubplans, pNode->numOfSubplans);
8,224,081✔
4620
  }
4621
  if (TSDB_CODE_SUCCESS == code) {
8,222,072!
4622
    code = tjsonAddObject(pJson, jkPlanSubplans, nodeToJson, nodesListGetNode(pNode->pSubplans, 0));
8,225,417✔
4623
  }
4624

4625
  return code;
8,217,135✔
4626
}
4627

4628
static int32_t pushSubplan(SNode* pSubplan, int32_t level, SNodeList* pSubplans) {
3,177✔
4629
  SNodeListNode* pGroup = NULL;
3,177✔
4630
  if (level >= LIST_LENGTH(pSubplans)) {
3,177!
4631
    pGroup = NULL;
2,737✔
4632
    int32_t code = nodesMakeNode(QUERY_NODE_NODE_LIST, (SNode**)&pGroup);
2,737✔
4633
    if (NULL == pGroup) {
2,737!
4634
      return code;
×
4635
    }
4636
    if (TSDB_CODE_SUCCESS != nodesListStrictAppend(pSubplans, (SNode*)pGroup)) {
2,737!
4637
      return TSDB_CODE_OUT_OF_MEMORY;
×
4638
    }
4639
  } else {
4640
    pGroup = (SNodeListNode*)nodesListGetNode(pSubplans, level);
440✔
4641
  }
4642
  if (NULL == pGroup->pNodeList) {
3,177✔
4643
    int32_t code = nodesMakeList(&pGroup->pNodeList);
2,737✔
4644
    if (NULL == pGroup->pNodeList) {
2,737!
4645
      return code;
×
4646
    }
4647
  }
4648
  return nodesListAppend(pGroup->pNodeList, (SNode*)pSubplan);
3,177✔
4649
}
4650

4651
static int32_t buildSubplan(SSubplan* pSubplan, SQueryPlan* pQueryPlan) {
3,177✔
4652
  int32_t   code = TSDB_CODE_SUCCESS;
3,177✔
4653
  if (TSDB_CODE_SUCCESS == code) {
3,177!
4654
    code = pushSubplan((SNode*)pSubplan, pSubplan->level, pQueryPlan->pSubplans);
3,177✔
4655
    ++(pQueryPlan->numOfSubplans);
3,177✔
4656
  }
4657

4658
  if (TSDB_CODE_SUCCESS != code) {
3,177!
4659
    nodesDestroyNode((SNode*)pSubplan);
×
4660
    return code;
×
4661
  }
4662

4663
  if (TSDB_CODE_SUCCESS == code) {
3,177!
4664
    SNode* pChild = NULL;
3,177✔
4665
    FOREACH(pChild, pSubplan->pChildren) {
5,365✔
4666
      if (nodeType(pChild) == QUERY_NODE_PHYSICAL_SUBPLAN) {
2,188✔
4667
        code = buildSubplan((SSubplan*)pChild, pQueryPlan);
856✔
4668
        if (TSDB_CODE_SUCCESS != code) {
856!
4669
          break;
×
4670
        }
4671
      }
4672
    }
4673
  }
4674
  return code;
3,177✔
4675
}
4676

4677
static int32_t jsonToPlan(const SJson* pJson, void* pObj) {
2,315✔
4678
  SQueryPlan* pNode = (SQueryPlan*)pObj;
2,315✔
4679

4680
  int32_t code = tjsonGetUBigIntValue(pJson, jkPlanQueryId, &pNode->queryId);
2,315✔
4681
  int32_t numOfSubplan = 0;
2,315✔
4682
  if (TSDB_CODE_SUCCESS == code) {
2,315!
4683
    code = tjsonGetIntValue(pJson, jkPlanNumOfSubplans, &numOfSubplan);
2,315✔
4684
  }
4685
  SNodeListNode *pTopSubplan = NULL;
2,315✔
4686
  if (TSDB_CODE_SUCCESS == code) {
2,315!
4687
    code = jsonToNodeObject(pJson, jkPlanSubplans, (SNode**)&pTopSubplan);
2,315✔
4688
  }
4689
  if (TSDB_CODE_SUCCESS == code) {
2,315!
4690
    code = nodesMakeList(&pNode->pSubplans);
2,315✔
4691
  }
4692
  if (TSDB_CODE_SUCCESS == code && pTopSubplan) {
2,315!
4693
    SNode* pGroupItem = NULL;
2,315✔
4694
    FOREACH(pGroupItem, pTopSubplan->pNodeList) {
4,636!
4695
      if (nodeType(pGroupItem) == QUERY_NODE_PHYSICAL_SUBPLAN) {
2,321!
4696
        code = buildSubplan((SSubplan*)pGroupItem, pNode);
2,321✔
4697
        if (TSDB_CODE_SUCCESS != code) {
2,321!
4698
          break;
×
4699
        }
4700
      }
4701
    }
4702
  }
4703
  if (TSDB_CODE_SUCCESS == code) {
2,315!
4704
    nodesClearList(pTopSubplan->pNodeList);
2,315✔
4705
    pTopSubplan->pNodeList = NULL;
2,315✔
4706
    nodesDestroyNode((SNode *)pTopSubplan);
2,315✔
4707
    if (numOfSubplan != pNode->numOfSubplans) {
2,315!
4708
      code = TSDB_CODE_PLAN_INTERNAL_ERROR;
×
4709
      nodesError("%s toNode error numOfSubplan %d != %d", nodesNodeName(pNode->type), numOfSubplan, pNode->numOfSubplans);
×
4710
    }
4711
  }
4712

4713
  return code;
2,315✔
4714
}
4715

4716
static const char* jkAggLogicPlanGroupKeys = "GroupKeys";
4717
static const char* jkAggLogicPlanAggFuncs = "AggFuncs";
4718

4719
static int32_t logicAggNodeToJson(const void* pObj, SJson* pJson) {
3,564✔
4720
  const SAggLogicNode* pNode = (const SAggLogicNode*)pObj;
3,564✔
4721

4722
  int32_t code = logicPlanNodeToJson(pObj, pJson);
3,564✔
4723
  if (TSDB_CODE_SUCCESS == code) {
3,564!
4724
    code = nodeListToJson(pJson, jkAggLogicPlanGroupKeys, pNode->pGroupKeys);
3,564✔
4725
  }
4726
  if (TSDB_CODE_SUCCESS == code) {
3,564!
4727
    code = nodeListToJson(pJson, jkAggLogicPlanAggFuncs, pNode->pAggFuncs);
3,564✔
4728
  }
4729

4730
  return code;
3,564✔
4731
}
4732

4733
static int32_t jsonToLogicAggNode(const SJson* pJson, void* pObj) {
1,680✔
4734
  SAggLogicNode* pNode = (SAggLogicNode*)pObj;
1,680✔
4735

4736
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
1,680✔
4737
  if (TSDB_CODE_SUCCESS == code) {
1,680!
4738
    code = jsonToNodeList(pJson, jkAggLogicPlanGroupKeys, &pNode->pGroupKeys);
1,680✔
4739
  }
4740
  if (TSDB_CODE_SUCCESS == code) {
1,680!
4741
    code = jsonToNodeList(pJson, jkAggLogicPlanAggFuncs, &pNode->pAggFuncs);
1,680✔
4742
  }
4743

4744
  return code;
1,680✔
4745
}
4746

4747
static const char* jkDataTypeType = "Type";
4748
static const char* jkDataTypePrecision = "Precision";
4749
static const char* jkDataTypeScale = "Scale";
4750
static const char* jkDataTypeDataBytes = "Bytes";
4751

4752
static int32_t dataTypeToJson(const void* pObj, SJson* pJson) {
13,416,836✔
4753
  const SDataType* pNode = (const SDataType*)pObj;
13,416,836✔
4754

4755
  int32_t code = tjsonAddIntegerToObject(pJson, jkDataTypeType, pNode->type);
13,416,836✔
4756
  if (TSDB_CODE_SUCCESS == code) {
13,473,700!
4757
    code = tjsonAddIntegerToObject(pJson, jkDataTypePrecision, pNode->precision);
13,475,414✔
4758
  }
4759
  if (TSDB_CODE_SUCCESS == code) {
13,474,582!
4760
    code = tjsonAddIntegerToObject(pJson, jkDataTypeScale, pNode->scale);
13,478,091✔
4761
  }
4762
  if (TSDB_CODE_SUCCESS == code) {
13,475,804!
4763
    code = tjsonAddIntegerToObject(pJson, jkDataTypeDataBytes, pNode->bytes);
13,480,590✔
4764
  }
4765

4766
  return code;
13,480,014✔
4767
}
4768

4769
static int32_t jsonToDataType(const SJson* pJson, void* pObj) {
625,246✔
4770
  SDataType* pNode = (SDataType*)pObj;
625,246✔
4771

4772
  int32_t code = tjsonGetUTinyIntValue(pJson, jkDataTypeType, &pNode->type);
625,246✔
4773
  if (TSDB_CODE_SUCCESS == code) {
625,398!
4774
    code = tjsonGetUTinyIntValue(pJson, jkDataTypePrecision, &pNode->precision);
625,400✔
4775
  }
4776
  if (TSDB_CODE_SUCCESS == code) {
625,360✔
4777
    code = tjsonGetUTinyIntValue(pJson, jkDataTypeScale, &pNode->scale);
625,359✔
4778
  }
4779
  if (TSDB_CODE_SUCCESS == code) {
625,317✔
4780
    code = tjsonGetIntValue(pJson, jkDataTypeDataBytes, &pNode->bytes);
625,316✔
4781
  }
4782

4783
  return TSDB_CODE_SUCCESS;
625,375✔
4784
}
4785

4786
static const char* jkExprDataType = "DataType";
4787
static const char* jkExprAliasName = "AliasName";
4788
static const char* jkExprUserAlias = "UserAlias";
4789
static const char* jkExprRelateTo = "RelatedTo";
4790
static const char* jkExprBindExprID = "BindExprID";
4791

4792
static int32_t exprNodeToJson(const void* pObj, SJson* pJson) {
2,817,652✔
4793
  const SExprNode* pNode = (const SExprNode*)pObj;
2,817,652✔
4794

4795
  int32_t code = tjsonAddObject(pJson, jkExprDataType, dataTypeToJson, &pNode->resType);
2,817,652✔
4796
  if (TSDB_CODE_SUCCESS == code) {
2,820,354!
4797
    code = tjsonAddStringToObject(pJson, jkExprAliasName, pNode->aliasName);
2,820,399✔
4798
  }
4799
  if (TSDB_CODE_SUCCESS == code) {
2,819,946✔
4800
    code = tjsonAddStringToObject(pJson, jkExprUserAlias, pNode->userAlias);
2,819,767✔
4801
  }
4802
  if (TSDB_CODE_SUCCESS == code) {
2,819,861✔
4803
    code = tjsonAddIntegerToObject(pJson, jkExprRelateTo, pNode->relatedTo);
2,819,712✔
4804
  }
4805
  if (TSDB_CODE_SUCCESS == code) {
2,819,746✔
4806
    code = tjsonAddIntegerToObject(pJson, jkExprBindExprID, pNode->bindExprID);
2,819,617✔
4807
  }
4808

4809
  return code;
2,819,703✔
4810
}
4811

4812
static int32_t jsonToExprNode(const SJson* pJson, void* pObj) {
370,340✔
4813
  SExprNode* pNode = (SExprNode*)pObj;
370,340✔
4814

4815
  int32_t code = tjsonToObject(pJson, jkExprDataType, jsonToDataType, &pNode->resType);
370,340✔
4816
  if (TSDB_CODE_SUCCESS == code) {
370,385!
4817
    code = tjsonGetStringValue(pJson, jkExprAliasName, pNode->aliasName);
370,385✔
4818
  }
4819
  if (TSDB_CODE_SUCCESS == code) {
370,387!
4820
    code = tjsonGetStringValue(pJson, jkExprUserAlias, pNode->userAlias);
370,387✔
4821
  }
4822
  if (TSDB_CODE_SUCCESS == code) {
370,368!
4823
    code = tjsonGetIntValue(pJson, jkExprRelateTo, &pNode->relatedTo);
370,369✔
4824
  }
4825
  if (TSDB_CODE_SUCCESS == code) {
370,393!
4826
    code = tjsonGetIntValue(pJson, jkExprBindExprID, &pNode->bindExprID);
370,398✔
4827
  }
4828

4829
  return code;
370,395✔
4830
}
4831

4832
static const char* jkColumnTableId = "TableId";
4833
static const char* jkColumnTableType = "TableType";
4834
static const char* jkColumnColId = "ColId";
4835
static const char* jkColumnColType = "ColType";
4836
static const char* jkColumnProjId = "ProjId";
4837
static const char* jkColumnDbName = "DbName";
4838
static const char* jkColumnTableName = "TableName";
4839
static const char* jkColumnTableAlias = "TableAlias";
4840
static const char* jkColumnColName = "ColName";
4841
static const char* jkColumnDataBlockId = "DataBlockId";
4842
static const char* jkColumnSlotId = "SlotId";
4843
static const char* jkColumnTableHasPk = "TableHasPk";
4844
static const char* jkColumnIsPk = "IsPk";
4845
static const char* jkColumnNumOfPKs = "NumOfPKs";
4846
static const char* jkColumnHasRef = "HasRef";
4847
static const char* jkColumnHasDep = "HasDep";
4848
static const char* jkColumnRefDb = "RefDb";
4849
static const char* jkColumnRefTable = "RefTable";
4850
static const char* jkColumnRefCol = "RefCol";
4851
static const char* jkColumnIsPrimTs = "IsPrimTs";
4852

4853
static int32_t columnNodeToJson(const void* pObj, SJson* pJson) {
1,590,862✔
4854
  const SColumnNode* pNode = (const SColumnNode*)pObj;
1,590,862✔
4855

4856
  int32_t code = exprNodeToJson(pObj, pJson);
1,590,862✔
4857
  if (TSDB_CODE_SUCCESS == code) {
1,590,901!
4858
    code = tjsonAddIntegerToObject(pJson, jkColumnTableId, pNode->tableId);
1,590,909✔
4859
  }
4860
  if (TSDB_CODE_SUCCESS == code) {
1,590,937✔
4861
    code = tjsonAddIntegerToObject(pJson, jkColumnTableType, pNode->tableType);
1,590,927✔
4862
  }
4863
  if (TSDB_CODE_SUCCESS == code) {
1,590,948✔
4864
    code = tjsonAddIntegerToObject(pJson, jkColumnColId, pNode->colId);
1,590,942✔
4865
  }
4866
  if (TSDB_CODE_SUCCESS == code) {
1,590,937✔
4867
    code = tjsonAddIntegerToObject(pJson, jkColumnProjId, pNode->projIdx);
1,590,931✔
4868
  }
4869
  if (TSDB_CODE_SUCCESS == code) {
1,590,934✔
4870
    code = tjsonAddIntegerToObject(pJson, jkColumnColType, pNode->colType);
1,590,931✔
4871
  }
4872
  if (TSDB_CODE_SUCCESS == code) {
1,590,933✔
4873
    code = tjsonAddStringToObject(pJson, jkColumnDbName, pNode->dbName);
1,590,897✔
4874
  }
4875
  if (TSDB_CODE_SUCCESS == code) {
1,590,968✔
4876
    code = tjsonAddStringToObject(pJson, jkColumnTableName, pNode->tableName);
1,590,938✔
4877
  }
4878
  if (TSDB_CODE_SUCCESS == code) {
1,590,964✔
4879
    code = tjsonAddStringToObject(pJson, jkColumnTableAlias, pNode->tableAlias);
1,590,937✔
4880
  }
4881
  if (TSDB_CODE_SUCCESS == code) {
1,590,960✔
4882
    code = tjsonAddStringToObject(pJson, jkColumnColName, pNode->colName);
1,590,938✔
4883
  }
4884
  if (TSDB_CODE_SUCCESS == code) {
1,590,965✔
4885
    code = tjsonAddIntegerToObject(pJson, jkColumnDataBlockId, pNode->dataBlockId);
1,590,905✔
4886
  }
4887
  if (TSDB_CODE_SUCCESS == code) {
1,591,001✔
4888
    code = tjsonAddIntegerToObject(pJson, jkColumnSlotId, pNode->slotId);
1,590,943✔
4889
  }
4890
  if (TSDB_CODE_SUCCESS == code) {
1,590,993✔
4891
    code = tjsonAddBoolToObject(pJson, jkColumnTableHasPk, pNode->tableHasPk);
1,590,939✔
4892
  }
4893
  if (TSDB_CODE_SUCCESS == code) {
1,591,002✔
4894
    code = tjsonAddBoolToObject(pJson, jkColumnIsPk, pNode->isPk);
1,590,948✔
4895
  }
4896
  if (TSDB_CODE_SUCCESS == code) {
1,591,008✔
4897
    code = tjsonAddIntegerToObject(pJson, jkColumnNumOfPKs, pNode->numOfPKs);
1,590,932✔
4898
  }
4899
  if (TSDB_CODE_SUCCESS == code) {
1,591,007✔
4900
    code = tjsonAddBoolToObject(pJson, jkColumnHasDep, pNode->hasDep);
1,590,940✔
4901
  }
4902
  if (TSDB_CODE_SUCCESS == code) {
1,591,018✔
4903
    code = tjsonAddBoolToObject(pJson, jkRefColHasRef, pNode->hasRef);
1,590,954✔
4904
  }
4905
  if (TSDB_CODE_SUCCESS == code) {
1,591,007✔
4906
    code = tjsonAddStringToObject(pJson, jkColumnRefDb, pNode->refDbName);
1,590,944✔
4907
  }
4908
  if (TSDB_CODE_SUCCESS == code) {
1,590,991✔
4909
    code = tjsonAddStringToObject(pJson, jkColumnRefTable, pNode->refTableName);
1,590,906✔
4910
  }
4911
  if (TSDB_CODE_SUCCESS == code) {
1,591,027✔
4912
    code = tjsonAddStringToObject(pJson, jkColumnRefCol, pNode->refColName);
1,590,947✔
4913
  }
4914
  if (TSDB_CODE_SUCCESS == code) {
1,591,031✔
4915
    code = tjsonAddBoolToObject(pJson, jkColumnIsPrimTs, pNode->isPrimTs);
1,590,955✔
4916
  }
4917
  return code;
1,590,942✔
4918
}
4919

4920
static int32_t jsonToColumnNode(const SJson* pJson, void* pObj) {
201,627✔
4921
  SColumnNode* pNode = (SColumnNode*)pObj;
201,627✔
4922

4923
  int32_t code = jsonToExprNode(pJson, pObj);
201,627✔
4924
  if (TSDB_CODE_SUCCESS == code) {
201,664!
4925
    code = tjsonGetUBigIntValue(pJson, jkColumnTableId, &pNode->tableId);
201,664✔
4926
  }
4927
  if (TSDB_CODE_SUCCESS == code) {
201,666✔
4928
    code = tjsonGetTinyIntValue(pJson, jkColumnTableType, &pNode->tableType);
201,664✔
4929
  }
4930
  if (TSDB_CODE_SUCCESS == code) {
201,656✔
4931
    code = tjsonGetSmallIntValue(pJson, jkColumnColId, &pNode->colId);
201,655✔
4932
  }
4933
  if (TSDB_CODE_SUCCESS == code) {
201,660✔
4934
    code = tjsonGetSmallIntValue(pJson, jkColumnProjId, &pNode->projIdx);
201,659✔
4935
  }
4936
  if (TSDB_CODE_SUCCESS == code) {
201,662!
4937
    tjsonGetNumberValue(pJson, jkColumnColType, pNode->colType, code);
201,663✔
4938
  }
4939
  if (TSDB_CODE_SUCCESS == code) {
201,668!
4940
    code = tjsonGetStringValue(pJson, jkColumnDbName, pNode->dbName);
201,668✔
4941
  }
4942
  if (TSDB_CODE_SUCCESS == code) {
201,658!
4943
    code = tjsonGetStringValue(pJson, jkColumnTableName, pNode->tableName);
201,662✔
4944
  }
4945
  if (TSDB_CODE_SUCCESS == code) {
201,642!
4946
    code = tjsonGetStringValue(pJson, jkColumnTableAlias, pNode->tableAlias);
201,663✔
4947
  }
4948
  if (TSDB_CODE_SUCCESS == code) {
201,623!
4949
    code = tjsonGetStringValue(pJson, jkColumnColName, pNode->colName);
201,650✔
4950
  }
4951
  if (TSDB_CODE_SUCCESS == code) {
201,620!
4952
    code = tjsonGetSmallIntValue(pJson, jkColumnDataBlockId, &pNode->dataBlockId);
201,647✔
4953
  }
4954
  if (TSDB_CODE_SUCCESS == code) {
201,625!
4955
    code = tjsonGetSmallIntValue(pJson, jkColumnSlotId, &pNode->slotId);
201,652✔
4956
  }
4957
  if (TSDB_CODE_SUCCESS == code) {
201,656!
4958
    code = tjsonGetBoolValue(pJson, jkColumnTableHasPk, &pNode->tableHasPk);
201,686✔
4959
  }
4960
  if (TSDB_CODE_SUCCESS == code) {
201,630!
4961
    code = tjsonGetBoolValue(pJson, jkColumnIsPk, &pNode->isPk);
201,662✔
4962
  }
4963
  if (TSDB_CODE_SUCCESS == code) {
201,615!
4964
    code = tjsonGetSmallIntValue(pJson, jkColumnNumOfPKs, &pNode->numOfPKs);
201,643✔
4965
  }
4966
  if (TSDB_CODE_SUCCESS == code) {
201,643!
4967
    code = tjsonGetBoolValue(pJson, jkColumnHasDep, &pNode->hasDep);
201,673✔
4968
  }
4969
  if (TSDB_CODE_SUCCESS == code) {
201,626!
4970
    code = tjsonGetBoolValue(pJson, jkColumnHasRef, &pNode->hasRef);
201,656✔
4971
  }
4972
  if (TSDB_CODE_SUCCESS == code) {
201,617!
4973
    code = tjsonGetStringValue(pJson, jkColumnRefDb, pNode->refDbName);
201,650✔
4974
  }
4975
  if (TSDB_CODE_SUCCESS == code) {
201,629!
4976
    code = tjsonGetStringValue(pJson, jkColumnRefTable, pNode->refTableName);
201,665✔
4977
  }
4978
  if (TSDB_CODE_SUCCESS == code) {
201,622!
4979
    code = tjsonGetStringValue(pJson, jkColumnRefCol, pNode->refColName);
201,661✔
4980
  }
4981
  if (TSDB_CODE_SUCCESS == code) {
201,595!
4982
    code = tjsonGetBoolValue(pJson, jkColumnIsPrimTs, &pNode->isPrimTs);
201,640✔
4983
  }
4984
  return code;
201,653✔
4985
}
4986

4987
static const char* jkValueLiteralSize = "LiteralSize";
4988
static const char* jkValueLiteral = "Literal";
4989
static const char* jkValueFlag = "Flag";
4990
static const char* jkValueTranslate = "Translate";
4991
static const char* jkValueNotReserved = "NotReserved";
4992
static const char* jkValueIsNull = "IsNull";
4993
static const char* jkValueUnit = "Unit";
4994
static const char* jkValueDatum = "Datum";
4995

4996
static int32_t datumToJson(const void* pObj, SJson* pJson) {
708,014✔
4997
  const SValueNode* pNode = (const SValueNode*)pObj;
708,014✔
4998

4999
  int32_t code = TSDB_CODE_SUCCESS;
708,014✔
5000
  switch (pNode->node.resType.type) {
708,014!
5001
    case TSDB_DATA_TYPE_NULL:
×
5002
      break;
×
5003
    case TSDB_DATA_TYPE_BOOL:
333✔
5004
      code = tjsonAddBoolToObject(pJson, jkValueDatum, pNode->datum.b);
333✔
5005
      break;
333✔
5006
    case TSDB_DATA_TYPE_TINYINT:
690,778✔
5007
    case TSDB_DATA_TYPE_SMALLINT:
5008
    case TSDB_DATA_TYPE_INT:
5009
    case TSDB_DATA_TYPE_BIGINT:
5010
    case TSDB_DATA_TYPE_TIMESTAMP:
5011
      code = tjsonAddIntegerToObject(pJson, jkValueDatum, pNode->datum.i);
690,778✔
5012
      break;
690,940✔
5013
    case TSDB_DATA_TYPE_UTINYINT:
24✔
5014
    case TSDB_DATA_TYPE_USMALLINT:
5015
    case TSDB_DATA_TYPE_UINT:
5016
    case TSDB_DATA_TYPE_UBIGINT:
5017
      code = tjsonAddIntegerToObject(pJson, jkValueDatum, pNode->datum.u);
24✔
5018
      break;
24✔
5019
    case TSDB_DATA_TYPE_FLOAT:
478✔
5020
    case TSDB_DATA_TYPE_DOUBLE:
5021
      code = tjsonAddDoubleToObject(pJson, jkValueDatum, pNode->datum.d);
478✔
5022
      break;
478✔
5023
    case TSDB_DATA_TYPE_NCHAR: {
×
5024
      // cJSON only support utf-8 encoding. Convert memory content to hex string.
5025
      int32_t bufSize = varDataLen(pNode->datum.p) * 2 + 1;
×
5026
      char*   buf = taosMemoryCalloc(bufSize, sizeof(char));
×
5027
      if (!buf) return terrno;
×
5028
      code = taosHexEncode(varDataVal(pNode->datum.p), buf, varDataLen(pNode->datum.p), bufSize);
×
5029
      if (code != TSDB_CODE_SUCCESS) {
×
5030
        taosMemoryFree(buf);
×
5031
        return TSDB_CODE_TSC_INVALID_VALUE;
×
5032
      }
5033
      code = tjsonAddStringToObject(pJson, jkValueDatum, buf);
×
5034
      taosMemoryFree(buf);
×
5035
      break;
×
5036
    }
5037
    case TSDB_DATA_TYPE_VARCHAR:
16,397✔
5038
    case TSDB_DATA_TYPE_VARBINARY:
5039
    case TSDB_DATA_TYPE_GEOMETRY:
5040
      code = tjsonAddStringToObject(pJson, jkValueDatum, varDataVal(pNode->datum.p));
16,397✔
5041
      break;
16,399✔
5042
    case TSDB_DATA_TYPE_JSON: {
×
5043
      int32_t len = getJsonValueLen(pNode->datum.p);
×
5044
      int32_t bufSize = len * 2 + 1;
×
5045
      char*   buf = taosMemoryCalloc(bufSize, sizeof(char));
×
5046
      if (!buf) return terrno;
×
5047
      code = taosHexEncode(pNode->datum.p, buf, len, bufSize);
×
5048
      if (code != TSDB_CODE_SUCCESS) {
×
5049
        taosMemoryFree(buf);
×
5050
        return TSDB_CODE_TSC_INVALID_VALUE;
×
5051
      }
5052
      code = tjsonAddStringToObject(pJson, jkValueDatum, buf);
×
5053
      taosMemoryFree(buf);
×
5054
      break;
×
5055
    }
5056
    case TSDB_DATA_TYPE_DECIMAL:
×
5057
      break;
×
5058
    case TSDB_DATA_TYPE_BLOB:
×
5059
      code = tjsonAddStringToObject(pJson, jkValueDatum, blobDataVal(pNode->datum.p));
×
5060
      // todo
5061
    default:
×
5062
      break;
×
5063
  }
5064

5065
  return code;
708,174✔
5066
}
5067

5068
static int32_t valueNodeToJson(const void* pObj, SJson* pJson) {
714,124✔
5069
  const SValueNode* pNode = (const SValueNode*)pObj;
714,124✔
5070

5071
  int32_t code = exprNodeToJson(pObj, pJson);
714,124✔
5072
  if (TSDB_CODE_SUCCESS == code) {
714,764!
5073
    code = tjsonAddIntegerToObject(pJson, jkValueLiteralSize, NULL != pNode->literal ? strlen(pNode->literal) : 0);
714,783✔
5074
  }
5075
  if (TSDB_CODE_SUCCESS == code && NULL != pNode->literal) {
715,302!
5076
    code = tjsonAddStringToObject(pJson, jkValueLiteral, pNode->literal);
687,800✔
5077
  }
5078
  if (TSDB_CODE_SUCCESS == code) {
715,771!
5079
    code = tjsonAddBoolToObject(pJson, jkValueFlag, pNode->flag);
715,821✔
5080
  }
5081
  if (TSDB_CODE_SUCCESS == code) {
715,393!
5082
    code = tjsonAddBoolToObject(pJson, jkValueTranslate, pNode->translate);
715,464✔
5083
  }
5084
  if (TSDB_CODE_SUCCESS == code) {
715,671✔
5085
    code = tjsonAddBoolToObject(pJson, jkValueNotReserved, pNode->notReserved);
715,338✔
5086
  }
5087
  if (TSDB_CODE_SUCCESS == code) {
715,878✔
5088
    code = tjsonAddBoolToObject(pJson, jkValueIsNull, pNode->isNull);
715,558✔
5089
  }
5090
  if (TSDB_CODE_SUCCESS == code) {
716,011✔
5091
    code = tjsonAddIntegerToObject(pJson, jkValueUnit, pNode->unit);
715,711✔
5092
  }
5093
  if (TSDB_CODE_SUCCESS == code && pNode->translate && !pNode->isNull) {
715,313✔
5094
    code = datumToJson(pNode, pJson);
708,022✔
5095
  }
5096

5097
  return code;
713,809✔
5098
}
5099

5100
static int32_t jsonToDatum(const SJson* pJson, void* pObj) {
62,564✔
5101
  SValueNode* pNode = (SValueNode*)pObj;
62,564✔
5102

5103
  int32_t code = TSDB_CODE_SUCCESS;
62,564✔
5104
  switch (pNode->node.resType.type) {
62,564!
5105
    case TSDB_DATA_TYPE_NULL:
×
5106
      break;
×
5107
    case TSDB_DATA_TYPE_BOOL:
144✔
5108
      code = tjsonGetBoolValue(pJson, jkValueDatum, &pNode->datum.b);
144✔
5109
      *(bool*)&pNode->typeData = pNode->datum.b;
144✔
5110
      break;
144✔
5111
    case TSDB_DATA_TYPE_TINYINT:
20,085✔
5112
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
20,085✔
5113
      *(int8_t*)&pNode->typeData = pNode->datum.i;
20,085✔
5114
      break;
20,085✔
5115
    case TSDB_DATA_TYPE_SMALLINT:
×
5116
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
×
5117
      *(int16_t*)&pNode->typeData = pNode->datum.i;
×
5118
      break;
×
5119
    case TSDB_DATA_TYPE_INT:
1,828✔
5120
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
1,828✔
5121
      *(int32_t*)&pNode->typeData = pNode->datum.i;
1,828✔
5122
      break;
1,828✔
5123
    case TSDB_DATA_TYPE_BIGINT:
14,826✔
5124
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
14,826✔
5125
      *(int64_t*)&pNode->typeData = pNode->datum.i;
14,826✔
5126
      break;
14,826✔
5127
    case TSDB_DATA_TYPE_TIMESTAMP:
8,718✔
5128
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
8,718✔
5129
      *(int64_t*)&pNode->typeData = pNode->datum.i;
8,718✔
5130
      break;
8,718✔
5131
    case TSDB_DATA_TYPE_UTINYINT:
×
5132
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
5133
      *(uint8_t*)&pNode->typeData = pNode->datum.u;
×
5134
      break;
×
5135
    case TSDB_DATA_TYPE_USMALLINT:
×
5136
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
5137
      *(uint16_t*)&pNode->typeData = pNode->datum.u;
×
5138
      break;
×
5139
    case TSDB_DATA_TYPE_UINT:
×
5140
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
5141
      *(uint32_t*)&pNode->typeData = pNode->datum.u;
×
5142
      break;
×
5143
    case TSDB_DATA_TYPE_UBIGINT:
18✔
5144
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
18✔
5145
      *(uint64_t*)&pNode->typeData = pNode->datum.u;
18✔
5146
      break;
18✔
5147
    case TSDB_DATA_TYPE_FLOAT:
×
5148
      code = tjsonGetDoubleValue(pJson, jkValueDatum, &pNode->datum.d);
×
5149
      *(float*)&pNode->typeData = pNode->datum.d;
×
5150
      break;
×
5151
    case TSDB_DATA_TYPE_DOUBLE:
50✔
5152
      code = tjsonGetDoubleValue(pJson, jkValueDatum, &pNode->datum.d);
50✔
5153
      *(double*)&pNode->typeData = pNode->datum.d;
50✔
5154
      break;
50✔
5155
    case TSDB_DATA_TYPE_NCHAR:
16,895✔
5156
    case TSDB_DATA_TYPE_VARCHAR:
5157
    case TSDB_DATA_TYPE_VARBINARY:
5158
    case TSDB_DATA_TYPE_GEOMETRY: {
5159
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
16,895!
5160
      if (NULL == pNode->datum.p) {
16,895!
5161
        code = terrno;
×
5162
        break;
×
5163
      }
5164
      varDataSetLen(pNode->datum.p, pNode->node.resType.bytes - VARSTR_HEADER_SIZE);
16,895✔
5165
      if (TSDB_DATA_TYPE_NCHAR == pNode->node.resType.type) {
16,895!
5166
        char* buf = taosMemoryCalloc(1, pNode->node.resType.bytes * 2 + VARSTR_HEADER_SIZE + 1);
×
5167
        if (NULL == buf) {
×
5168
          code = terrno;
×
5169
          break;
×
5170
        }
5171
        code = tjsonGetStringValue(pJson, jkValueDatum, buf);
×
5172
        if (code != TSDB_CODE_SUCCESS) {
×
5173
          taosMemoryFree(buf);
×
5174
          break;
×
5175
        }
5176
        code = taosHexDecode(buf, varDataVal(pNode->datum.p), pNode->node.resType.bytes - VARSTR_HEADER_SIZE);
×
5177
        if (code != TSDB_CODE_SUCCESS) {
×
5178
          taosMemoryFree(buf);
×
5179
          break;
×
5180
        }
5181
        taosMemoryFree(buf);
×
5182
      } else {
5183
        code = tjsonGetStringValue(pJson, jkValueDatum, varDataVal(pNode->datum.p));
16,895✔
5184
      }
5185
      break;
16,895✔
5186
    }
5187
    case TSDB_DATA_TYPE_JSON: {
×
5188
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes);
×
5189
      if (NULL == pNode->datum.p) {
×
5190
        code = terrno;
×
5191
        break;
×
5192
      }
5193
      char* buf = taosMemoryCalloc(1, pNode->node.resType.bytes * 2 + 1);
×
5194
      if (NULL == buf) {
×
5195
        code = terrno;
×
5196
        break;
×
5197
      }
5198
      code = tjsonGetStringValue(pJson, jkValueDatum, buf);
×
5199
      if (code != TSDB_CODE_SUCCESS) {
×
5200
        taosMemoryFree(buf);
×
5201
        break;
×
5202
      }
5203
      code = taosHexDecode(buf, pNode->datum.p, pNode->node.resType.bytes);
×
5204
      if (code != TSDB_CODE_SUCCESS) {
×
5205
        taosMemoryFree(buf);
×
5206
        break;
×
5207
      }
5208
      taosMemoryFree(buf);
×
5209
      break;
×
5210
    }
5211
    case TSDB_DATA_TYPE_DECIMAL:
×
5212
      break;
×
5213
    case TSDB_DATA_TYPE_BLOB: {
×
5214
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
×
5215
      if (NULL == pNode->datum.p) {
×
5216
        code = terrno;
×
5217
        break;
×
5218
      }
5219
      blobDataSetLen(pNode->datum.p, pNode->node.resType.bytes - BLOBSTR_HEADER_SIZE);
×
5220
      code = tjsonGetStringValue(pJson, jkValueDatum, blobDataVal(pNode->datum.p));
×
5221
      break;
×
5222
    }
5223
      // todo
5224
    default:
×
5225
      break;
×
5226
  }
5227

5228
  return code;
62,564✔
5229
}
5230

5231
static int32_t jsonToValueNode(const SJson* pJson, void* pObj) {
68,107✔
5232
  SValueNode* pNode = (SValueNode*)pObj;
68,107✔
5233

5234
  int32_t code = jsonToExprNode(pJson, pObj);
68,107✔
5235
  int32_t literalSize = 0;
68,108✔
5236
  if (TSDB_CODE_SUCCESS == code) {
68,108!
5237
    code = tjsonGetIntValue(pJson, jkValueLiteralSize, &literalSize);
68,108✔
5238
  }
5239
  if (TSDB_CODE_SUCCESS == code && literalSize > 0) {
68,108!
5240
    code = tjsonDupStringValue(pJson, jkValueLiteral, &pNode->literal);
46,856✔
5241
  }
5242
  if (TSDB_CODE_SUCCESS == code) {
68,107!
5243
    code = tjsonGetIntValue(pJson, jkValueFlag, &pNode->flag);
68,107✔
5244
  }
5245
  if (TSDB_CODE_SUCCESS == code) {
68,107!
5246
    code = tjsonGetBoolValue(pJson, jkValueTranslate, &pNode->translate);
68,107✔
5247
  }
5248
  if (TSDB_CODE_SUCCESS == code) {
68,107!
5249
    code = tjsonGetBoolValue(pJson, jkValueNotReserved, &pNode->notReserved);
68,107✔
5250
  }
5251
  if (TSDB_CODE_SUCCESS == code) {
68,107!
5252
    code = tjsonGetBoolValue(pJson, jkValueIsNull, &pNode->isNull);
68,108✔
5253
  }
5254
  if (TSDB_CODE_SUCCESS == code) {
68,107!
5255
    code = tjsonGetTinyIntValue(pJson, jkValueUnit, &pNode->unit);
68,108✔
5256
  }
5257
  if (TSDB_CODE_SUCCESS == code && pNode->translate && !pNode->isNull) {
68,105!
5258
    code = jsonToDatum(pJson, pNode);
62,563✔
5259
  }
5260

5261
  return code;
68,107✔
5262
}
5263

5264
static const char* jkOperatorType = "OpType";
5265
static const char* jkOperatorLeft = "Left";
5266
static const char* jkOperatorRight = "Right";
5267

5268
static int32_t operatorNodeToJson(const void* pObj, SJson* pJson) {
38,318✔
5269
  const SOperatorNode* pNode = (const SOperatorNode*)pObj;
38,318✔
5270

5271
  int32_t code = exprNodeToJson(pObj, pJson);
38,318✔
5272
  if (TSDB_CODE_SUCCESS == code) {
38,318!
5273
    code = tjsonAddIntegerToObject(pJson, jkOperatorType, pNode->opType);
38,318✔
5274
  }
5275
  if (TSDB_CODE_SUCCESS == code) {
38,320!
5276
    code = tjsonAddObject(pJson, jkOperatorLeft, nodeToJson, pNode->pLeft);
38,320✔
5277
  }
5278
  if (TSDB_CODE_SUCCESS == code) {
38,320!
5279
    code = tjsonAddObject(pJson, jkOperatorRight, nodeToJson, pNode->pRight);
38,320✔
5280
  }
5281

5282
  return code;
38,319✔
5283
}
5284

5285
static int32_t jsonToOperatorNode(const SJson* pJson, void* pObj) {
40,736✔
5286
  SOperatorNode* pNode = (SOperatorNode*)pObj;
40,736✔
5287

5288
  int32_t code = jsonToExprNode(pJson, pObj);
40,736✔
5289
  if (TSDB_CODE_SUCCESS == code) {
40,736!
5290
    tjsonGetNumberValue(pJson, jkOperatorType, pNode->opType, code);
40,736✔
5291
  }
5292
  if (TSDB_CODE_SUCCESS == code) {
40,737!
5293
    code = jsonToNodeObject(pJson, jkOperatorLeft, &pNode->pLeft);
40,737✔
5294
  }
5295
  if (TSDB_CODE_SUCCESS == code) {
40,736!
5296
    code = jsonToNodeObject(pJson, jkOperatorRight, &pNode->pRight);
40,736✔
5297
  }
5298

5299
  return code;
40,735✔
5300
}
5301

5302
static const char* jkLogicCondType = "CondType";
5303
static const char* jkLogicCondParameters = "Parameters";
5304

5305
static int32_t logicConditionNodeToJson(const void* pObj, SJson* pJson) {
6,672✔
5306
  const SLogicConditionNode* pNode = (const SLogicConditionNode*)pObj;
6,672✔
5307

5308
  int32_t code = exprNodeToJson(pObj, pJson);
6,672✔
5309
  if (TSDB_CODE_SUCCESS == code) {
6,679!
5310
    code = tjsonAddIntegerToObject(pJson, jkLogicCondType, pNode->condType);
6,679✔
5311
  }
5312
  if (TSDB_CODE_SUCCESS == code) {
6,679!
5313
    code = nodeListToJson(pJson, jkLogicCondParameters, pNode->pParameterList);
6,679✔
5314
  }
5315

5316
  return code;
6,679✔
5317
}
5318

5319
static int32_t jsonToLogicConditionNode(const SJson* pJson, void* pObj) {
8,045✔
5320
  SLogicConditionNode* pNode = (SLogicConditionNode*)pObj;
8,045✔
5321

5322
  int32_t code = jsonToExprNode(pJson, pObj);
8,045✔
5323
  if (TSDB_CODE_SUCCESS == code) {
8,045!
5324
    tjsonGetNumberValue(pJson, jkLogicCondType, pNode->condType, code);
8,045✔
5325
  }
5326
  if (TSDB_CODE_SUCCESS == code) {
8,045!
5327
    code = jsonToNodeList(pJson, jkLogicCondParameters, &pNode->pParameterList);
8,045✔
5328
  }
5329

5330
  return code;
8,045✔
5331
}
5332

5333
static const char* jkFunctionName = "Name";
5334
static const char* jkFunctionId = "Id";
5335
static const char* jkFunctionType = "Type";
5336
static const char* jkFunctionParameter = "Parameters";
5337
static const char* jkFunctionUdfBufSize = "UdfBufSize";
5338
static const char* jkFunctionHasPk = "HasPk";
5339
static const char* jkFunctionPkBytes = "PkBytes";
5340
static const char* jkFunctionIsMergeFunc = "IsMergeFunc";
5341
static const char* jkFunctionMergeFuncOf = "MergeFuncOf";
5342
static const char* jkFunctionTrimType = "TrimType";
5343
static const char* jkFunctionSrcFuncInputDT = "SrcFuncInputDataType";
5344

5345
static int32_t functionNodeToJson(const void* pObj, SJson* pJson) {
457,985✔
5346
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
457,985✔
5347

5348
  int32_t code = exprNodeToJson(pObj, pJson);
457,985✔
5349
  if (TSDB_CODE_SUCCESS == code) {
458,014!
5350
    code = tjsonAddStringToObject(pJson, jkFunctionName, pNode->functionName);
458,018✔
5351
  }
5352
  if (TSDB_CODE_SUCCESS == code) {
458,013✔
5353
    code = tjsonAddIntegerToObject(pJson, jkFunctionId, pNode->funcId);
458,007✔
5354
  }
5355
  if (TSDB_CODE_SUCCESS == code) {
458,022✔
5356
    code = tjsonAddIntegerToObject(pJson, jkFunctionType, pNode->funcType);
458,016✔
5357
  }
5358
  if (TSDB_CODE_SUCCESS == code) {
458,014✔
5359
    code = nodeListToJson(pJson, jkFunctionParameter, pNode->pParameterList);
458,009✔
5360
  }
5361
  if (TSDB_CODE_SUCCESS == code) {
458,018✔
5362
    code = tjsonAddIntegerToObject(pJson, jkFunctionUdfBufSize, pNode->udfBufSize);
458,016✔
5363
  }
5364
  if (TSDB_CODE_SUCCESS == code) {
458,026✔
5365
    code = tjsonAddBoolToObject(pJson, jkFunctionHasPk, pNode->hasPk);
458,019✔
5366
  }
5367
  if (TSDB_CODE_SUCCESS == code) {
458,031✔
5368
    code = tjsonAddIntegerToObject(pJson, jkFunctionPkBytes, pNode->pkBytes);
458,025✔
5369
  }
5370
  if (TSDB_CODE_SUCCESS == code) {
458,027✔
5371
    code = tjsonAddBoolToObject(pJson, jkFunctionIsMergeFunc, pNode->hasOriginalFunc);
458,023✔
5372
  }
5373
  if (TSDB_CODE_SUCCESS == code) {
458,027✔
5374
    code = tjsonAddIntegerToObject(pJson, jkFunctionMergeFuncOf, pNode->originalFuncId);
458,024✔
5375
  }
5376
  if (TSDB_CODE_SUCCESS == code) {
458,021✔
5377
    code = tjsonAddIntegerToObject(pJson, jkFunctionTrimType, pNode->trimType);
458,006✔
5378
  }
5379
  if (TSDB_CODE_SUCCESS == code) {
458,033✔
5380
    code = tjsonAddObject(pJson, jkFunctionSrcFuncInputDT, dataTypeToJson, &pNode->srcFuncInputType);
458,020✔
5381
  }
5382
  return code;
458,024✔
5383
}
5384

5385
static int32_t jsonToFunctionNode(const SJson* pJson, void* pObj) {
42,198✔
5386
  SFunctionNode* pNode = (SFunctionNode*)pObj;
42,198✔
5387

5388
  int32_t code = jsonToExprNode(pJson, pObj);
42,198✔
5389
  if (TSDB_CODE_SUCCESS == code) {
42,199!
5390
    code = tjsonGetStringValue(pJson, jkFunctionName, pNode->functionName);
42,199✔
5391
  }
5392
  if (TSDB_CODE_SUCCESS == code) {
42,201!
5393
    code = tjsonGetIntValue(pJson, jkFunctionId, &pNode->funcId);
42,201✔
5394
  }
5395
  if (TSDB_CODE_SUCCESS == code) {
42,200!
5396
    code = tjsonGetIntValue(pJson, jkFunctionType, &pNode->funcType);
42,200✔
5397
  }
5398
  if (TSDB_CODE_SUCCESS == code) {
42,200✔
5399
    code = jsonToNodeList(pJson, jkFunctionParameter, &pNode->pParameterList);
42,199✔
5400
  }
5401
  if (TSDB_CODE_SUCCESS == code) {
42,201✔
5402
    code = tjsonGetIntValue(pJson, jkFunctionUdfBufSize, &pNode->udfBufSize);
42,200✔
5403
  }
5404
  if (TSDB_CODE_SUCCESS == code) {
42,201✔
5405
    code = tjsonGetBoolValue(pJson, jkFunctionHasPk, &pNode->hasPk);
42,200✔
5406
  }
5407
  if (TSDB_CODE_SUCCESS == code) {
42,202✔
5408
    code = tjsonGetIntValue(pJson, jkFunctionPkBytes, &pNode->pkBytes);
42,201✔
5409
  }
5410
  if (TSDB_CODE_SUCCESS == code) {
42,202✔
5411
    code = tjsonGetBoolValue(pJson, jkFunctionIsMergeFunc, &pNode->hasOriginalFunc);
42,200✔
5412
  }
5413
  if (TSDB_CODE_SUCCESS == code) {
42,203✔
5414
    code = tjsonGetIntValue(pJson, jkFunctionMergeFuncOf, &pNode->originalFuncId);
42,201✔
5415
  }
5416
  if (TSDB_CODE_SUCCESS == code) {
42,203✔
5417
    tjsonGetNumberValue(pJson, jkFunctionTrimType, pNode->trimType, code);
42,201✔
5418
  }
5419
  if (TSDB_CODE_SUCCESS == code) {
42,203✔
5420
    code = tjsonToObject(pJson, jkFunctionSrcFuncInputDT, jsonToDataType, &pNode->srcFuncInputType);
42,201✔
5421
  }
5422

5423
  return code;
42,201✔
5424
}
5425

5426
static const char* jkTableDbName = "DbName";
5427
static const char* jkTableTableName = "tableName";
5428
static const char* jkTableTableAlias = "tableAlias";
5429

5430
static int32_t tableNodeToJson(const void* pObj, SJson* pJson) {
9,974✔
5431
  const STableNode* pNode = (const STableNode*)pObj;
9,974✔
5432

5433
  int32_t code = exprNodeToJson(pObj, pJson);
9,974✔
5434
  if (TSDB_CODE_SUCCESS == code) {
9,974!
5435
    code = tjsonAddStringToObject(pJson, jkTableDbName, pNode->dbName);
9,974✔
5436
  }
5437
  if (TSDB_CODE_SUCCESS == code) {
9,974!
5438
    code = tjsonAddStringToObject(pJson, jkTableTableName, pNode->tableName);
9,974✔
5439
  }
5440
  if (TSDB_CODE_SUCCESS == code) {
9,974!
5441
    code = tjsonAddStringToObject(pJson, jkTableTableAlias, pNode->tableAlias);
9,974✔
5442
  }
5443

5444
  return code;
9,974✔
5445
}
5446

5447
static int32_t jsonToTableNode(const SJson* pJson, void* pObj) {
9,362✔
5448
  STableNode* pNode = (STableNode*)pObj;
9,362✔
5449

5450
  int32_t code = jsonToExprNode(pJson, pObj);
9,362✔
5451
  if (TSDB_CODE_SUCCESS == code) {
9,362!
5452
    code = tjsonGetStringValue(pJson, jkTableDbName, pNode->dbName);
9,362✔
5453
  }
5454
  if (TSDB_CODE_SUCCESS == code) {
9,362!
5455
    code = tjsonGetStringValue(pJson, jkTableTableName, pNode->tableName);
9,362✔
5456
  }
5457
  if (TSDB_CODE_SUCCESS == code) {
9,362!
5458
    code = tjsonGetStringValue(pJson, jkTableTableAlias, pNode->tableAlias);
9,362✔
5459
  }
5460

5461
  return code;
9,362✔
5462
}
5463

5464
static const char* jkTableIndexInfoIntervalUnit = "IntervalUnit";
5465
static const char* jkTableIndexInfoSlidingUnit = "SlidingUnit";
5466
static const char* jkTableIndexInfoInterval = "Interval";
5467
static const char* jkTableIndexInfoOffset = "Offset";
5468
static const char* jkTableIndexInfoSliding = "Sliding";
5469
static const char* jkTableIndexInfoDstTbUid = "DstTbUid";
5470
static const char* jkTableIndexInfoDstVgId = "DstVgId";
5471
static const char* jkTableIndexInfoEpSet = "EpSet";
5472
static const char* jkTableIndexInfoExpr = "Expr";
5473

5474
static int32_t tableIndexInfoToJson(const void* pObj, SJson* pJson) {
×
5475
  const STableIndexInfo* pNode = (const STableIndexInfo*)pObj;
×
5476

5477
  int32_t code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoIntervalUnit, pNode->intervalUnit);
×
5478
  if (TSDB_CODE_SUCCESS == code) {
×
5479
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoSlidingUnit, pNode->slidingUnit);
×
5480
  }
5481
  if (TSDB_CODE_SUCCESS == code) {
×
5482
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoInterval, pNode->interval);
×
5483
  }
5484
  if (TSDB_CODE_SUCCESS == code) {
×
5485
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoOffset, pNode->offset);
×
5486
  }
5487
  if (TSDB_CODE_SUCCESS == code) {
×
5488
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoSliding, pNode->sliding);
×
5489
  }
5490
  if (TSDB_CODE_SUCCESS == code) {
×
5491
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoDstTbUid, pNode->dstTbUid);
×
5492
  }
5493
  if (TSDB_CODE_SUCCESS == code) {
×
5494
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoDstVgId, pNode->dstVgId);
×
5495
  }
5496
  if (TSDB_CODE_SUCCESS == code) {
×
5497
    code = tjsonAddObject(pJson, jkTableIndexInfoEpSet, epSetToJson, &pNode->epSet);
×
5498
  }
5499
  if (TSDB_CODE_SUCCESS == code) {
×
5500
    code = tjsonAddStringToObject(pJson, jkTableIndexInfoExpr, pNode->expr);
×
5501
  }
5502

5503
  return code;
×
5504
}
5505

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

5509
  int32_t code = tjsonGetTinyIntValue(pJson, jkTableIndexInfoIntervalUnit, &pNode->intervalUnit);
×
5510
  if (TSDB_CODE_SUCCESS == code) {
×
5511
    code = tjsonGetTinyIntValue(pJson, jkTableIndexInfoSlidingUnit, &pNode->slidingUnit);
×
5512
  }
5513
  if (TSDB_CODE_SUCCESS == code) {
×
5514
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoInterval, &pNode->interval);
×
5515
  }
5516
  if (TSDB_CODE_SUCCESS == code) {
×
5517
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoOffset, &pNode->offset);
×
5518
  }
5519
  if (TSDB_CODE_SUCCESS == code) {
×
5520
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoSliding, &pNode->sliding);
×
5521
  }
5522
  if (TSDB_CODE_SUCCESS == code) {
×
5523
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoDstTbUid, &pNode->dstTbUid);
×
5524
  }
5525
  if (TSDB_CODE_SUCCESS == code) {
×
5526
    code = tjsonGetIntValue(pJson, jkTableIndexInfoDstVgId, &pNode->dstVgId);
×
5527
  }
5528
  if (TSDB_CODE_SUCCESS == code) {
×
5529
    code = tjsonToObject(pJson, jkTableIndexInfoEpSet, jsonToEpSet, &pNode->epSet);
×
5530
  }
5531
  if (TSDB_CODE_SUCCESS == code) {
×
5532
    code = tjsonDupStringValue(pJson, jkTableIndexInfoExpr, &pNode->expr);
×
5533
  }
5534

5535
  return code;
×
5536
}
5537

5538
static const char* jkRealTableMetaSize = "MetaSize";
5539
static const char* jkRealTableMeta = "Meta";
5540
static const char* jkRealTableVgroupsInfoSize = "VgroupsInfoSize";
5541
static const char* jkRealTableVgroupsInfo = "VgroupsInfo";
5542
static const char* jkRealTableSmaIndexes = "SmaIndexes";
5543

5544
static int32_t realTableNodeToJson(const void* pObj, SJson* pJson) {
9,206✔
5545
  const SRealTableNode* pNode = (const SRealTableNode*)pObj;
9,206✔
5546

5547
  int32_t code = tableNodeToJson(pObj, pJson);
9,206✔
5548
  if (TSDB_CODE_SUCCESS == code) {
9,206!
5549
    code = tjsonAddIntegerToObject(pJson, jkRealTableMetaSize, TABLE_META_SIZE(pNode->pMeta));
9,206✔
5550
  }
5551
  if (TSDB_CODE_SUCCESS == code) {
9,206!
5552
    code = tjsonAddObject(pJson, jkRealTableMeta, tableMetaToJson, pNode->pMeta);
9,206✔
5553
  }
5554
  if (TSDB_CODE_SUCCESS == code) {
9,206!
5555
    code = tjsonAddIntegerToObject(pJson, jkRealTableVgroupsInfoSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
9,206✔
5556
  }
5557
  if (TSDB_CODE_SUCCESS == code) {
9,206!
5558
    code = tjsonAddObject(pJson, jkRealTableVgroupsInfo, vgroupsInfoToJson, pNode->pVgroupList);
9,206✔
5559
  }
5560
  if (TSDB_CODE_SUCCESS == code) {
9,206!
5561
    code = tjsonAddTArray(pJson, jkRealTableSmaIndexes, tableIndexInfoToJson, pNode->pSmaIndexes);
9,206✔
5562
  }
5563

5564
  return code;
9,206✔
5565
}
5566

5567
static int32_t jsonToRealTableNode(const SJson* pJson, void* pObj) {
8,608✔
5568
  SRealTableNode* pNode = (SRealTableNode*)pObj;
8,608✔
5569

5570
  int32_t objSize = 0;
8,608✔
5571
  int32_t code = jsonToTableNode(pJson, pObj);
8,608✔
5572
  if (TSDB_CODE_SUCCESS == code) {
8,608!
5573
    code = tjsonGetIntValue(pJson, jkRealTableMetaSize, &objSize);
8,608✔
5574
  }
5575
  if (TSDB_CODE_SUCCESS == code) {
8,608!
5576
    code = tjsonMakeObject(pJson, jkRealTableMeta, jsonToTableMeta, (void**)&pNode->pMeta, objSize);
8,608✔
5577
  }
5578
  if (TSDB_CODE_SUCCESS == code) {
8,608!
5579
    code = tjsonGetIntValue(pJson, jkRealTableVgroupsInfoSize, &objSize);
8,608✔
5580
  }
5581
  if (TSDB_CODE_SUCCESS == code) {
8,608!
5582
    code = tjsonMakeObject(pJson, jkRealTableVgroupsInfo, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
8,608✔
5583
  }
5584
  if (TSDB_CODE_SUCCESS == code) {
8,608!
5585
    code =
5586
        tjsonToTArray(pJson, jkRealTableSmaIndexes, jsonToTableIndexInfo, &pNode->pSmaIndexes, sizeof(STableIndexInfo));
8,608✔
5587
  }
5588

5589
  return code;
8,608✔
5590
}
5591

5592
static const char* jkTempTableSubquery = "Subquery";
5593

5594
static int32_t tempTableNodeToJson(const void* pObj, SJson* pJson) {
531✔
5595
  const STempTableNode* pNode = (const STempTableNode*)pObj;
531✔
5596

5597
  int32_t code = tableNodeToJson(pObj, pJson);
531✔
5598
  if (TSDB_CODE_SUCCESS == code) {
531!
5599
    code = tjsonAddObject(pJson, jkTempTableSubquery, nodeToJson, pNode->pSubquery);
531✔
5600
  }
5601

5602
  return code;
531✔
5603
}
5604

5605
static int32_t jsonToTempTableNode(const SJson* pJson, void* pObj) {
532✔
5606
  STempTableNode* pNode = (STempTableNode*)pObj;
532✔
5607

5608
  int32_t code = jsonToTableNode(pJson, pObj);
532✔
5609
  if (TSDB_CODE_SUCCESS == code) {
532!
5610
    code = jsonToNodeObject(pJson, jkTempTableSubquery, &pNode->pSubquery);
532✔
5611
  }
5612

5613
  return code;
532✔
5614
}
5615

5616
static const char* jkJoinTableJoinType = "JoinType";
5617
static const char* jkJoinTableSubType = "SubType";
5618
static const char* jkJoinTableLeft = "Left";
5619
static const char* jkJoinTableRight = "Right";
5620
static const char* jkJoinTableOnCond = "OnCond";
5621

5622
static int32_t joinTableNodeToJson(const void* pObj, SJson* pJson) {
222✔
5623
  const SJoinTableNode* pNode = (const SJoinTableNode*)pObj;
222✔
5624

5625
  int32_t code = tableNodeToJson(pObj, pJson);
222✔
5626
  if (TSDB_CODE_SUCCESS == code) {
222!
5627
    code = tjsonAddIntegerToObject(pJson, jkJoinTableJoinType, pNode->joinType);
222✔
5628
  }
5629
  if (TSDB_CODE_SUCCESS == code) {
222!
5630
    code = tjsonAddIntegerToObject(pJson, jkJoinTableSubType, pNode->subType);
222✔
5631
  }
5632
  if (TSDB_CODE_SUCCESS == code) {
222!
5633
    code = tjsonAddObject(pJson, jkJoinTableLeft, nodeToJson, pNode->pLeft);
222✔
5634
  }
5635
  if (TSDB_CODE_SUCCESS == code) {
222!
5636
    code = tjsonAddObject(pJson, jkJoinTableRight, nodeToJson, pNode->pRight);
222✔
5637
  }
5638
  if (TSDB_CODE_SUCCESS == code) {
222!
5639
    code = tjsonAddObject(pJson, jkJoinTableOnCond, nodeToJson, pNode->pOnCond);
222✔
5640
  }
5641

5642
  return code;
222✔
5643
}
5644

5645
static int32_t jsonToJoinTableNode(const SJson* pJson, void* pObj) {
222✔
5646
  SJoinTableNode* pNode = (SJoinTableNode*)pObj;
222✔
5647

5648
  int32_t code = jsonToTableNode(pJson, pObj);
222✔
5649
  if (TSDB_CODE_SUCCESS == code) {
222!
5650
    tjsonGetNumberValue(pJson, jkJoinTableJoinType, pNode->joinType, code);
222✔
5651
  }
5652
  if (TSDB_CODE_SUCCESS == code) {
222!
5653
    tjsonGetNumberValue(pJson, jkJoinTableSubType, pNode->subType, code);
222✔
5654
  }
5655
  if (TSDB_CODE_SUCCESS == code) {
222!
5656
    code = jsonToNodeObject(pJson, jkJoinTableLeft, &pNode->pLeft);
222✔
5657
  }
5658
  if (TSDB_CODE_SUCCESS == code) {
222!
5659
    code = jsonToNodeObject(pJson, jkJoinTableRight, &pNode->pRight);
222✔
5660
  }
5661
  if (TSDB_CODE_SUCCESS == code) {
222!
5662
    code = jsonToNodeObject(pJson, jkJoinTableOnCond, &pNode->pOnCond);
222✔
5663
  }
5664

5665
  return code;
222✔
5666
}
5667

5668
static const char* jkVirtualTableMetaSize = "MetaSize";
5669
static const char* jkVirtuaTableMeta = "Meta";
5670
static const char* jkVirtuaTableVgroupsInfoSize = "VgroupsInfoSize";
5671
static const char* jkVirtuaTableVgroupsInfo = "VgroupsInfo";
5672
static const char* jkVirtuaTableRefTables = "RefTables";
5673

5674
static int32_t virtualTableNodeToJson(const void* pObj, SJson* pJson) {
×
5675
  const SVirtualTableNode* pNode = (const SVirtualTableNode*)pObj;
×
5676

5677
  int32_t code = tableNodeToJson(pObj, pJson);
×
5678
  if (TSDB_CODE_SUCCESS == code) {
×
5679
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableMetaSize, TABLE_META_SIZE(pNode->pMeta));
×
5680
  }
5681
  if (TSDB_CODE_SUCCESS == code) {
×
5682
    code = tjsonAddObject(pJson, jkVirtuaTableMeta, tableMetaToJson, pNode->pMeta);
×
5683
  }
5684
  if (TSDB_CODE_SUCCESS == code) {
×
5685
    code = tjsonAddIntegerToObject(pJson, jkVirtuaTableVgroupsInfoSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
×
5686
  }
5687
  if (TSDB_CODE_SUCCESS == code) {
×
5688
    code = tjsonAddObject(pJson, jkVirtuaTableVgroupsInfo, vgroupsInfoToJson, pNode->pVgroupList);
×
5689
  }
5690
  if (TSDB_CODE_SUCCESS == code) {
×
5691
    code = nodeListToJson(pJson, jkVirtuaTableRefTables, pNode->refTables);
×
5692
  }
5693

5694

5695
  return code;
×
5696
}
5697

5698
static int32_t jsonToVirtualTableNode(const SJson* pJson, void* pObj) {
×
5699
  SVirtualTableNode* pNode = (SVirtualTableNode*)pObj;
×
5700

5701
  int32_t objSize = 0;
×
5702
  int32_t code = jsonToTableNode(pJson, pObj);
×
5703
  if (TSDB_CODE_SUCCESS == code) {
×
5704
    code = tjsonGetIntValue(pJson, jkVirtualTableMetaSize, &objSize);
×
5705
  }
5706
  if (TSDB_CODE_SUCCESS == code) {
×
5707
    code = tjsonMakeObject(pJson, jkVirtuaTableMeta, jsonToTableMeta, (void**)&pNode->pMeta, objSize);
×
5708
  }
5709
  if (TSDB_CODE_SUCCESS == code) {
×
5710
    code = tjsonGetIntValue(pJson, jkVirtuaTableVgroupsInfoSize, &objSize);
×
5711
  }
5712
  if (TSDB_CODE_SUCCESS == code) {
×
5713
    code = tjsonMakeObject(pJson, jkVirtuaTableVgroupsInfo, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
×
5714
  }
5715
  if (TSDB_CODE_SUCCESS == code) {
×
5716
    code = jsonToNodeList(pJson, jkVirtuaTableRefTables, &pNode->refTables);
×
5717
  }
5718

5719
  return code;
×
5720
}
5721

5722
static const char* jkPlaceHolderTableMetaSize = "MetaSize";
5723
static const char* jkPlaceHolderTableMeta = "Meta";
5724
static const char* jkPlaceHolderTableVgroupsInfoSize = "VgroupsInfoSize";
5725
static const char* jkPlaceHolderTableVgroupsInfo = "VgroupsInfo";
5726
static const char* jkPlaceHolderTablePlaceholderType = "PlaceHolderType";
5727

5728
static int32_t placeHolderTableNodeToJson(const void* pObj, SJson* pJson) {
15✔
5729
  const SPlaceHolderTableNode* pNode = (const SPlaceHolderTableNode*)pObj;
15✔
5730

5731
  int32_t code = tableNodeToJson(pObj, pJson);
15✔
5732
  if (TSDB_CODE_SUCCESS == code) {
15!
5733
    code = tjsonAddIntegerToObject(pJson, jkPlaceHolderTableMetaSize, TABLE_META_SIZE(pNode->pMeta));
15!
5734
  }
5735
  if (TSDB_CODE_SUCCESS == code) {
15!
5736
    code = tjsonAddObject(pJson, jkPlaceHolderTableMeta, tableMetaToJson, pNode->pMeta);
15✔
5737
  }
5738
  if (TSDB_CODE_SUCCESS == code) {
15!
5739
    code = tjsonAddIntegerToObject(pJson, jkPlaceHolderTableVgroupsInfoSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
15!
5740
  }
5741
  if (TSDB_CODE_SUCCESS == code) {
15!
5742
    code = tjsonAddObject(pJson, jkPlaceHolderTableVgroupsInfo, vgroupsInfoToJson, pNode->pVgroupList);
15✔
5743
  }
5744
  if (TSDB_CODE_SUCCESS == code) {
15!
5745
    code = tjsonAddIntegerToObject(pJson, jkPlaceHolderTablePlaceholderType, pNode->placeholderType);
15✔
5746
  }
5747
  return code;
15✔
5748
}
5749

5750
static int32_t jsonToPlaceHolderTableNode(const SJson* pJson, void* pObj) {
×
5751
  SPlaceHolderTableNode* pNode = (SPlaceHolderTableNode*)pObj;
×
5752
  int32_t                code = jsonToTableNode(pJson, pObj);
×
5753
  int32_t                objSize = 0;
×
5754
  if (TSDB_CODE_SUCCESS == code) {
×
5755
    code = tjsonGetIntValue(pJson, jkPlaceHolderTableMetaSize, &objSize);
×
5756
  }
5757
  if (TSDB_CODE_SUCCESS == code) {
×
5758
    code = tjsonMakeObject(pJson, jkPlaceHolderTableMeta, jsonToTableMeta, (void**)&pNode->pMeta, objSize);
×
5759
  }
5760
  if (TSDB_CODE_SUCCESS == code) {
×
5761
    code = tjsonGetIntValue(pJson, jkPlaceHolderTableVgroupsInfoSize, &objSize);
×
5762
  }
5763
  if (TSDB_CODE_SUCCESS == code) {
×
5764
    code = tjsonMakeObject(pJson, jkPlaceHolderTableVgroupsInfo, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
×
5765
  }
5766
  if (TSDB_CODE_SUCCESS == code) {
×
5767
    tjsonGetNumberValue(pJson, jkPlaceHolderTablePlaceholderType, pNode->placeholderType, code);
×
5768
  }
5769
  return code;
×
5770
}
5771

5772

5773
static const char* jkSlidingWindowOffset = "Offset";
5774
static const char* jkSlidingWindowSlidingVal = "SlidingVal";
5775

5776
static int32_t slidingWindowNodeToJson(const void* pObj, SJson* pJson) {
×
5777
  const SSlidingWindowNode* pNode = (const SSlidingWindowNode*)pObj;
×
5778
  int32_t                   code = tjsonAddObject(pJson, jkSlidingWindowOffset, nodeToJson, pNode->pOffset);
×
5779
  if (TSDB_CODE_SUCCESS == code) {
×
5780
    code = tjsonAddObject(pJson, jkSlidingWindowSlidingVal, nodeToJson, pNode->pSlidingVal);
×
5781
  }
5782
  return code;
×
5783
}
5784

5785
static int32_t jsonToSlidingWindowNode(const SJson* pJson, void* pObj) {
×
5786
  SSlidingWindowNode* pNode = (SSlidingWindowNode*)pObj;
×
5787
  int32_t code = jsonToNodeObject(pJson, jkSlidingWindowOffset, (SNode**)&pNode->pOffset);
×
5788
  if (TSDB_CODE_SUCCESS == code) {
×
5789
    code = jsonToNodeObject(pJson, jkSlidingWindowSlidingVal, (SNode**)&pNode->pSlidingVal);
×
5790
  }
5791

5792
  return code;
×
5793
}
5794

5795
static const char* jkPeriodWindowOffset = "Offset";
5796
static const char* jkPeriodWindowPeriod = "Period";
5797

5798
static int32_t periodWindowNodeToJson(const void* pObj, SJson* pJson) {
183✔
5799
  const SPeriodWindowNode* pNode = (const SPeriodWindowNode*)pObj;
183✔
5800
  int32_t                   code = tjsonAddObject(pJson, jkPeriodWindowPeriod, nodeToJson, pNode->pPeroid);
183✔
5801
  if (TSDB_CODE_SUCCESS == code) {
183!
5802
    code = tjsonAddObject(pJson, jkPeriodWindowOffset, nodeToJson, pNode->pOffset);
183✔
5803
  }
5804
  return code;
183✔
5805
}
5806

5807
static int32_t jsonToPeriodWindowNode(const SJson* pJson, void* pObj) {
183✔
5808
  SPeriodWindowNode* pNode = (SPeriodWindowNode*)pObj;
183✔
5809
  int32_t code = jsonToNodeObject(pJson, jkPeriodWindowPeriod, (SNode**)&pNode->pPeroid);
183✔
5810
  if (TSDB_CODE_SUCCESS == code) {
183!
5811
    code = jsonToNodeObject(pJson, jkPeriodWindowOffset, (SNode**)&pNode->pOffset);
183✔
5812
  }
5813

5814
  return code;
183✔
5815
}
5816

5817
static const char* jkStreamTriggerTriggerWindow = "TriggerWindow";
5818
static const char* jkStreamTriggerTriggerTable = "TriggerTable";
5819
static const char* jkStreamTriggerOptions = "Options";
5820
static const char* jkStreamTriggerNotify = "Notify";
5821
static const char* jkStreamTriggerPartitionList= "PartitionList";
5822

5823
static int32_t streamTriggerNodeToJson(const void* pObj, SJson* pJson) {
1,878✔
5824
  const SStreamTriggerNode* pNode = (const SStreamTriggerNode*)pObj;
1,878✔
5825
  int32_t                   code = tjsonAddObject(pJson, jkStreamTriggerTriggerWindow, nodeToJson, pNode->pTriggerWindow);
1,878✔
5826
  if (TSDB_CODE_SUCCESS == code) {
1,878!
5827
    code = tjsonAddObject(pJson, jkStreamTriggerTriggerTable, nodeToJson, pNode->pTrigerTable);
1,878✔
5828
  }
5829
  if (TSDB_CODE_SUCCESS == code) {
1,878!
5830
    code = tjsonAddObject(pJson, jkStreamTriggerOptions, nodeToJson, pNode->pOptions);
1,878✔
5831
  }
5832
  if (TSDB_CODE_SUCCESS == code) {
1,878!
5833
    code = tjsonAddObject(pJson, jkStreamTriggerNotify, nodeToJson, pNode->pNotify);
1,878✔
5834
  }
5835
  if (TSDB_CODE_SUCCESS == code) {
1,878!
5836
    code = nodeListToJson(pJson, jkStreamTriggerPartitionList, pNode->pPartitionList);
1,878✔
5837
  }
5838
  return code;
1,878✔
5839
}
5840

5841
static int32_t jsonToStreamTriggerNode(const SJson* pJson, void* pObj) {
1,878✔
5842
  SStreamTriggerNode* pNode = (SStreamTriggerNode*)pObj;
1,878✔
5843
  int32_t             code = jsonToNodeObject(pJson, jkStreamTriggerTriggerWindow, (SNode**)&pNode->pTriggerWindow);
1,878✔
5844
  if (TSDB_CODE_SUCCESS == code) {
1,878!
5845
    code = jsonToNodeObject(pJson, jkStreamTriggerTriggerTable, (SNode**)&pNode->pTrigerTable);
1,878✔
5846
  }
5847
  if (TSDB_CODE_SUCCESS == code) {
1,878!
5848
    code = jsonToNodeObject(pJson, jkStreamTriggerOptions, (SNode**)&pNode->pOptions);
1,878✔
5849
  }
5850
  if (TSDB_CODE_SUCCESS == code) {
1,878!
5851
    code = jsonToNodeObject(pJson, jkStreamTriggerNotify, (SNode**)&pNode->pNotify);
1,878✔
5852
  }
5853
  if (TSDB_CODE_SUCCESS == code) {
1,878!
5854
    code = jsonToNodeList(pJson, jkStreamTriggerPartitionList, &pNode->pPartitionList);
1,878✔
5855
  }
5856
  return code;
1,878✔
5857
}
5858

5859
static const char* jkStreamDbName = "DbName";
5860
static const char* jkStreamStreamName = "StreamName";
5861

5862
static int32_t streamNodeToJson(const void* pObj, SJson* pJson) {
×
5863
  const SStreamNode* pNode = (const SStreamNode*)pObj;
×
5864
  int32_t            code = exprNodeToJson(pObj, pJson);
×
5865
  if (TSDB_CODE_SUCCESS == code) {
×
5866
    code = tjsonAddStringToObject(pJson, jkStreamDbName, pNode->dbName);
×
5867
  }
5868
  if (TSDB_CODE_SUCCESS == code) {
×
5869
    code = tjsonAddStringToObject(pJson, jkStreamStreamName, pNode->streamName);
×
5870
  }
5871
  return code;
×
5872
}
5873

5874
static int32_t jsonToStreamNode(const SJson* pJson, void* pObj) {
×
5875
  SStreamNode* pNode = (SStreamNode*)pObj;
×
5876
  int32_t      code = jsonToExprNode(pJson, pObj);
×
5877
  if (TSDB_CODE_SUCCESS == code) {
×
5878
    code = tjsonGetStringValue(pJson, jkStreamDbName, pNode->dbName);
×
5879
  }
5880
  if (TSDB_CODE_SUCCESS == code) {
×
5881
    code = tjsonGetStringValue(pJson, jkStreamStreamName, pNode->streamName);
×
5882
  }
5883
  return code;
×
5884
}
5885

5886
static const char* jkStreamTagDefTagName = "TagName";
5887
static const char* jkStreamTagDefDataType = "DataType";
5888
static const char* jkStreamTagDefTagExpr = "TagExpr";
5889
static const char* jkStreamTagDefComment = "Comment";
5890

5891
static int32_t streamTagDefNodeToJson(const void* pObj, SJson* pJson) {
447✔
5892
  const SStreamTagDefNode* pNode = (const SStreamTagDefNode*)pObj;
447✔
5893
  int32_t                  code = tjsonAddStringToObject(pJson, jkStreamTagDefTagName, pNode->tagName);
447✔
5894
  if (TSDB_CODE_SUCCESS == code) {
447!
5895
    code = tjsonAddObject(pJson, jkStreamTagDefDataType, dataTypeToJson, &pNode->dataType);
447✔
5896
  }
5897
  if (TSDB_CODE_SUCCESS == code) {
447!
5898
    code = tjsonAddObject(pJson, jkStreamTagDefTagExpr, nodeToJson, pNode->pTagExpr);
447✔
5899
  }
5900
  return code;
447✔
5901
}
5902

5903
static int32_t jsonToStreamTagDefNode(const SJson* pJson, void* pObj) {
447✔
5904
  SStreamTagDefNode* pNode = (SStreamTagDefNode*)pObj;
447✔
5905
  int32_t            code = tjsonGetStringValue(pJson, jkStreamTagDefTagName, pNode->tagName);
447✔
5906
  if (TSDB_CODE_SUCCESS == code) {
447!
5907
    code = tjsonToObject(pJson, jkStreamTagDefDataType, jsonToDataType, &pNode->dataType);
447✔
5908
  }
5909
  if (TSDB_CODE_SUCCESS == code) {
447!
5910
    code = jsonToNodeObject(pJson, jkStreamTagDefTagExpr, &pNode->pTagExpr);
447✔
5911
  }
5912
  return code;
447✔
5913
}
5914

5915
static const char* jkExternalWindowProjectionList = "ProjectionList";
5916
static const char* jkExternalWindowAggFuncList = "AggFuncList";
5917
static const char* jkExternalWindowStartTime = "StartTime";
5918
static const char* jkExternalWindowEndTime = "EndTime";
5919

5920
static int32_t externalWindowNodeToJson(const void* pObj, SJson* pJson) {
×
5921
  const SExternalWindowNode* pNode = (const SExternalWindowNode*)pObj;
×
5922
  int32_t                    code = nodeListToJson(pJson, jkExternalWindowProjectionList, pNode->pProjectionList);
×
5923
  if (TSDB_CODE_SUCCESS == code) {
×
5924
    code = nodeListToJson(pJson, jkExternalWindowAggFuncList, pNode->pAggFuncList);
×
5925
  }
5926
  if (TSDB_CODE_SUCCESS == code) {
×
5927
    code = tjsonAddIntegerToObject(pJson, jkExternalWindowStartTime, pNode->timeRange.skey);
×
5928
  }
5929
  if (TSDB_CODE_SUCCESS == code) {
×
5930
    code = tjsonAddIntegerToObject(pJson, jkExternalWindowEndTime, pNode->timeRange.ekey);
×
5931
  }
5932
  return code;
×
5933
}
5934

5935
static int32_t jsonToExternalWindowNode(const SJson* pJson, void* pObj) {
×
5936
  SExternalWindowNode* pNode = (SExternalWindowNode*)pObj;
×
5937
  int32_t              code = jsonToNodeList(pJson, jkExternalWindowProjectionList, &pNode->pProjectionList);
×
5938
  if (TSDB_CODE_SUCCESS == code) {
×
5939
    code = jsonToNodeList(pJson, jkExternalWindowAggFuncList, &pNode->pAggFuncList);
×
5940
  }
5941
  if (TSDB_CODE_SUCCESS == code) {
×
5942
    code = tjsonGetBigIntValue(pJson, jkExternalWindowStartTime, &pNode->timeRange.skey);
×
5943
  }
5944
  if (TSDB_CODE_SUCCESS == code) {
×
5945
    code = tjsonGetBigIntValue(pJson, jkExternalWindowEndTime, &pNode->timeRange.ekey);
×
5946
  }
5947
  return code;
×
5948
}
5949

5950
static const char* jkGroupingSetType = "GroupingSetType";
5951
static const char* jkGroupingSetParameter = "Parameters";
5952

5953
static int32_t groupingSetNodeToJson(const void* pObj, SJson* pJson) {
1,989✔
5954
  const SGroupingSetNode* pNode = (const SGroupingSetNode*)pObj;
1,989✔
5955

5956
  int32_t code = tjsonAddIntegerToObject(pJson, jkGroupingSetType, pNode->groupingSetType);
1,989✔
5957
  if (TSDB_CODE_SUCCESS == code) {
1,989!
5958
    code = nodeListToJson(pJson, jkGroupingSetParameter, pNode->pParameterList);
1,989✔
5959
  }
5960

5961
  return code;
1,989✔
5962
}
5963

5964
static int32_t jsonToGroupingSetNode(const SJson* pJson, void* pObj) {
1,257✔
5965
  SGroupingSetNode* pNode = (SGroupingSetNode*)pObj;
1,257✔
5966

5967
  int32_t code = TSDB_CODE_SUCCESS;
1,257✔
5968
  tjsonGetNumberValue(pJson, jkGroupingSetType, pNode->groupingSetType, code);
1,257✔
5969
  if (TSDB_CODE_SUCCESS == code) {
1,257!
5970
    code = jsonToNodeList(pJson, jkGroupingSetParameter, &pNode->pParameterList);
1,257✔
5971
  }
5972

5973
  return code;
1,257✔
5974
}
5975

5976
static const char* jkOrderByExprExpr = "Expr";
5977
static const char* jkOrderByExprOrder = "Order";
5978
static const char* jkOrderByExprNullOrder = "NullOrder";
5979

5980
static int32_t orderByExprNodeToJson(const void* pObj, SJson* pJson) {
8,912✔
5981
  const SOrderByExprNode* pNode = (const SOrderByExprNode*)pObj;
8,912✔
5982

5983
  int32_t code = tjsonAddObject(pJson, jkOrderByExprExpr, nodeToJson, pNode->pExpr);
8,912✔
5984
  if (TSDB_CODE_SUCCESS == code) {
8,912!
5985
    code = tjsonAddIntegerToObject(pJson, jkOrderByExprOrder, pNode->order);
8,912✔
5986
  }
5987
  if (TSDB_CODE_SUCCESS == code) {
8,912!
5988
    code = tjsonAddIntegerToObject(pJson, jkOrderByExprNullOrder, pNode->nullOrder);
8,912✔
5989
  }
5990

5991
  return code;
8,912✔
5992
}
5993

5994
static int32_t jsonToOrderByExprNode(const SJson* pJson, void* pObj) {
2,121✔
5995
  SOrderByExprNode* pNode = (SOrderByExprNode*)pObj;
2,121✔
5996

5997
  int32_t code = jsonToNodeObject(pJson, jkOrderByExprExpr, &pNode->pExpr);
2,121✔
5998
  if (TSDB_CODE_SUCCESS == code) {
2,121!
5999
    tjsonGetNumberValue(pJson, jkOrderByExprOrder, pNode->order, code);
2,121✔
6000
  }
6001
  if (TSDB_CODE_SUCCESS == code) {
2,121!
6002
    tjsonGetNumberValue(pJson, jkOrderByExprNullOrder, pNode->nullOrder, code);
2,121✔
6003
  }
6004

6005
  return code;
2,121✔
6006
}
6007

6008
static const char* jkLimitLimit = "Limit";
6009
static const char* jkLimitOffset = "Offset";
6010

6011
static int32_t limitNodeToJson(const void* pObj, SJson* pJson) {
15,222✔
6012
  const SLimitNode* pNode = (const SLimitNode*)pObj;
15,222✔
6013

6014
  int32_t code = tjsonAddObject(pJson, jkLimitLimit, nodeToJson, pNode->limit);
15,222✔
6015
  if (TSDB_CODE_SUCCESS == code && pNode->offset) {
15,223!
6016
    code = tjsonAddObject(pJson, jkLimitOffset, nodeToJson, pNode->offset);
1,769✔
6017
  }
6018

6019
  return code;
15,223✔
6020
}
6021

6022
static int32_t jsonToLimitNode(const SJson* pJson, void* pObj) {
699✔
6023
  SLimitNode* pNode = (SLimitNode*)pObj;
699✔
6024

6025
  int32_t code = jsonToNodeObject(pJson, jkLimitLimit, (SNode**)&pNode->limit);
699✔
6026
  if (TSDB_CODE_SUCCESS == code) {
699!
6027
    code = jsonToNodeObject(pJson, jkLimitOffset, (SNode**)&pNode->offset);
699✔
6028
  }
6029

6030
  return code;
699✔
6031
}
6032

6033
static const char* jkStateWindowCol = "StateWindowCol";
6034
static const char* jkStateWindowExpr = "StateWindowExpr";
6035
static const char* jkStateWindowTrueForLimit = "TrueForLimit";
6036

6037
static int32_t stateWindowNodeToJson(const void* pObj, SJson* pJson) {
171✔
6038
  const SStateWindowNode* pNode = (const SStateWindowNode*)pObj;
171✔
6039
  int32_t                 code = tjsonAddObject(pJson, jkStateWindowCol, nodeToJson, pNode->pCol);
171✔
6040
  if (TSDB_CODE_SUCCESS == code) {
171!
6041
    code = tjsonAddObject(pJson, jkStateWindowExpr, nodeToJson, pNode->pExpr);
171✔
6042
  }
6043
  if (TSDB_CODE_SUCCESS == code) {
171!
6044
    code = tjsonAddObject(pJson, jkStateWindowTrueForLimit, nodeToJson, pNode->pTrueForLimit);
171✔
6045
  }
6046
  return code;
171✔
6047
}
6048

6049
static int32_t jsonToStateWindowNode(const SJson* pJson, void* pObj) {
171✔
6050
  SStateWindowNode* pNode = (SStateWindowNode*)pObj;
171✔
6051

6052
  int32_t code = jsonToNodeObject(pJson, jkStateWindowCol, (SNode**)&pNode->pCol);
171✔
6053
  if (TSDB_CODE_SUCCESS == code) {
171!
6054
    code = jsonToNodeObject(pJson, jkStateWindowExpr, (SNode**)&pNode->pExpr);
171✔
6055
  }
6056
  if (TSDB_CODE_SUCCESS == code) {
171!
6057
    code = jsonToNodeObject(pJson, jkStateWindowTrueForLimit, (SNode**)&pNode->pTrueForLimit);
171✔
6058
  }
6059
  return code;
171✔
6060
}
6061

6062
static const char* jkSessionWindowTsPrimaryKey = "TsPrimaryKey";
6063
static const char* jkSessionWindowGap = "Gap";
6064

6065
static int32_t sessionWindowNodeToJson(const void* pObj, SJson* pJson) {
111✔
6066
  const SSessionWindowNode* pNode = (const SSessionWindowNode*)pObj;
111✔
6067

6068
  int32_t code = tjsonAddObject(pJson, jkSessionWindowTsPrimaryKey, nodeToJson, pNode->pCol);
111✔
6069
  if (TSDB_CODE_SUCCESS == code) {
111!
6070
    code = tjsonAddObject(pJson, jkSessionWindowGap, nodeToJson, pNode->pGap);
111✔
6071
  }
6072
  return code;
111✔
6073
}
6074

6075
static int32_t jsonToSessionWindowNode(const SJson* pJson, void* pObj) {
111✔
6076
  SSessionWindowNode* pNode = (SSessionWindowNode*)pObj;
111✔
6077

6078
  int32_t code = jsonToNodeObject(pJson, jkSessionWindowTsPrimaryKey, (SNode**)&pNode->pCol);
111✔
6079
  if (TSDB_CODE_SUCCESS == code) {
111!
6080
    code = jsonToNodeObject(pJson, jkSessionWindowGap, (SNode**)&pNode->pGap);
111✔
6081
  }
6082
  return code;
111✔
6083
}
6084

6085
static const char* jkEventWindowTsPrimaryKey = "TsPrimaryKey";
6086
static const char* jkEventWindowStartCond = "StartCond";
6087
static const char* jkEventWindowEndCond = "EndCond";
6088
static const char* jkEventWindowTrueForLimit = "TrueForLimit";
6089

6090
static int32_t eventWindowNodeToJson(const void* pObj, SJson* pJson) {
78✔
6091
  const SEventWindowNode* pNode = (const SEventWindowNode*)pObj;
78✔
6092

6093
  int32_t code = tjsonAddObject(pJson, jkEventWindowTsPrimaryKey, nodeToJson, pNode->pCol);
78✔
6094
  if (TSDB_CODE_SUCCESS == code) {
78!
6095
    code = tjsonAddObject(pJson, jkEventWindowStartCond, nodeToJson, pNode->pStartCond);
78✔
6096
  }
6097
  if (TSDB_CODE_SUCCESS == code) {
78!
6098
    code = tjsonAddObject(pJson, jkEventWindowEndCond, nodeToJson, pNode->pEndCond);
78✔
6099
  }
6100
  if (TSDB_CODE_SUCCESS == code) {
78!
6101
    code = tjsonAddObject(pJson, jkEventWindowTrueForLimit, nodeToJson, pNode->pTrueForLimit);
78✔
6102
  }
6103
  return code;
78✔
6104
}
6105

6106
static int32_t jsonToEventWindowNode(const SJson* pJson, void* pObj) {
78✔
6107
  SEventWindowNode* pNode = (SEventWindowNode*)pObj;
78✔
6108

6109
  int32_t code = jsonToNodeObject(pJson, jkEventWindowTsPrimaryKey, &pNode->pCol);
78✔
6110
  if (TSDB_CODE_SUCCESS == code) {
78!
6111
    code = jsonToNodeObject(pJson, jkEventWindowStartCond, &pNode->pStartCond);
78✔
6112
  }
6113
  if (TSDB_CODE_SUCCESS == code) {
78!
6114
    code = jsonToNodeObject(pJson, jkEventWindowEndCond, &pNode->pEndCond);
78✔
6115
  }
6116
  if (TSDB_CODE_SUCCESS == code) {
78!
6117
    code = jsonToNodeObject(pJson, jkEventWindowTrueForLimit, &pNode->pTrueForLimit);
78✔
6118
  }
6119
  return code;
78✔
6120
}
6121

6122
static const char* jkCountWindowTsPrimaryKey = "CountTsPrimaryKey";
6123
static const char* jkCountWindowCount = "CountWindowCount";
6124
static const char* jkCountWindowSliding = "CountWindowSliding";
6125

6126
static int32_t countWindowNodeToJson(const void* pObj, SJson* pJson) {
114✔
6127
  const SCountWindowNode* pNode = (const SCountWindowNode*)pObj;
114✔
6128

6129
  int32_t code = tjsonAddObject(pJson, jkCountWindowTsPrimaryKey, nodeToJson, pNode->pCol);
114✔
6130
  if (TSDB_CODE_SUCCESS == code) {
114!
6131
    code = tjsonAddIntegerToObject(pJson, jkCountWindowCount, pNode->windowCount);
114✔
6132
  }
6133
  if (TSDB_CODE_SUCCESS == code) {
114!
6134
    code = tjsonAddIntegerToObject(pJson, jkCountWindowSliding, pNode->windowSliding);
114✔
6135
  }
6136
  return code;
114✔
6137
}
6138

6139
static int32_t jsonToCountWindowNode(const SJson* pJson, void* pObj) {
114✔
6140
  SCountWindowNode* pNode = (SCountWindowNode*)pObj;
114✔
6141

6142
  int32_t code = jsonToNodeObject(pJson, jkCountWindowTsPrimaryKey, &pNode->pCol);
114✔
6143
  if (TSDB_CODE_SUCCESS == code) {
114!
6144
    code = tjsonGetBigIntValue(pJson, jkCountWindowCount, &pNode->windowCount);
114✔
6145
  }
6146
  if (TSDB_CODE_SUCCESS == code) {
114!
6147
    code = tjsonGetBigIntValue(pJson, jkCountWindowSliding, &pNode->windowSliding);
114✔
6148
  }
6149
  return code;
114✔
6150
}
6151

6152
static const char* jkAnomalyWindowTsPrimaryKey = "AnomalyTsPrimaryKey";
6153
static const char* jkAnomalyWindowExpr = "AnomalyWindowExpr";
6154
static const char* jkAnomalyWindowOption = "AnomalyWindowOpt";
6155

6156
static int32_t anomalyWindowNodeToJson(const void* pObj, SJson* pJson) {
×
6157
  const SAnomalyWindowNode* pNode = (const SAnomalyWindowNode*)pObj;
×
6158

6159
  int32_t code = tjsonAddObject(pJson, jkAnomalyWindowTsPrimaryKey, nodeToJson, pNode->pCol);
×
6160
  if (TSDB_CODE_SUCCESS == code) {
×
6161
    code = tjsonAddObject(pJson, jkAnomalyWindowExpr, nodeToJson, pNode->pExpr);
×
6162
  }
6163
  if (TSDB_CODE_SUCCESS == code) {
×
6164
    code = tjsonAddStringToObject(pJson, jkAnomalyWindowOption, pNode->anomalyOpt);
×
6165
  }
6166
  return code;
×
6167
}
6168

6169
static int32_t jsonToAnomalyWindowNode(const SJson* pJson, void* pObj) {
×
6170
  SAnomalyWindowNode* pNode = (SAnomalyWindowNode*)pObj;
×
6171

6172
  int32_t code = jsonToNodeObject(pJson, jkAnomalyWindowTsPrimaryKey, &pNode->pCol);
×
6173
  if (TSDB_CODE_SUCCESS == code) {
×
6174
    code = jsonToNodeObject(pJson, jkAnomalyWindowExpr, (SNode**)&pNode->pExpr);
×
6175
  }
6176
  if (TSDB_CODE_SUCCESS == code) {
×
6177
    code = tjsonGetStringValue(pJson, jkAnomalyWindowOption, pNode->anomalyOpt);
×
6178
  }
6179
  return code;
×
6180
}
6181

6182
static const char* jkIntervalWindowInterval = "Interval";
6183
static const char* jkIntervalWindowOffset = "Offset";
6184
static const char* jkIntervalWindowSliding = "Sliding";
6185
static const char* jkIntervalWindowFill = "Fill";
6186
static const char* jkIntervalWindowTsPk = "TsPk";
6187
static const char* jkIntervalStartTime = "StartTime";
6188
static const char* jkIntervalEndTime = "EndTime";
6189

6190
static int32_t intervalWindowNodeToJson(const void* pObj, SJson* pJson) {
2,061✔
6191
  const SIntervalWindowNode* pNode = (const SIntervalWindowNode*)pObj;
2,061✔
6192

6193
  int32_t code = tjsonAddObject(pJson, jkIntervalWindowInterval, nodeToJson, pNode->pInterval);
2,061✔
6194
  if (TSDB_CODE_SUCCESS == code) {
2,061!
6195
    code = tjsonAddObject(pJson, jkIntervalWindowOffset, nodeToJson, pNode->pOffset);
2,061✔
6196
  }
6197
  if (TSDB_CODE_SUCCESS == code) {
2,061!
6198
    code = tjsonAddObject(pJson, jkIntervalWindowSliding, nodeToJson, pNode->pSliding);
2,061✔
6199
  }
6200
  if (TSDB_CODE_SUCCESS == code) {
2,061!
6201
    code = tjsonAddObject(pJson, jkIntervalWindowFill, nodeToJson, pNode->pFill);
2,061✔
6202
  }
6203
  if (TSDB_CODE_SUCCESS == code) {
2,061!
6204
    code = tjsonAddObject(pJson, jkIntervalWindowTsPk, nodeToJson, pNode->pCol);
2,061✔
6205
  }
6206
  if (TSDB_CODE_SUCCESS == code) {
2,061!
6207
    code = tjsonAddIntegerToObject(pJson, jkIntervalStartTime, pNode->timeRange.skey);
2,061✔
6208
  }
6209
  if (TSDB_CODE_SUCCESS == code) {
2,061!
6210
    code = tjsonAddIntegerToObject(pJson, jkIntervalEndTime, pNode->timeRange.ekey);
2,061✔
6211
  }
6212

6213
  return code;
2,061✔
6214
}
6215

6216
static int32_t jsonToIntervalWindowNode(const SJson* pJson, void* pObj) {
2,061✔
6217
  SIntervalWindowNode* pNode = (SIntervalWindowNode*)pObj;
2,061✔
6218

6219
  int32_t code = jsonToNodeObject(pJson, jkIntervalWindowInterval, &pNode->pInterval);
2,061✔
6220
  if (TSDB_CODE_SUCCESS == code) {
2,061!
6221
    code = jsonToNodeObject(pJson, jkIntervalWindowOffset, &pNode->pOffset);
2,061✔
6222
  }
6223
  if (TSDB_CODE_SUCCESS == code) {
2,061!
6224
    code = jsonToNodeObject(pJson, jkIntervalWindowSliding, &pNode->pSliding);
2,061✔
6225
  }
6226
  if (TSDB_CODE_SUCCESS == code) {
2,061!
6227
    code = jsonToNodeObject(pJson, jkIntervalWindowFill, &pNode->pFill);
2,061✔
6228
  }
6229
  if (TSDB_CODE_SUCCESS == code) {
2,061!
6230
    code = jsonToNodeObject(pJson, jkIntervalWindowTsPk, &pNode->pCol);
2,061✔
6231
  }
6232
  if (TSDB_CODE_SUCCESS == code) {
2,061!
6233
    code = tjsonGetBigIntValue(pJson, jkIntervalStartTime, &pNode->timeRange.skey);
2,061✔
6234
  }
6235
  if (TSDB_CODE_SUCCESS == code) {
2,061!
6236
    code = tjsonGetBigIntValue(pJson, jkIntervalEndTime, &pNode->timeRange.ekey);
2,061✔
6237
  }
6238

6239
  return code;
2,061✔
6240
}
6241

6242
static const char* jkNodeListDataType = "DataType";
6243
static const char* jkNodeListNodeList = "NodeList";
6244

6245
static int32_t nodeListNodeToJson(const void* pObj, SJson* pJson) {
8,179,832✔
6246
  const SNodeListNode* pNode = (const SNodeListNode*)pObj;
8,179,832✔
6247

6248
  int32_t code = tjsonAddObject(pJson, jkNodeListDataType, dataTypeToJson, &pNode->node.resType);
8,179,832✔
6249
  if (TSDB_CODE_SUCCESS == code) {
8,225,009!
6250
    code = nodeListToJson(pJson, jkNodeListNodeList, pNode->pNodeList);
8,227,596✔
6251
  }
6252

6253
  return code;
8,213,109✔
6254
}
6255

6256
static int32_t jsonToNodeListNode(const SJson* pJson, void* pObj) {
2,675✔
6257
  SNodeListNode* pNode = (SNodeListNode*)pObj;
2,675✔
6258

6259
  int32_t code = tjsonToObject(pJson, jkNodeListDataType, jsonToDataType, &pNode->node.resType);
2,675✔
6260
  if (TSDB_CODE_SUCCESS == code) {
2,675!
6261
    code = jsonToNodeList(pJson, jkNodeListNodeList, &pNode->pNodeList);
2,675✔
6262
  }
6263

6264
  return code;
2,675✔
6265
}
6266

6267
static const char* jkFillMode = "Mode";
6268
static const char* jkFillValues = "Values";
6269
static const char* jkFillWStartTs = "WStartTs";
6270
static const char* jkFillStartTime = "StartTime";
6271
static const char* jkFillEndTime = "EndTime";
6272

6273
static int32_t fillNodeToJson(const void* pObj, SJson* pJson) {
114✔
6274
  const SFillNode* pNode = (const SFillNode*)pObj;
114✔
6275

6276
  int32_t code = tjsonAddIntegerToObject(pJson, jkFillMode, pNode->mode);
114✔
6277
  if (TSDB_CODE_SUCCESS == code) {
114!
6278
    code = tjsonAddObject(pJson, jkFillValues, nodeToJson, pNode->pValues);
114✔
6279
  }
6280
  if (TSDB_CODE_SUCCESS == code) {
114!
6281
    code = tjsonAddObject(pJson, jkFillWStartTs, nodeToJson, pNode->pWStartTs);
114✔
6282
  }
6283
  if (TSDB_CODE_SUCCESS == code) {
114!
6284
    code = tjsonAddIntegerToObject(pJson, jkFillStartTime, pNode->timeRange.skey);
114✔
6285
  }
6286
  if (TSDB_CODE_SUCCESS == code) {
114!
6287
    code = tjsonAddIntegerToObject(pJson, jkFillEndTime, pNode->timeRange.ekey);
114✔
6288
  }
6289

6290
  return code;
114✔
6291
}
6292

6293
static int32_t jsonToFillNode(const SJson* pJson, void* pObj) {
114✔
6294
  SFillNode* pNode = (SFillNode*)pObj;
114✔
6295

6296
  int32_t code;
6297
  tjsonGetNumberValue(pJson, jkFillMode, pNode->mode, code);
114✔
6298
  if (TSDB_CODE_SUCCESS == code) {
114!
6299
    code = jsonToNodeObject(pJson, jkFillValues, &pNode->pValues);
114✔
6300
  }
6301
  if (TSDB_CODE_SUCCESS == code) {
114!
6302
    code = jsonToNodeObject(pJson, jkFillWStartTs, &pNode->pWStartTs);
114✔
6303
  }
6304
  if (TSDB_CODE_SUCCESS == code) {
114!
6305
    code = tjsonGetBigIntValue(pJson, jkFillStartTime, &pNode->timeRange.skey);
114✔
6306
  }
6307
  if (TSDB_CODE_SUCCESS == code) {
114!
6308
    code = tjsonGetBigIntValue(pJson, jkFillEndTime, &pNode->timeRange.ekey);
114✔
6309
  }
6310

6311
  return code;
114✔
6312
}
6313

6314
static const char* jkTargetDataBlockId = "DataBlockId";
6315
static const char* jkTargetSlotId = "SlotId";
6316
static const char* jkTargetExpr = "Expr";
6317

6318
static int32_t targetNodeToJson(const void* pObj, SJson* pJson) {
1,163,612✔
6319
  const STargetNode* pNode = (const STargetNode*)pObj;
1,163,612✔
6320

6321
  int32_t code = tjsonAddIntegerToObject(pJson, jkTargetDataBlockId, pNode->dataBlockId);
1,163,612✔
6322
  if (TSDB_CODE_SUCCESS == code) {
1,163,659!
6323
    code = tjsonAddIntegerToObject(pJson, jkTargetSlotId, pNode->slotId);
1,163,671✔
6324
  }
6325
  if (TSDB_CODE_SUCCESS == code) {
1,163,657✔
6326
    code = tjsonAddObject(pJson, jkTargetExpr, nodeToJson, pNode->pExpr);
1,163,646✔
6327
  }
6328

6329
  return code;
1,163,665✔
6330
}
6331

6332
static int32_t jsonToTargetNode(const SJson* pJson, void* pObj) {
103,951✔
6333
  STargetNode* pNode = (STargetNode*)pObj;
103,951✔
6334

6335
  int32_t code = tjsonGetSmallIntValue(pJson, jkTargetDataBlockId, &pNode->dataBlockId);
103,951✔
6336
  if (TSDB_CODE_SUCCESS == code) {
104,003!
6337
    code = tjsonGetSmallIntValue(pJson, jkTargetSlotId, &pNode->slotId);
104,006✔
6338
  }
6339
  if (TSDB_CODE_SUCCESS == code) {
104,014!
6340
    code = jsonToNodeObject(pJson, jkTargetExpr, &pNode->pExpr);
104,020✔
6341
  }
6342

6343
  return code;
103,983✔
6344
}
6345

6346
static const char* jkSlotDescSlotId = "SlotId";
6347
static const char* jkSlotDescDataType = "DataType";
6348
static const char* jkSlotDescReserve = "Reserve";
6349
static const char* jkSlotDescOutput = "Output";
6350
static const char* jkSlotDescName = "Name";
6351
static const char* jkSlotTag = "Tag";
6352

6353
static int32_t slotDescNodeToJson(const void* pObj, SJson* pJson) {
1,933,772✔
6354
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
1,933,772✔
6355

6356
  int32_t code = tjsonAddIntegerToObject(pJson, jkSlotDescSlotId, pNode->slotId);
1,933,772✔
6357
  if (TSDB_CODE_SUCCESS == code) {
1,933,891!
6358
    code = tjsonAddObject(pJson, jkSlotDescDataType, dataTypeToJson, &pNode->dataType);
1,933,904✔
6359
  }
6360
  if (TSDB_CODE_SUCCESS == code) {
1,933,875!
6361
    code = tjsonAddBoolToObject(pJson, jkSlotDescReserve, pNode->reserve);
1,933,911✔
6362
  }
6363
  if (TSDB_CODE_SUCCESS == code) {
1,933,878!
6364
    code = tjsonAddBoolToObject(pJson, jkSlotDescOutput, pNode->output);
1,933,917✔
6365
  }
6366
  if (TSDB_CODE_SUCCESS == code) {
1,933,872✔
6367
    code = tjsonAddStringToObject(pJson, jkSlotDescName, pNode->name);
1,933,848✔
6368
  }
6369
  if (TSDB_CODE_SUCCESS == code) {
1,933,939✔
6370
    code = tjsonAddBoolToObject(pJson, jkSlotTag, pNode->tag);
1,933,921✔
6371
  }
6372

6373
  return code;
1,933,908✔
6374
}
6375

6376
static int32_t jsonToSlotDescNode(const SJson* pJson, void* pObj) {
168,081✔
6377
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
168,081✔
6378

6379
  int32_t code = tjsonGetSmallIntValue(pJson, jkSlotDescSlotId, &pNode->slotId);
168,081✔
6380
  if (TSDB_CODE_SUCCESS == code) {
168,149!
6381
    code = tjsonToObject(pJson, jkSlotDescDataType, jsonToDataType, &pNode->dataType);
168,151✔
6382
  }
6383
  if (TSDB_CODE_SUCCESS == code) {
168,134!
6384
    code = tjsonGetBoolValue(pJson, jkSlotDescReserve, &pNode->reserve);
168,138✔
6385
  }
6386
  if (TSDB_CODE_SUCCESS == code) {
168,106!
6387
    code = tjsonGetBoolValue(pJson, jkSlotDescOutput, &pNode->output);
168,112✔
6388
  }
6389
  if (TSDB_CODE_SUCCESS == code) {
168,110!
6390
    code = tjsonGetStringValue(pJson, jkSlotDescName, pNode->name);
168,116✔
6391
  }
6392
  if (TSDB_CODE_SUCCESS == code) {
168,115!
6393
    code = tjsonGetBoolValue(pJson, jkSlotTag, &pNode->tag);
168,126✔
6394
  }
6395

6396
  return code;
168,116✔
6397
}
6398

6399
static const char* jkColumnDefColName = "ColName";
6400
static const char* jkColumnDefDataType = "DataType";
6401
static const char* jkColumnDefComments = "Comments";
6402
static const char* jkColumnDefSma = "Sma";
6403
static const char* jkColumnDefOptions = "ColumnOptions";
6404

6405
static int32_t columnDefNodeToJson(const void* pObj, SJson* pJson) {
41,121✔
6406
  const SColumnDefNode* pNode = (const SColumnDefNode*)pObj;
41,121✔
6407

6408
  int32_t code = tjsonAddStringToObject(pJson, jkColumnDefColName, pNode->colName);
41,121✔
6409
  if (TSDB_CODE_SUCCESS == code) {
41,121!
6410
    code = tjsonAddObject(pJson, jkColumnDefDataType, dataTypeToJson, &pNode->dataType);
41,121✔
6411
  }
6412
  if (TSDB_CODE_SUCCESS == code) {
41,121!
6413
    code = tjsonAddBoolToObject(pJson, jkColumnDefSma, pNode->sma);
41,121✔
6414
  }
6415
  if (TSDB_CODE_SUCCESS == code) {
41,121!
6416
    code = tjsonAddObject(pJson, jkColumnDefOptions, nodeToJson, pNode->pOptions);
41,121✔
6417
  }
6418

6419
  return code;
41,121✔
6420
}
6421

6422
static int32_t jsonToColumnDefNode(const SJson* pJson, void* pObj) {
41,121✔
6423
  SColumnDefNode* pNode = (SColumnDefNode*)pObj;
41,121✔
6424

6425
  int32_t code = tjsonGetStringValue(pJson, jkColumnDefColName, pNode->colName);
41,121✔
6426
  if (TSDB_CODE_SUCCESS == code) {
41,121!
6427
    code = tjsonToObject(pJson, jkColumnDefDataType, jsonToDataType, &pNode->dataType);
41,121✔
6428
  }
6429
  if (TSDB_CODE_SUCCESS == code) {
41,121!
6430
    code = tjsonGetBoolValue(pJson, jkColumnDefSma, &pNode->sma);
41,121✔
6431
  }
6432
  if (TSDB_CODE_SUCCESS == code) {
41,121!
6433
    code = jsonToNodeObject(pJson, jkColumnDefOptions, (SNode**)&pNode->pOptions);
41,121✔
6434
  }
6435
  return code;
41,121✔
6436
}
6437

6438
static const char* jkDownstreamSourceAddr = "Addr";
6439
static const char* jkDownstreamSourceClientId = "ClientId";
6440
static const char* jkDownstreamSourceTaskId = "TaskId";
6441
static const char* jkDownstreamSourceSeriousId = "SeriousId";
6442
static const char* jkDownstreamSourceExecId = "ExecId";
6443
static const char* jkDownstreamSourceFetchMsgType = "FetchMsgType";
6444

6445
static int32_t downstreamSourceNodeToJson(const void* pObj, SJson* pJson) {
1,064✔
6446
  const SDownstreamSourceNode* pNode = (const SDownstreamSourceNode*)pObj;
1,064✔
6447

6448
  int32_t code = tjsonAddObject(pJson, jkDownstreamSourceAddr, queryNodeAddrToJson, &pNode->addr);
1,064✔
6449
  if (TSDB_CODE_SUCCESS == code) {
1,064!
6450
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceClientId, pNode->clientId);
1,064✔
6451
  }
6452
  if (TSDB_CODE_SUCCESS == code) {
1,064!
6453
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceTaskId, pNode->taskId);
1,064✔
6454
  }
6455
  if (TSDB_CODE_SUCCESS == code) {
1,064!
6456
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceSeriousId, pNode->sId);
1,064✔
6457
  }
6458
  if (TSDB_CODE_SUCCESS == code) {
1,064!
6459
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceExecId, pNode->execId);
1,064✔
6460
  }
6461
  if (TSDB_CODE_SUCCESS == code) {
1,064!
6462
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceFetchMsgType, pNode->fetchMsgType);
1,064✔
6463
  }
6464

6465
  return code;
1,064✔
6466
}
6467

6468
static int32_t jsonToDownstreamSourceNode(const SJson* pJson, void* pObj) {
874✔
6469
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
874✔
6470

6471
  int32_t code = tjsonToObject(pJson, jkDownstreamSourceAddr, jsonToQueryNodeAddr, &pNode->addr);
874✔
6472
  if (TSDB_CODE_SUCCESS == code) {
875!
6473
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceClientId, &pNode->clientId);
875✔
6474
  }
6475
  if (TSDB_CODE_SUCCESS == code) {
875!
6476
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceTaskId, &pNode->taskId);
875✔
6477
  }
6478
  if (TSDB_CODE_SUCCESS == code) {
875!
6479
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceSeriousId, &pNode->sId);
875✔
6480
  }
6481
  if (TSDB_CODE_SUCCESS == code) {
875✔
6482
    code = tjsonGetIntValue(pJson, jkDownstreamSourceExecId, &pNode->execId);
874✔
6483
  }
6484
  if (TSDB_CODE_SUCCESS == code) {
876✔
6485
    code = tjsonGetIntValue(pJson, jkDownstreamSourceFetchMsgType, &pNode->fetchMsgType);
875✔
6486
  }
6487

6488
  return code;
875✔
6489
}
6490

6491
static const char* jkWindowOffsetStartOffset = "StartOffset";
6492
static const char* jkWindowOffsetEndOffset = "EndOffset";
6493
static int32_t     windowOffsetNodeToJson(const void* pObj, SJson* pJson) {
6✔
6494
  const SWindowOffsetNode* pNode = (const SWindowOffsetNode*)pObj;
6✔
6495

6496
  int32_t code = tjsonAddObject(pJson, jkWindowOffsetStartOffset, nodeToJson, pNode->pStartOffset);
6✔
6497
  if (TSDB_CODE_SUCCESS == code) {
6!
6498
    code = tjsonAddObject(pJson, jkWindowOffsetEndOffset, nodeToJson, pNode->pEndOffset);
6✔
6499
  }
6500
  return code;
6✔
6501
}
6502

6503
static int32_t jsonToWindowOffsetNode(const SJson* pJson, void* pObj) {
×
6504
  SWindowOffsetNode* pNode = (SWindowOffsetNode*)pObj;
×
6505

6506
  int32_t code = jsonToNodeObject(pJson, jkWindowOffsetStartOffset, &pNode->pStartOffset);
×
6507
  if (TSDB_CODE_SUCCESS == code) {
×
6508
    code = jsonToNodeObject(pJson, jkWindowOffsetEndOffset, &pNode->pEndOffset);
×
6509
  }
6510
  return code;
×
6511
}
6512

6513
static const char* jkDatabaseOptionsBuffer = "Buffer";
6514
static const char* jkDatabaseOptionsCacheModel = "CacheModel";
6515
static const char* jkDatabaseOptionsCompressionLevel = "CompressionLevel";
6516
static const char* jkDatabaseOptionsDaysPerFileNode = "DaysPerFileNode";
6517
static const char* jkDatabaseOptionsDaysPerFile = "DaysPerFile";
6518
static const char* jkDatabaseOptionsFsyncPeriod = "FsyncPeriod";
6519
static const char* jkDatabaseOptionsMaxRowsPerBlock = "MaxRowsPerBlock";
6520
static const char* jkDatabaseOptionsMinRowsPerBlock = "MinRowsPerBlock";
6521
static const char* jkDatabaseOptionsKeep = "Keep";
6522
static const char* jkDatabaseOptionsPages = "Pages";
6523
static const char* jkDatabaseOptionsPagesize = "Pagesize";
6524
static const char* jkDatabaseOptionsPrecision = "Precision";
6525
static const char* jkDatabaseOptionsReplica = "Replica";
6526
static const char* jkDatabaseOptionsStrict = "Strict";
6527
static const char* jkDatabaseOptionsWalLevel = "WalLevel";
6528
static const char* jkDatabaseOptionsNumOfVgroups = "NumOfVgroups";
6529
static const char* jkDatabaseOptionsSingleStable = "SingleStable";
6530
static const char* jkDatabaseOptionsRetentions = "Retentions";
6531
static const char* jkDatabaseOptionsSchemaless = "Schemaless";
6532

6533
// shared storage options, the 'S3' ones are for backward compatibility.
6534
static const char* jkDatabaseOptionsSsChunkSize = "SsChunkSize";
6535
static const char* jkDatabaseOptionsSsKeepLocalNode = "SsKeepLocalNode";
6536
static const char* jkDatabaseOptionsSsKeepLocal = "SsKeepLocal";
6537
static const char* jkDatabaseOptionsSsCompact = "SsCompact";
6538
static const char* jkDatabaseOptionsS3ChunkSize = "S3ChunkSize";
6539
static const char* jkDatabaseOptionsS3KeepLocalNode = "S3KeepLocalNode";
6540
static const char* jkDatabaseOptionsS3KeepLocal = "S3KeepLocal";
6541
static const char* jkDatabaseOptionsS3Compact = "S3Compact";
6542

6543
static const char* jkDatabaseOptionsCompactIntervalNode = "compactIntervalNode";
6544
static const char* jkDatabaseOptionsCompactTimeRange = "compactTimeRange";
6545
static const char* jkDatabaseOptionsCompactTimeOffsetNode = "compactTimeOffsetNode";
6546

6547
static int32_t databaseOptionsToJson(const void* pObj, SJson* pJson) {
1,260✔
6548
  const SDatabaseOptions* pNode = (const SDatabaseOptions*)pObj;
1,260✔
6549

6550
  int32_t code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsBuffer, pNode->buffer);
1,260✔
6551
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6552
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsCacheModel, pNode->cacheModel);
1,260✔
6553
  }
6554
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6555
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsCompressionLevel, pNode->compressionLevel);
1,260✔
6556
  }
6557
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6558
    code = tjsonAddObject(pJson, jkDatabaseOptionsDaysPerFileNode, nodeToJson, pNode->pDaysPerFile);
1,260✔
6559
  }
6560
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6561
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsDaysPerFile, pNode->daysPerFile);
1,260✔
6562
  }
6563
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6564
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsFsyncPeriod, pNode->fsyncPeriod);
1,260✔
6565
  }
6566
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6567
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsMaxRowsPerBlock, pNode->maxRowsPerBlock);
1,260✔
6568
  }
6569
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6570
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsMinRowsPerBlock, pNode->minRowsPerBlock);
1,260✔
6571
  }
6572
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6573
    code = nodeListToJson(pJson, jkDatabaseOptionsKeep, pNode->pKeep);
1,260✔
6574
  }
6575
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6576
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsPages, pNode->pages);
1,260✔
6577
  }
6578
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6579
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsPagesize, pNode->pagesize);
1,260✔
6580
  }
6581
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6582
    code = tjsonAddStringToObject(pJson, jkDatabaseOptionsPrecision, pNode->precisionStr);
1,260✔
6583
  }
6584
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6585
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsReplica, pNode->replica);
1,260✔
6586
  }
6587
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6588
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsStrict, pNode->strict);
1,260✔
6589
  }
6590
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6591
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsWalLevel, pNode->walLevel);
1,260✔
6592
  }
6593
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6594
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsNumOfVgroups, pNode->numOfVgroups);
1,260✔
6595
  }
6596
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6597
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSingleStable, pNode->singleStable);
1,260✔
6598
  }
6599
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6600
    code = nodeListToJson(pJson, jkDatabaseOptionsRetentions, pNode->pRetentions);
1,260✔
6601
  }
6602
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6603
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSchemaless, pNode->schemaless);
1,260✔
6604
  }
6605
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6606
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSsChunkSize, pNode->ssChunkSize);
1,260✔
6607
  }
6608
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6609
    code = tjsonAddObject(pJson, jkDatabaseOptionsSsKeepLocalNode, nodeToJson, pNode->ssKeepLocalStr);
1,260✔
6610
  }
6611
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6612
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSsKeepLocal, pNode->ssKeepLocal);
1,260✔
6613
  }
6614
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6615
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSsCompact, pNode->ssCompact);
1,260✔
6616
  }
6617
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6618
    code = tjsonAddObject(pJson, jkDatabaseOptionsCompactIntervalNode, nodeToJson, pNode->pCompactIntervalNode);
1,260✔
6619
  }
6620
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6621
    code = nodeListToJson(pJson, jkDatabaseOptionsCompactTimeRange, pNode->pCompactTimeRangeList);
1,260✔
6622
  }
6623
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6624
    code = tjsonAddObject(pJson, jkDatabaseOptionsCompactTimeOffsetNode, nodeToJson, pNode->pCompactTimeOffsetNode);
1,260✔
6625
  }
6626

6627
  return code;
1,260✔
6628
}
6629

6630
static int32_t jsonToDatabaseOptions(const SJson* pJson, void* pObj) {
1,260✔
6631
  SDatabaseOptions* pNode = (SDatabaseOptions*)pObj;
1,260✔
6632

6633
  int32_t code = tjsonGetIntValue(pJson, jkDatabaseOptionsBuffer, &pNode->buffer);
1,260✔
6634
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6635
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsCacheModel, &pNode->cacheModel);
1,260✔
6636
  }
6637
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6638
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsCompressionLevel, &pNode->compressionLevel);
1,260✔
6639
  }
6640
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6641
    code = jsonToNodeObject(pJson, jkDatabaseOptionsDaysPerFileNode, (SNode**)&pNode->pDaysPerFile);
1,260✔
6642
  }
6643
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6644
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsDaysPerFile, &pNode->daysPerFile);
1,260✔
6645
  }
6646
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6647
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsFsyncPeriod, &pNode->fsyncPeriod);
1,260✔
6648
  }
6649
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6650
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsMaxRowsPerBlock, &pNode->maxRowsPerBlock);
1,260✔
6651
  }
6652
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6653
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsMinRowsPerBlock, &pNode->minRowsPerBlock);
1,260✔
6654
  }
6655
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6656
    code = jsonToNodeList(pJson, jkDatabaseOptionsKeep, &pNode->pKeep);
1,260✔
6657
  }
6658
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6659
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsPages, &pNode->pages);
1,260✔
6660
  }
6661
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6662
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsPagesize, &pNode->pagesize);
1,260✔
6663
  }
6664
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6665
    code = tjsonGetStringValue(pJson, jkDatabaseOptionsPrecision, pNode->precisionStr);
1,260✔
6666
  }
6667
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6668
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsReplica, &pNode->replica);
1,260✔
6669
  }
6670
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6671
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsStrict, &pNode->strict);
1,260✔
6672
  }
6673
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6674
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsWalLevel, &pNode->walLevel);
1,260✔
6675
  }
6676
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6677
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsNumOfVgroups, &pNode->numOfVgroups);
1,260✔
6678
  }
6679
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6680
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsSingleStable, &pNode->singleStable);
1,260✔
6681
  }
6682
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6683
    code = jsonToNodeList(pJson, jkDatabaseOptionsRetentions, &pNode->pRetentions);
1,260✔
6684
  }
6685
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6686
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsSchemaless, &pNode->schemaless);
1,260✔
6687
  }
6688
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6689
    if (tjsonGetObjectItem(pJson, jkDatabaseOptionsSsChunkSize) != NULL) {
1,260!
6690
      code = tjsonGetIntValue(pJson, jkDatabaseOptionsSsChunkSize, &pNode->ssChunkSize);
1,260✔
6691
    } else {
6692
      code = tjsonGetIntValue(pJson, jkDatabaseOptionsS3ChunkSize, &pNode->ssChunkSize);
×
6693
    }
6694
  }
6695
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6696
    if (tjsonGetObjectItem(pJson, jkDatabaseOptionsSsKeepLocalNode) != NULL) {
1,260!
6697
      code = jsonToNodeObject(pJson, jkDatabaseOptionsSsKeepLocalNode, (SNode**)&pNode->ssKeepLocalStr);
×
6698
    } else {
6699
      code = jsonToNodeObject(pJson, jkDatabaseOptionsSsKeepLocalNode, (SNode**)&pNode->ssKeepLocalStr);
1,260✔
6700
    }
6701
  }
6702
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6703
    if (tjsonGetObjectItem(pJson, jkDatabaseOptionsSsKeepLocal) != NULL) {
1,260!
6704
      code = tjsonGetIntValue(pJson, jkDatabaseOptionsSsKeepLocal, &pNode->ssKeepLocal);
1,260✔
6705
    } else {
6706
      code = tjsonGetIntValue(pJson, jkDatabaseOptionsS3KeepLocal, &pNode->ssKeepLocal);
×
6707
    }
6708
  }
6709
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6710
    if (tjsonGetObjectItem(pJson, jkDatabaseOptionsSsCompact) != NULL) {
1,260!
6711
      code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsSsCompact, &pNode->ssCompact);
1,260✔
6712
    } else {
6713
      code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsS3Compact, &pNode->ssCompact);
×
6714
    }
6715
  }
6716
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6717
    code = jsonToNodeObject(pJson, jkDatabaseOptionsCompactIntervalNode, (SNode**)&pNode->pCompactIntervalNode);
1,260✔
6718
  }
6719
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6720
    code = jsonToNodeList(pJson, jkDatabaseOptionsCompactTimeRange, &pNode->pCompactTimeRangeList);
1,260✔
6721
  }
6722
  if (TSDB_CODE_SUCCESS == code) {
1,260!
6723
    code = jsonToNodeObject(pJson, jkDatabaseOptionsCompactTimeOffsetNode, (SNode**)&pNode->pCompactTimeOffsetNode);
1,260✔
6724
  }
6725

6726
  return code;
1,260✔
6727
}
6728

6729
static const char* jkTableOptionsComment = "Comment";
6730
static const char* jkTableOptionsMaxDelay = "MaxDelay";
6731
static const char* jkTableOptionsWatermark = "Watermark";
6732
static const char* jkTableOptionsDeleteMark = "DeleteMark";
6733
static const char* jkTableOptionsRollupFuncs = "RollupFuncs";
6734
static const char* jkTableOptionsTtl = "Ttl";
6735
static const char* jkTableOptionsSma = "Sma";
6736

6737
static int32_t tableOptionsToJson(const void* pObj, SJson* pJson) {
234✔
6738
  const STableOptions* pNode = (const STableOptions*)pObj;
234✔
6739

6740
  int32_t code = tjsonAddStringToObject(pJson, jkTableOptionsComment, pNode->comment);
234✔
6741
  if (TSDB_CODE_SUCCESS == code) {
234!
6742
    code = nodeListToJson(pJson, jkTableOptionsMaxDelay, pNode->pMaxDelay);
234✔
6743
  }
6744
  if (TSDB_CODE_SUCCESS == code) {
234!
6745
    code = nodeListToJson(pJson, jkTableOptionsWatermark, pNode->pWatermark);
234✔
6746
  }
6747
  if (TSDB_CODE_SUCCESS == code) {
234!
6748
    code = nodeListToJson(pJson, jkTableOptionsDeleteMark, pNode->pDeleteMark);
234✔
6749
  }
6750
  if (TSDB_CODE_SUCCESS == code) {
234!
6751
    code = nodeListToJson(pJson, jkTableOptionsRollupFuncs, pNode->pRollupFuncs);
234✔
6752
  }
6753
  if (TSDB_CODE_SUCCESS == code) {
234!
6754
    code = tjsonAddIntegerToObject(pJson, jkTableOptionsTtl, pNode->ttl);
234✔
6755
  }
6756
  if (TSDB_CODE_SUCCESS == code) {
234!
6757
    code = nodeListToJson(pJson, jkTableOptionsSma, pNode->pSma);
234✔
6758
  }
6759

6760
  return code;
234✔
6761
}
6762

6763
static int32_t jsonToTableOptions(const SJson* pJson, void* pObj) {
288✔
6764
  STableOptions* pNode = (STableOptions*)pObj;
288✔
6765

6766
  int32_t code = tjsonGetStringValue(pJson, jkTableOptionsComment, pNode->comment);
288✔
6767
  if (TSDB_CODE_SUCCESS == code) {
288!
6768
    code = jsonToNodeList(pJson, jkTableOptionsMaxDelay, &pNode->pMaxDelay);
288✔
6769
  }
6770
  if (TSDB_CODE_SUCCESS == code) {
288!
6771
    code = jsonToNodeList(pJson, jkTableOptionsWatermark, &pNode->pWatermark);
288✔
6772
  }
6773
  if (TSDB_CODE_SUCCESS == code) {
288!
6774
    code = jsonToNodeList(pJson, jkTableOptionsDeleteMark, &pNode->pDeleteMark);
288✔
6775
  }
6776
  if (TSDB_CODE_SUCCESS == code) {
288!
6777
    code = jsonToNodeList(pJson, jkTableOptionsRollupFuncs, &pNode->pRollupFuncs);
288✔
6778
  }
6779
  if (TSDB_CODE_SUCCESS == code) {
288!
6780
    code = tjsonGetIntValue(pJson, jkTableOptionsTtl, &pNode->ttl);
288✔
6781
  }
6782
  if (TSDB_CODE_SUCCESS == code) {
288!
6783
    code = jsonToNodeList(pJson, jkTableOptionsSma, &pNode->pSma);
288✔
6784
  }
6785

6786
  return code;
288✔
6787
}
6788

6789
static const char* jkColumnOptionsEncode = "encode";
6790
static const char* jkColumnOptionsCompress = "compress";
6791
static const char* jkColumnOptionsLevel = "level";
6792
static int32_t     columnOptionsToJson(const void* pObj, SJson* pJson) {
37,998✔
6793
  const SColumnOptions* pNode = (const SColumnOptions*)pObj;
37,998✔
6794
  int32_t               code = tjsonAddStringToObject(pJson, jkColumnOptionsEncode, pNode->encode);
37,998✔
6795
  code = tjsonAddStringToObject(pJson, jkColumnOptionsCompress, pNode->compress);
37,998✔
6796
  code = tjsonAddStringToObject(pJson, jkColumnOptionsLevel, pNode->compressLevel);
37,998✔
6797
  return code;
37,998✔
6798
}
6799

6800
static int32_t jsonToColumnOptions(const SJson* pJson, void* pObj) {
37,998✔
6801
  SColumnOptions* pNode = (SColumnOptions*)pObj;
37,998✔
6802

6803
  int32_t code = tjsonGetStringValue(pJson, jkColumnOptionsEncode, pNode->encode);
37,998✔
6804
  code = tjsonGetStringValue(pJson, jkColumnOptionsCompress, pNode->compress);
37,998✔
6805
  code = tjsonGetStringValue(pJson, jkColumnOptionsLevel, pNode->compressLevel);
37,998✔
6806
  return code;
37,998✔
6807
}
6808

6809
static const char* jkIndexOptionsFuncs = "Funcs";
6810
static const char* jkIndexOptionsInterval = "Interval";
6811
static const char* jkIndexOptionsOffset = "Offset";
6812
static const char* jkIndexOptionsSliding = "Sliding";
6813
static const char* jkIndexOptionsStreamOptions = "StreamOptions";
6814

6815
static int32_t indexOptionsToJson(const void* pObj, SJson* pJson) {
×
6816
  const SIndexOptions* pNode = (const SIndexOptions*)pObj;
×
6817

6818
  int32_t code = nodeListToJson(pJson, jkIndexOptionsFuncs, pNode->pFuncs);
×
6819
  if (TSDB_CODE_SUCCESS == code) {
×
6820
    code = tjsonAddObject(pJson, jkIndexOptionsInterval, nodeToJson, pNode->pInterval);
×
6821
  }
6822
  if (TSDB_CODE_SUCCESS == code) {
×
6823
    code = tjsonAddObject(pJson, jkIndexOptionsOffset, nodeToJson, pNode->pOffset);
×
6824
  }
6825
  if (TSDB_CODE_SUCCESS == code) {
×
6826
    code = tjsonAddObject(pJson, jkIndexOptionsSliding, nodeToJson, pNode->pSliding);
×
6827
  }
6828
  if (TSDB_CODE_SUCCESS == code) {
×
6829
    code = tjsonAddObject(pJson, jkIndexOptionsStreamOptions, nodeToJson, pNode->pStreamOptions);
×
6830
  }
6831

6832
  return code;
×
6833
}
6834

6835
static int32_t jsonToIndexOptions(const SJson* pJson, void* pObj) {
×
6836
  SIndexOptions* pNode = (SIndexOptions*)pObj;
×
6837

6838
  int32_t code = jsonToNodeList(pJson, jkIndexOptionsFuncs, &pNode->pFuncs);
×
6839
  if (TSDB_CODE_SUCCESS == code) {
×
6840
    code = jsonToNodeObject(pJson, jkIndexOptionsInterval, &pNode->pInterval);
×
6841
  }
6842
  if (TSDB_CODE_SUCCESS == code) {
×
6843
    code = jsonToNodeObject(pJson, jkIndexOptionsOffset, &pNode->pOffset);
×
6844
  }
6845
  if (TSDB_CODE_SUCCESS == code) {
×
6846
    code = jsonToNodeObject(pJson, jkIndexOptionsSliding, &pNode->pSliding);
×
6847
  }
6848
  if (TSDB_CODE_SUCCESS == code) {
×
6849
    code = jsonToNodeObject(pJson, jkIndexOptionsStreamOptions, &pNode->pStreamOptions);
×
6850
  }
6851

6852
  return code;
×
6853
}
6854

6855
static const char* jkExplainOptionsVerbose = "Verbose";
6856
static const char* jkExplainOptionsRatio = "Ratio";
6857

6858
static int32_t explainOptionsToJson(const void* pObj, SJson* pJson) {
90✔
6859
  const SExplainOptions* pNode = (const SExplainOptions*)pObj;
90✔
6860

6861
  int32_t code = tjsonAddBoolToObject(pJson, jkExplainOptionsVerbose, pNode->verbose);
90✔
6862
  if (TSDB_CODE_SUCCESS == code) {
90!
6863
    code = tjsonAddDoubleToObject(pJson, jkExplainOptionsRatio, pNode->ratio);
90✔
6864
  }
6865

6866
  return code;
90✔
6867
}
6868

6869
static int32_t jsonToExplainOptions(const SJson* pJson, void* pObj) {
90✔
6870
  SExplainOptions* pNode = (SExplainOptions*)pObj;
90✔
6871

6872
  int32_t code = tjsonGetBoolValue(pJson, jkExplainOptionsVerbose, &pNode->verbose);
90✔
6873
  if (TSDB_CODE_SUCCESS == code) {
90!
6874
    code = tjsonGetDoubleValue(pJson, jkExplainOptionsRatio, &pNode->ratio);
90✔
6875
  }
6876

6877
  return code;
90✔
6878
}
6879

6880
static const char* jkStreamOptionsTriggerType = "TriggerType";
6881
static const char* jkStreamOptionsDelay = "Delay";
6882
static const char* jkStreamOptionsWatermark = "Watermark";
6883
static const char* jkStreamOptionsDeleteMark = "DeleteMark";
6884
static const char* jkStreamOptionsFillHistory = "FillHistory";
6885
static const char* jkStreamOptionsIgnoreExpired = "IgnoreExpired";
6886
static const char* jkStreamOptionsRecInterval = "RecInterval";
6887

6888
static int32_t streamOptionsToJson(const void* pObj, SJson* pJson) {
468✔
6889
  const SStreamTriggerOptions* pNode = (const SStreamTriggerOptions*)pObj;
468✔
6890

6891
  return 0;
468✔
6892
}
6893

6894
static int32_t jsonToStreamOptions(const SJson* pJson, void* pObj) {
468✔
6895
  SStreamTriggerOptions* pNode = (SStreamTriggerOptions*)pObj;
468✔
6896

6897
  return 0;
468✔
6898
}
6899

6900
static const char* jkStreamNotifyOptionsAddrUrls = "AddrUrls";
6901
static const char* jkStreamNotifyOptionsEventType = "EventType";
6902
static const char* jkStreamNotifyOptionsErrorHandle = "ErrorHandle";
6903
static const char* jkStreamNotifyOptionsNotifyHistory = "NotifyHistory";
6904

6905
static int32_t streamNotifyOptionsToJson(const void* pObj, SJson* pJson) {
84✔
6906
  const SStreamNotifyOptions* pNotifyOption = (const SStreamNotifyOptions*)pObj;
84✔
6907
  int32_t                     code = nodeListToJson(pJson, jkStreamNotifyOptionsAddrUrls, pNotifyOption->pAddrUrls);
84✔
6908

6909
  return code;
84✔
6910
}
6911

6912
static int32_t jsonToStreamNotifyOptions(const SJson* pJson, void* pObj) {
84✔
6913
  SStreamNotifyOptions* pNotifyOption = (SStreamNotifyOptions*)pObj;
84✔
6914
  int32_t               code = jsonToNodeList(pJson, jkStreamNotifyOptionsAddrUrls, &pNotifyOption->pAddrUrls);
84✔
6915
  int32_t               val = 0;
84✔
6916

6917
  return code;
84✔
6918
}
6919

6920
static const char* jkColumnReferenceColumnName = "ColumnName";
6921
static const char* jkColumnReferenceRefDbName = "RefDbName";
6922
static const char* jkColumnReferenceRefTableName = "RefTableName";
6923
static const char* jkColumnReferenceRefColumnName = "RefColumnName";
6924
static int32_t     columnReferenceToJson(const void* pObj, SJson* pJson) {
×
6925
  const SColumnRefNode* pNode = (const SColumnRefNode*)pObj;
×
6926
  int32_t               code = tjsonAddStringToObject(pJson, jkColumnReferenceColumnName, pNode->colName);
×
6927
  if (TSDB_CODE_SUCCESS == code) {
×
6928
    code = tjsonAddStringToObject(pJson, jkColumnReferenceRefDbName, pNode->refDbName);
×
6929
  }
6930
  if (TSDB_CODE_SUCCESS == code) {
×
6931
    code = tjsonAddStringToObject(pJson, jkColumnReferenceRefTableName, pNode->refTableName);
×
6932
  }
6933
  if (TSDB_CODE_SUCCESS == code) {
×
6934
    code = tjsonAddStringToObject(pJson, jkColumnReferenceRefColumnName, pNode->refColName);
×
6935
  }
6936
  return code;
×
6937
}
6938

6939
static int32_t jsonToColumnReference(const SJson* pJson, void* pObj) {
×
6940
  SColumnRefNode* pNode = (SColumnRefNode*)pObj;
×
6941

6942
  int32_t code = tjsonGetStringValue(pJson, jkColumnReferenceColumnName, pNode->colName);
×
6943
  if (TSDB_CODE_SUCCESS == code) {
×
6944
    code = tjsonGetStringValue(pJson, jkColumnReferenceRefDbName, pNode->refDbName);
×
6945
  }
6946
  if (TSDB_CODE_SUCCESS == code) {
×
6947
    code = tjsonGetStringValue(pJson, jkColumnReferenceRefTableName, pNode->refTableName);
×
6948
  }
6949
  if (TSDB_CODE_SUCCESS == code) {
×
6950
    code = tjsonGetStringValue(pJson, jkColumnReferenceRefColumnName, pNode->refColName);
×
6951
  }
6952
  return code;
×
6953
}
6954

6955
static const char* jkWhenThenWhen = "When";
6956
static const char* jkWhenThenThen = "Then";
6957

6958
static int32_t whenThenNodeToJson(const void* pObj, SJson* pJson) {
287✔
6959
  const SWhenThenNode* pNode = (const SWhenThenNode*)pObj;
287✔
6960

6961
  int32_t code = exprNodeToJson(pObj, pJson);
287✔
6962
  if (TSDB_CODE_SUCCESS == code) {
287!
6963
    code = tjsonAddObject(pJson, jkWhenThenWhen, nodeToJson, pNode->pWhen);
287✔
6964
  }
6965
  if (TSDB_CODE_SUCCESS == code) {
287!
6966
    code = tjsonAddObject(pJson, jkWhenThenThen, nodeToJson, pNode->pThen);
287✔
6967
  }
6968

6969
  return code;
287✔
6970
}
6971

6972
static int32_t jsonToWhenThenNode(const SJson* pJson, void* pObj) {
165✔
6973
  SWhenThenNode* pNode = (SWhenThenNode*)pObj;
165✔
6974

6975
  int32_t code = jsonToExprNode(pJson, pObj);
165✔
6976
  if (TSDB_CODE_SUCCESS == code) {
165!
6977
    code = jsonToNodeObject(pJson, jkWhenThenWhen, &pNode->pWhen);
165✔
6978
  }
6979
  if (TSDB_CODE_SUCCESS == code) {
165!
6980
    code = jsonToNodeObject(pJson, jkWhenThenThen, &pNode->pThen);
165✔
6981
  }
6982

6983
  return code;
165✔
6984
}
6985

6986
static const char* jkCaseWhenCase = "Case";
6987
static const char* jkCaseWhenWhenThenList = "WhenThenList";
6988
static const char* jkCaseWhenElse = "Else";
6989

6990
static int32_t caseWhenNodeToJson(const void* pObj, SJson* pJson) {
209✔
6991
  const SCaseWhenNode* pNode = (const SCaseWhenNode*)pObj;
209✔
6992

6993
  int32_t code = exprNodeToJson(pObj, pJson);
209✔
6994
  if (TSDB_CODE_SUCCESS == code) {
209!
6995
    code = tjsonAddObject(pJson, jkCaseWhenCase, nodeToJson, pNode->pCase);
209✔
6996
  }
6997
  if (TSDB_CODE_SUCCESS == code) {
209!
6998
    code = nodeListToJson(pJson, jkCaseWhenWhenThenList, pNode->pWhenThenList);
209✔
6999
  }
7000
  if (TSDB_CODE_SUCCESS == code) {
209!
7001
    code = tjsonAddObject(pJson, jkCaseWhenElse, nodeToJson, pNode->pElse);
209✔
7002
  }
7003

7004
  return code;
209✔
7005
}
7006

7007
static int32_t jsonToCaseWhenNode(const SJson* pJson, void* pObj) {
117✔
7008
  SCaseWhenNode* pNode = (SCaseWhenNode*)pObj;
117✔
7009

7010
  int32_t code = jsonToExprNode(pJson, pObj);
117✔
7011
  if (TSDB_CODE_SUCCESS == code) {
117!
7012
    code = jsonToNodeObject(pJson, jkCaseWhenCase, &pNode->pCase);
117✔
7013
  }
7014
  if (TSDB_CODE_SUCCESS == code) {
117!
7015
    code = jsonToNodeList(pJson, jkCaseWhenWhenThenList, &pNode->pWhenThenList);
117✔
7016
  }
7017
  if (TSDB_CODE_SUCCESS == code) {
117!
7018
    code = jsonToNodeObject(pJson, jkCaseWhenElse, &pNode->pElse);
117✔
7019
  }
7020

7021
  return code;
117✔
7022
}
7023

7024
static const char* jkDataBlockDescDataBlockId = "DataBlockId";
7025
static const char* jkDataBlockDescSlots = "Slots";
7026
static const char* jkDataBlockTotalRowSize = "TotalRowSize";
7027
static const char* jkDataBlockOutputRowSize = "OutputRowSize";
7028
static const char* jkDataBlockPrecision = "Precision";
7029

7030
static int32_t dataBlockDescNodeToJson(const void* pObj, SJson* pJson) {
694,879✔
7031
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
694,879✔
7032

7033
  int32_t code = tjsonAddIntegerToObject(pJson, jkDataBlockDescDataBlockId, pNode->dataBlockId);
694,879✔
7034
  if (TSDB_CODE_SUCCESS == code) {
694,948!
7035
    code = tjsonAddIntegerToObject(pJson, jkDataBlockTotalRowSize, pNode->totalRowSize);
694,948✔
7036
  }
7037
  if (TSDB_CODE_SUCCESS == code) {
694,951✔
7038
    code = tjsonAddIntegerToObject(pJson, jkDataBlockOutputRowSize, pNode->outputRowSize);
694,926✔
7039
  }
7040
  if (TSDB_CODE_SUCCESS == code) {
694,983✔
7041
    code = nodeListToJson(pJson, jkDataBlockDescSlots, pNode->pSlots);
694,967✔
7042
  }
7043
  if (TSDB_CODE_SUCCESS == code) {
694,974✔
7044
    code = tjsonAddIntegerToObject(pJson, jkDataBlockPrecision, pNode->precision);
694,970✔
7045
  }
7046

7047
  return code;
694,978✔
7048
}
7049

7050
static int32_t jsonToDataBlockDescNode(const SJson* pJson, void* pObj) {
51,844✔
7051
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
51,844✔
7052

7053
  int32_t code = tjsonGetSmallIntValue(pJson, jkDataBlockDescDataBlockId, &pNode->dataBlockId);
51,844✔
7054
  if (TSDB_CODE_SUCCESS == code) {
51,852!
7055
    code = tjsonGetIntValue(pJson, jkDataBlockTotalRowSize, &pNode->totalRowSize);
51,852✔
7056
  }
7057
  if (TSDB_CODE_SUCCESS == code) {
51,850✔
7058
    code = tjsonGetIntValue(pJson, jkDataBlockOutputRowSize, &pNode->outputRowSize);
51,848✔
7059
  }
7060
  if (TSDB_CODE_SUCCESS == code) {
51,854✔
7061
    code = jsonToNodeList(pJson, jkDataBlockDescSlots, &pNode->pSlots);
51,853✔
7062
  }
7063
  if (TSDB_CODE_SUCCESS == code) {
51,856✔
7064
    code = tjsonGetUTinyIntValue(pJson, jkDataBlockPrecision, &pNode->precision);
51,855✔
7065
  }
7066

7067
  return code;
51,852✔
7068
}
7069

7070
static const char* jkSetOperatorOpType = "OpType";
7071
static const char* jkSetOperatorProjections = "Projections";
7072
static const char* jkSetOperatorLeft = "Left";
7073
static const char* jkSetOperatorRight = "Right";
7074
static const char* jkSetOperatorOrderByList = "OrderByList";
7075
static const char* jkSetOperatorLimit = "Limit";
7076

7077
static int32_t setOperatorToJson(const void* pObj, SJson* pJson) {
192✔
7078
  const SSetOperator* pNode = (const SSetOperator*)pObj;
192✔
7079

7080
  int32_t code = tjsonAddIntegerToObject(pJson, jkSetOperatorOpType, pNode->opType);
192✔
7081
  if (TSDB_CODE_SUCCESS == code) {
192!
7082
    code = nodeListToJson(pJson, jkSetOperatorProjections, pNode->pProjectionList);
192✔
7083
  }
7084
  if (TSDB_CODE_SUCCESS == code) {
192!
7085
    code = tjsonAddObject(pJson, jkSetOperatorLeft, nodeToJson, pNode->pLeft);
192✔
7086
  }
7087
  if (TSDB_CODE_SUCCESS == code) {
192!
7088
    code = tjsonAddObject(pJson, jkSetOperatorRight, nodeToJson, pNode->pRight);
192✔
7089
  }
7090
  if (TSDB_CODE_SUCCESS == code) {
192!
7091
    code = nodeListToJson(pJson, jkSetOperatorOrderByList, pNode->pOrderByList);
192✔
7092
  }
7093
  if (TSDB_CODE_SUCCESS == code) {
192!
7094
    code = tjsonAddObject(pJson, jkSetOperatorLimit, nodeToJson, pNode->pLimit);
192✔
7095
  }
7096

7097
  return code;
192✔
7098
}
7099

7100
static int32_t jsonToSetOperator(const SJson* pJson, void* pObj) {
192✔
7101
  SSetOperator* pNode = (SSetOperator*)pObj;
192✔
7102

7103
  int32_t code = TSDB_CODE_SUCCESS;
192✔
7104
  tjsonGetNumberValue(pJson, jkSetOperatorOpType, pNode->opType, code);
192✔
7105
  if (TSDB_CODE_SUCCESS == code) {
192!
7106
    code = jsonToNodeList(pJson, jkSetOperatorProjections, &pNode->pProjectionList);
192✔
7107
  }
7108
  if (TSDB_CODE_SUCCESS == code) {
192!
7109
    code = jsonToNodeObject(pJson, jkSetOperatorLeft, &pNode->pLeft);
192✔
7110
  }
7111
  if (TSDB_CODE_SUCCESS == code) {
192!
7112
    code = jsonToNodeObject(pJson, jkSetOperatorRight, &pNode->pRight);
192✔
7113
  }
7114
  if (TSDB_CODE_SUCCESS == code) {
192!
7115
    code = jsonToNodeList(pJson, jkSetOperatorOrderByList, &pNode->pOrderByList);
192✔
7116
  }
7117
  if (TSDB_CODE_SUCCESS == code) {
192!
7118
    code = jsonToNodeObject(pJson, jkSetOperatorLimit, &pNode->pLimit);
192✔
7119
  }
7120

7121
  return code;
192✔
7122
}
7123

7124
static const char* jkTimeRangeStart = "start";
7125
static const char* jkTimeRangeEnd = "end";
7126

7127
static int32_t timeRangeNodeToJson(const void* pObj, SJson* pJson) {
1,898✔
7128
  const STimeRangeNode* pNode = (const STimeRangeNode*)pObj;
1,898✔
7129

7130
  int32_t code = tjsonAddObject(pJson, jkTimeRangeStart, nodeToJson, pNode->pStart);
1,898✔
7131
  if (TSDB_CODE_SUCCESS == code) {
1,898!
7132
    code = tjsonAddObject(pJson, jkTimeRangeEnd, nodeToJson, pNode->pEnd);
1,898✔
7133
  }
7134

7135
  return code;
1,898✔
7136
}
7137

7138
static int32_t jsonToTimeRangeNode(const SJson* pJson, void* pObj) {
12,463✔
7139
  STimeRangeNode* pNode = (STimeRangeNode*)pObj;
12,463✔
7140

7141
  int32_t code = jsonToNodeObject(pJson, jkTimeRangeStart, &pNode->pStart);
12,463✔
7142
  if (TSDB_CODE_SUCCESS == code) {
12,463!
7143
    code = jsonToNodeObject(pJson, jkTimeRangeEnd, &pNode->pEnd);
12,463✔
7144
  }
7145
  return code;
12,463✔
7146
}
7147

7148
static const char* jkSelectStmtDistinct = "Distinct";
7149
static const char* jkSelectStmtProjections = "Projections";
7150
static const char* jkSelectStmtProjectionsBind = "ProjectionsBind";
7151
static const char* jkSelectStmtFrom = "From";
7152
static const char* jkSelectStmtWhere = "Where";
7153
static const char* jkSelectStmtPartitionBy = "PartitionBy";
7154
static const char* jkSelectStmtTags = "Tags";
7155
static const char* jkSelectStmtSubtable = "Subtable";
7156
static const char* jkSelectStmtWindow = "Window";
7157
static const char* jkSelectStmtGroupBy = "GroupBy";
7158
static const char* jkSelectStmtHaving = "Having";
7159
static const char* jkSelectStmtOrderBy = "OrderBy";
7160
static const char* jkSelectStmtLimit = "Limit";
7161
static const char* jkSelectStmtSlimit = "Slimit";
7162
static const char* jkSelectStmtStmtName = "StmtName";
7163
static const char* jkSelectStmtHasAggFuncs = "HasAggFuncs";
7164
static const char* jkSelectStmtInterpFuncs = "HasInterpFuncs";
7165
static const char* jkSelectStmtInterpFill = "InterpFill";
7166
static const char* jkSelectStmtInterpEvery = "InterpEvery";
7167
static const char* jkSelectStmtTwaOrElapsedFuncs = "HasTwaOrElapsedFuncs";
7168

7169
static int32_t selectStmtToJson(const void* pObj, SJson* pJson) {
7,709✔
7170
  const SSelectStmt* pNode = (const SSelectStmt*)pObj;
7,709✔
7171

7172
  int32_t code = tjsonAddBoolToObject(pJson, jkSelectStmtDistinct, pNode->isDistinct);
7,709✔
7173
  if (TSDB_CODE_SUCCESS == code) {
7,709!
7174
    code = nodeListToJson(pJson, jkSelectStmtProjections, pNode->pProjectionList);
7,709✔
7175
  }
7176
  if (TSDB_CODE_SUCCESS == code) {
7,709!
7177
    code = nodeListToJson(pJson, jkSelectStmtProjectionsBind, pNode->pProjectionBindList);
7,709✔
7178
  }
7179
  if (TSDB_CODE_SUCCESS == code) {
7,709!
7180
    code = tjsonAddObject(pJson, jkSelectStmtFrom, nodeToJson, pNode->pFromTable);
7,709✔
7181
  }
7182
  if (TSDB_CODE_SUCCESS == code) {
7,709!
7183
    code = tjsonAddObject(pJson, jkSelectStmtWhere, nodeToJson, pNode->pWhere);
7,709✔
7184
  }
7185
  if (TSDB_CODE_SUCCESS == code) {
7,709!
7186
    code = nodeListToJson(pJson, jkSelectStmtPartitionBy, pNode->pPartitionByList);
7,709✔
7187
  }
7188
  if (TSDB_CODE_SUCCESS == code) {
7,709!
7189
    code = tjsonAddObject(pJson, jkSelectStmtWindow, nodeToJson, pNode->pWindow);
7,709✔
7190
  }
7191
  if (TSDB_CODE_SUCCESS == code) {
7,709!
7192
    code = nodeListToJson(pJson, jkSelectStmtGroupBy, pNode->pGroupByList);
7,709✔
7193
  }
7194
  if (TSDB_CODE_SUCCESS == code) {
7,709!
7195
    code = tjsonAddObject(pJson, jkSelectStmtHaving, nodeToJson, pNode->pHaving);
7,709✔
7196
  }
7197
  if (TSDB_CODE_SUCCESS == code) {
7,709!
7198
    code = nodeListToJson(pJson, jkSelectStmtOrderBy, pNode->pOrderByList);
7,709✔
7199
  }
7200
  if (TSDB_CODE_SUCCESS == code) {
7,709!
7201
    code = tjsonAddObject(pJson, jkSelectStmtLimit, nodeToJson, pNode->pLimit);
7,709✔
7202
  }
7203
  if (TSDB_CODE_SUCCESS == code) {
7,709!
7204
    code = tjsonAddObject(pJson, jkSelectStmtSlimit, nodeToJson, pNode->pSlimit);
7,709✔
7205
  }
7206
  if (TSDB_CODE_SUCCESS == code) {
7,709!
7207
    code = tjsonAddStringToObject(pJson, jkSelectStmtStmtName, pNode->stmtName);
7,709✔
7208
  }
7209
  if (TSDB_CODE_SUCCESS == code) {
7,709!
7210
    code = tjsonAddBoolToObject(pJson, jkSelectStmtHasAggFuncs, pNode->hasAggFuncs);
7,709✔
7211
  }
7212
  if (TSDB_CODE_SUCCESS == code) {
7,709!
7213
    code = tjsonAddBoolToObject(pJson, jkSelectStmtInterpFuncs, pNode->hasInterpFunc);
7,709✔
7214
  }
7215
  if (TSDB_CODE_SUCCESS == code) {
7,709!
7216
    code = tjsonAddBoolToObject(pJson, jkSelectStmtTwaOrElapsedFuncs, pNode->hasTwaOrElapsedFunc);
7,709✔
7217
  }
7218
  if (TSDB_CODE_SUCCESS == code) {
7,709!
7219
    code = tjsonAddObject(pJson, jkSelectStmtInterpFill, nodeToJson, pNode->pFill);
7,709✔
7220
  }
7221
  if (TSDB_CODE_SUCCESS == code) {
7,709!
7222
    code = tjsonAddObject(pJson, jkSelectStmtInterpEvery, nodeToJson, pNode->pEvery);
7,709✔
7223
  }
7224

7225
  return code;
7,709✔
7226
}
7227

7228
static int32_t jsonToSelectStmt(const SJson* pJson, void* pObj) {
7,097✔
7229
  SSelectStmt* pNode = (SSelectStmt*)pObj;
7,097✔
7230

7231
  int32_t code = tjsonGetBoolValue(pJson, jkSelectStmtDistinct, &pNode->isDistinct);
7,097✔
7232
  if (TSDB_CODE_SUCCESS == code) {
7,097!
7233
    code = jsonToNodeList(pJson, jkSelectStmtProjections, &pNode->pProjectionList);
7,097✔
7234
  }
7235
  if (TSDB_CODE_SUCCESS == code) {
7,097!
7236
    code = jsonToNodeList(pJson, jkSelectStmtProjectionsBind, &pNode->pProjectionBindList);
7,097✔
7237
  }
7238
  if (TSDB_CODE_SUCCESS == code) {
7,097!
7239
    code = jsonToNodeObject(pJson, jkSelectStmtFrom, &pNode->pFromTable);
7,097✔
7240
  }
7241
  if (TSDB_CODE_SUCCESS == code) {
7,097!
7242
    code = jsonToNodeObject(pJson, jkSelectStmtWhere, &pNode->pWhere);
7,097✔
7243
  }
7244
  if (TSDB_CODE_SUCCESS == code) {
7,097!
7245
    code = jsonToNodeList(pJson, jkSelectStmtPartitionBy, &pNode->pPartitionByList);
7,097✔
7246
  }
7247
  if (TSDB_CODE_SUCCESS == code) {
7,097!
7248
    code = jsonToNodeObject(pJson, jkSelectStmtWindow, &pNode->pWindow);
7,097✔
7249
  }
7250
  if (TSDB_CODE_SUCCESS == code) {
7,097!
7251
    code = jsonToNodeList(pJson, jkSelectStmtGroupBy, &pNode->pGroupByList);
7,097✔
7252
  }
7253
  if (TSDB_CODE_SUCCESS == code) {
7,097!
7254
    code = jsonToNodeObject(pJson, jkSelectStmtHaving, &pNode->pHaving);
7,097✔
7255
  }
7256
  if (TSDB_CODE_SUCCESS == code) {
7,097!
7257
    code = jsonToNodeList(pJson, jkSelectStmtOrderBy, &pNode->pOrderByList);
7,097✔
7258
  }
7259
  if (TSDB_CODE_SUCCESS == code) {
7,097!
7260
    code = jsonToNodeObject(pJson, jkSelectStmtLimit, (SNode**)&pNode->pLimit);
7,097✔
7261
  }
7262
  if (TSDB_CODE_SUCCESS == code) {
7,097!
7263
    code = jsonToNodeObject(pJson, jkSelectStmtSlimit, (SNode**)&pNode->pSlimit);
7,097✔
7264
  }
7265
  if (TSDB_CODE_SUCCESS == code) {
7,097!
7266
    code = tjsonGetStringValue(pJson, jkSelectStmtStmtName, pNode->stmtName);
7,097✔
7267
  }
7268
  if (TSDB_CODE_SUCCESS == code) {
7,097!
7269
    code = tjsonGetBoolValue(pJson, jkSelectStmtHasAggFuncs, &pNode->hasAggFuncs);
7,097✔
7270
  }
7271
  if (TSDB_CODE_SUCCESS == code) {
7,097!
7272
    code = tjsonGetBoolValue(pJson, jkSelectStmtInterpFuncs, &pNode->hasInterpFunc);
7,097✔
7273
  }
7274
  if (TSDB_CODE_SUCCESS == code) {
7,097!
7275
    code = tjsonGetBoolValue(pJson, jkSelectStmtTwaOrElapsedFuncs, &pNode->hasTwaOrElapsedFunc);
7,097✔
7276
  }
7277
  if (TSDB_CODE_SUCCESS == code) {
7,097!
7278
    code = jsonToNodeObject(pJson, jkSelectStmtInterpFill, &pNode->pFill);
7,097✔
7279
  }
7280
  if (TSDB_CODE_SUCCESS == code) {
7,097!
7281
    code = jsonToNodeObject(pJson, jkSelectStmtInterpEvery, &pNode->pEvery);
7,097✔
7282
  }
7283

7284
  return code;
7,097✔
7285
}
7286

7287
static const char* jkVnodeModifyOpStmtSqlNodeType = "SqlNodeType";
7288
static const char* jkVnodeModifyOpStmtTotalRowsNum = "TotalRowsNum";
7289
static const char* jkVnodeModifyOpStmtTotalTbNum = "TotalTbNum";
7290

7291
static int32_t vnodeModifyStmtToJson(const void* pObj, SJson* pJson) {
360✔
7292
  const SVnodeModifyOpStmt* pNode = (const SVnodeModifyOpStmt*)pObj;
360✔
7293

7294
  int32_t code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType);
360✔
7295
  if (TSDB_CODE_SUCCESS == code) {
360!
7296
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalRowsNum, pNode->totalRowsNum);
360✔
7297
  }
7298
  if (TSDB_CODE_SUCCESS == code) {
360!
7299
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalTbNum, pNode->totalTbNum);
360✔
7300
  }
7301

7302
  return code;
360✔
7303
}
7304

7305
static int32_t jsonToVnodeModifyStmt(const SJson* pJson, void* pObj) {
360✔
7306
  SVnodeModifyOpStmt* pNode = (SVnodeModifyOpStmt*)pObj;
360✔
7307

7308
  int32_t code = TSDB_CODE_SUCCESS;
360✔
7309
  tjsonGetNumberValue(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType, code);
360✔
7310
  if (TSDB_CODE_SUCCESS == code) {
360!
7311
    code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalRowsNum, &pNode->totalRowsNum);
360✔
7312
  }
7313
  if (TSDB_CODE_SUCCESS == code) {
360!
7314
    code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalTbNum, &pNode->totalTbNum);
360✔
7315
  }
7316

7317
  return code;
360✔
7318
}
7319

7320
static const char* jkCreateDatabaseStmtDbName = "DbName";
7321
static const char* jkCreateDatabaseStmtIgnoreExists = "IgnoreExists";
7322
static const char* jkCreateDatabaseStmtOptions = "Options";
7323

7324
static int32_t createDatabaseStmtToJson(const void* pObj, SJson* pJson) {
162✔
7325
  const SCreateDatabaseStmt* pNode = (const SCreateDatabaseStmt*)pObj;
162✔
7326

7327
  int32_t code = tjsonAddStringToObject(pJson, jkCreateDatabaseStmtDbName, pNode->dbName);
162✔
7328
  if (TSDB_CODE_SUCCESS == code) {
162!
7329
    code = tjsonAddBoolToObject(pJson, jkCreateDatabaseStmtIgnoreExists, pNode->ignoreExists);
162✔
7330
  }
7331
  if (TSDB_CODE_SUCCESS == code) {
162!
7332
    code = tjsonAddObject(pJson, jkCreateDatabaseStmtOptions, nodeToJson, pNode->pOptions);
162✔
7333
  }
7334

7335
  return code;
162✔
7336
}
7337

7338
static int32_t jsonToCreateDatabaseStmt(const SJson* pJson, void* pObj) {
162✔
7339
  SCreateDatabaseStmt* pNode = (SCreateDatabaseStmt*)pObj;
162✔
7340

7341
  int32_t code = tjsonGetStringValue(pJson, jkCreateDatabaseStmtDbName, pNode->dbName);
162✔
7342
  if (TSDB_CODE_SUCCESS == code) {
162!
7343
    code = tjsonGetBoolValue(pJson, jkCreateDatabaseStmtIgnoreExists, &pNode->ignoreExists);
162✔
7344
  }
7345
  if (TSDB_CODE_SUCCESS == code) {
162!
7346
    code = jsonToNodeObject(pJson, jkCreateDatabaseStmtOptions, (SNode**)&pNode->pOptions);
162✔
7347
  }
7348

7349
  return code;
162✔
7350
}
7351

7352
static const char* jkAlterDatabaseStmtDbName = "DbName";
7353
static const char* jkAlterDatabaseStmtOptions = "Options";
7354

7355
static int32_t alterDatabaseStmtToJson(const void* pObj, SJson* pJson) {
1,098✔
7356
  const SAlterDatabaseStmt* pNode = (const SAlterDatabaseStmt*)pObj;
1,098✔
7357

7358
  int32_t code = tjsonAddStringToObject(pJson, jkAlterDatabaseStmtDbName, pNode->dbName);
1,098✔
7359
  if (TSDB_CODE_SUCCESS == code) {
1,098!
7360
    code = tjsonAddObject(pJson, jkAlterDatabaseStmtOptions, nodeToJson, pNode->pOptions);
1,098✔
7361
  }
7362

7363
  return code;
1,098✔
7364
}
7365

7366
static int32_t jsonToAlterDatabaseStmt(const SJson* pJson, void* pObj) {
1,098✔
7367
  SAlterDatabaseStmt* pNode = (SAlterDatabaseStmt*)pObj;
1,098✔
7368

7369
  int32_t code = tjsonGetStringValue(pJson, jkAlterDatabaseStmtDbName, pNode->dbName);
1,098✔
7370
  if (TSDB_CODE_SUCCESS == code) {
1,098!
7371
    code = jsonToNodeObject(pJson, jkAlterDatabaseStmtOptions, (SNode**)&pNode->pOptions);
1,098✔
7372
  }
7373

7374
  return code;
1,098✔
7375
}
7376

7377
static const char* jkTrimDatabaseStmtDbName = "DbName";
7378
static const char* jkTrimDatabaseStmtMaxSpeed = "MaxSpeed";
7379

7380
static int32_t trimDatabaseStmtToJson(const void* pObj, SJson* pJson) {
54✔
7381
  const STrimDatabaseStmt* pNode = (const STrimDatabaseStmt*)pObj;
54✔
7382

7383
  int32_t code = tjsonAddStringToObject(pJson, jkTrimDatabaseStmtDbName, pNode->dbName);
54✔
7384
  if (TSDB_CODE_SUCCESS == code) {
54!
7385
    code = tjsonAddIntegerToObject(pJson, jkTrimDatabaseStmtMaxSpeed, pNode->maxSpeed);
54✔
7386
  }
7387

7388
  return code;
54✔
7389
}
7390

7391
static int32_t jsonToTrimDatabaseStmt(const SJson* pJson, void* pObj) {
54✔
7392
  STrimDatabaseStmt* pNode = (STrimDatabaseStmt*)pObj;
54✔
7393

7394
  int32_t code = tjsonGetStringValue(pJson, jkTrimDatabaseStmtDbName, pNode->dbName);
54✔
7395
  if (TSDB_CODE_SUCCESS == code) {
54!
7396
    code = tjsonGetIntValue(pJson, jkTrimDatabaseStmtMaxSpeed, &pNode->maxSpeed);
54✔
7397
  }
7398

7399
  return code;
54✔
7400
}
7401

7402
static const char* jkSsMigrateDatabaseStmtDbName = "DbName";
7403

7404
static int32_t ssMigrateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
7405
  const SSsMigrateDatabaseStmt* pNode = (const SSsMigrateDatabaseStmt*)pObj;
×
7406

7407
  int32_t code = tjsonAddStringToObject(pJson, jkSsMigrateDatabaseStmtDbName, pNode->dbName);
×
7408

7409
  return code;
×
7410
}
7411

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

7415
  int32_t code = tjsonGetStringValue(pJson, jkSsMigrateDatabaseStmtDbName, pNode->dbName);
×
7416

7417
  return code;
×
7418
}
7419

7420
static const char* jkMountStmtMountName = "MountName";
7421
static const char* jkMountStmtIgnoreExists = "IgnoreExists";
7422
static const char* jkMountStmtIgnoreNotExists = "IgnoreNotExists";
7423
static const char* jkMountStmtDnode = "Dnode";
7424
static const char* jkMountStmtMountPath = "MountPath";
7425

7426
static int32_t createMountStmtToJson(const void* pObj, SJson* pJson) {
×
7427
  const SCreateMountStmt* pNode = (const SCreateMountStmt*)pObj;
×
7428

7429
  int32_t code = tjsonAddStringToObject(pJson, jkMountStmtMountName, pNode->mountName);
×
7430
  if (TSDB_CODE_SUCCESS == code) {
×
7431
    code = tjsonAddBoolToObject(pJson, jkMountStmtIgnoreExists, pNode->ignoreExists);
×
7432
  }
7433
  if (TSDB_CODE_SUCCESS == code) {
×
7434
    code = tjsonAddIntegerToObject(pJson, jkMountStmtDnode, pNode->dnodeId);
×
7435
  }
7436
  if (TSDB_CODE_SUCCESS == code) {
×
7437
    code = tjsonAddStringToObject(pJson, jkMountStmtMountPath, pNode->mountPath);
×
7438
  }
7439

7440
  return code;
×
7441
}
7442

7443
static int32_t jsonToCreateMountStmt(const SJson* pJson, void* pObj) {
×
7444
  SCreateMountStmt* pNode = (SCreateMountStmt*)pObj;
×
7445

7446
  int32_t code = tjsonGetStringValue(pJson, jkMountStmtMountName, pNode->mountName);
×
7447
  if (TSDB_CODE_SUCCESS == code) {
×
7448
    code = tjsonGetBoolValue(pJson, jkMountStmtIgnoreExists, &pNode->ignoreExists);
×
7449
  }
7450
  if (TSDB_CODE_SUCCESS == code) {
×
7451
    code = tjsonGetIntValue(pJson, jkMountStmtDnode, &pNode->dnodeId);
×
7452
  }
7453
  if (TSDB_CODE_SUCCESS == code) {
×
7454
    code = tjsonGetStringValue(pJson, jkMountStmtMountPath, pNode->mountPath);
×
7455
  }
7456

7457
  return code;
×
7458
}
7459

7460
static int32_t dropMountStmtToJson(const void* pObj, SJson* pJson) {
×
7461
  const SDropMountStmt* pNode = (const SDropMountStmt*)pObj;
×
7462

7463
  int32_t code = tjsonAddStringToObject(pJson, jkMountStmtMountName, pNode->mountName);
×
7464
  if (TSDB_CODE_SUCCESS == code) {
×
7465
    code = tjsonAddBoolToObject(pJson, jkMountStmtIgnoreNotExists, pNode->ignoreNotExists);
×
7466
  }
7467
  return code;
×
7468
}
7469

7470
static int32_t jsonToDropMountStmt(const SJson* pJson, void* pObj) {
×
7471
  SDropMountStmt* pNode = (SDropMountStmt*)pObj;
×
7472

7473
  int32_t code = tjsonGetStringValue(pJson, jkMountStmtMountName, pNode->mountName);
×
7474
  if (TSDB_CODE_SUCCESS == code) {
×
7475
    code = tjsonGetBoolValue(pJson, jkMountStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7476
  }
7477
  return code;
×
7478
}
7479

7480
static const char* jkCreateTableStmtDbName = "DbName";
7481
static const char* jkCreateTableStmtTableName = "TableName";
7482
static const char* jkCreateTableStmtIgnoreExists = "IgnoreExists";
7483
static const char* jkCreateTableStmtCols = "Cols";
7484
static const char* jkCreateTableStmtTags = "Tags";
7485
static const char* jkCreateTableStmtOptions = "Options";
7486

7487
static int32_t createTableStmtToJson(const void* pObj, SJson* pJson) {
135✔
7488
  const SCreateTableStmt* pNode = (const SCreateTableStmt*)pObj;
135✔
7489

7490
  int32_t code = tjsonAddStringToObject(pJson, jkCreateTableStmtDbName, pNode->dbName);
135✔
7491
  if (TSDB_CODE_SUCCESS == code) {
135!
7492
    code = tjsonAddStringToObject(pJson, jkCreateTableStmtTableName, pNode->tableName);
135✔
7493
  }
7494
  if (TSDB_CODE_SUCCESS == code) {
135!
7495
    code = tjsonAddBoolToObject(pJson, jkCreateTableStmtIgnoreExists, pNode->ignoreExists);
135✔
7496
  }
7497
  if (TSDB_CODE_SUCCESS == code) {
135!
7498
    code = nodeListToJson(pJson, jkCreateTableStmtCols, pNode->pCols);
135✔
7499
  }
7500
  if (TSDB_CODE_SUCCESS == code) {
135!
7501
    code = nodeListToJson(pJson, jkCreateTableStmtTags, pNode->pTags);
135✔
7502
  }
7503
  if (TSDB_CODE_SUCCESS == code) {
135!
7504
    code = tjsonAddObject(pJson, jkCreateTableStmtOptions, nodeToJson, pNode->pOptions);
135✔
7505
  }
7506

7507
  return code;
135✔
7508
}
7509

7510
static int32_t jsonToCreateTableStmt(const SJson* pJson, void* pObj) {
135✔
7511
  SCreateTableStmt* pNode = (SCreateTableStmt*)pObj;
135✔
7512

7513
  int32_t code = tjsonGetStringValue(pJson, jkCreateTableStmtDbName, pNode->dbName);
135✔
7514
  if (TSDB_CODE_SUCCESS == code) {
135!
7515
    code = tjsonGetStringValue(pJson, jkCreateTableStmtTableName, pNode->tableName);
135✔
7516
  }
7517
  if (TSDB_CODE_SUCCESS == code) {
135!
7518
    code = tjsonGetBoolValue(pJson, jkCreateTableStmtIgnoreExists, &pNode->ignoreExists);
135✔
7519
  }
7520
  if (TSDB_CODE_SUCCESS == code) {
135!
7521
    code = jsonToNodeList(pJson, jkCreateTableStmtCols, &pNode->pCols);
135✔
7522
  }
7523
  if (TSDB_CODE_SUCCESS == code) {
135!
7524
    code = jsonToNodeList(pJson, jkCreateTableStmtTags, &pNode->pTags);
135✔
7525
  }
7526
  if (TSDB_CODE_SUCCESS == code) {
135!
7527
    code = jsonToNodeObject(pJson, jkCreateTableStmtOptions, (SNode**)&pNode->pOptions);
135✔
7528
  }
7529

7530
  return code;
135✔
7531
}
7532

7533
static const char* jkCreateSubTableClauseDbName = "DbName";
7534
static const char* jkCreateSubTableClauseTableName = "TableName";
7535
static const char* jkCreateSubTableClauseUseDbName = "UseDbName";
7536
static const char* jkCreateSubTableClauseUseTableName = "UseTableName";
7537
static const char* jkCreateSubTableClauseIgnoreExists = "IgnoreExists";
7538
static const char* jkCreateSubTableClauseSpecificTags = "SpecificTags";
7539
static const char* jkCreateSubTableClauseValsOfTags = "ValsOfTags";
7540
static const char* jkCreateSubTableClauseOptions = "Options";
7541

7542
static int32_t createSubTableClauseToJson(const void* pObj, SJson* pJson) {
45✔
7543
  const SCreateSubTableClause* pNode = (const SCreateSubTableClause*)pObj;
45✔
7544

7545
  int32_t code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseDbName, pNode->dbName);
45✔
7546
  if (TSDB_CODE_SUCCESS == code) {
45!
7547
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseTableName, pNode->tableName);
45✔
7548
  }
7549
  if (TSDB_CODE_SUCCESS == code) {
45!
7550
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseUseDbName, pNode->useDbName);
45✔
7551
  }
7552
  if (TSDB_CODE_SUCCESS == code) {
45!
7553
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseUseTableName, pNode->useTableName);
45✔
7554
  }
7555
  if (TSDB_CODE_SUCCESS == code) {
45!
7556
    code = tjsonAddBoolToObject(pJson, jkCreateSubTableClauseIgnoreExists, pNode->ignoreExists);
45✔
7557
  }
7558
  if (TSDB_CODE_SUCCESS == code) {
45!
7559
    code = nodeListToJson(pJson, jkCreateSubTableClauseSpecificTags, pNode->pSpecificTags);
45✔
7560
  }
7561
  if (TSDB_CODE_SUCCESS == code) {
45!
7562
    code = nodeListToJson(pJson, jkCreateSubTableClauseValsOfTags, pNode->pValsOfTags);
45✔
7563
  }
7564
  if (TSDB_CODE_SUCCESS == code) {
45!
7565
    code = tjsonAddObject(pJson, jkCreateSubTableClauseOptions, nodeToJson, pNode->pOptions);
45✔
7566
  }
7567

7568
  return code;
45✔
7569
}
7570

7571
static int32_t jsonToCreateSubTableClause(const SJson* pJson, void* pObj) {
45✔
7572
  SCreateSubTableClause* pNode = (SCreateSubTableClause*)pObj;
45✔
7573

7574
  int32_t code = tjsonGetStringValue(pJson, jkCreateSubTableClauseDbName, pNode->dbName);
45✔
7575
  if (TSDB_CODE_SUCCESS == code) {
45!
7576
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseTableName, pNode->tableName);
45✔
7577
  }
7578
  if (TSDB_CODE_SUCCESS == code) {
45!
7579
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseUseDbName, pNode->useDbName);
45✔
7580
  }
7581
  if (TSDB_CODE_SUCCESS == code) {
45!
7582
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseUseTableName, pNode->useTableName);
45✔
7583
  }
7584
  if (TSDB_CODE_SUCCESS == code) {
45!
7585
    code = tjsonGetBoolValue(pJson, jkCreateSubTableClauseIgnoreExists, &pNode->ignoreExists);
45✔
7586
  }
7587
  if (TSDB_CODE_SUCCESS == code) {
45!
7588
    code = jsonToNodeList(pJson, jkCreateSubTableClauseSpecificTags, &pNode->pSpecificTags);
45✔
7589
  }
7590
  if (TSDB_CODE_SUCCESS == code) {
45!
7591
    code = jsonToNodeList(pJson, jkCreateSubTableClauseValsOfTags, &pNode->pValsOfTags);
45✔
7592
  }
7593
  if (TSDB_CODE_SUCCESS == code) {
45!
7594
    code = jsonToNodeObject(pJson, jkCreateSubTableClauseOptions, (SNode**)&pNode->pOptions);
45✔
7595
  }
7596

7597
  return code;
45✔
7598
}
7599

7600
static const char* jkCreateMultiTablesStmtSubTables = "SubTables";
7601

7602
static int32_t createMultiTablesStmtToJson(const void* pObj, SJson* pJson) {
27✔
7603
  const SCreateMultiTablesStmt* pNode = (const SCreateMultiTablesStmt*)pObj;
27✔
7604
  return nodeListToJson(pJson, jkCreateMultiTablesStmtSubTables, pNode->pSubTables);
27✔
7605
}
7606

7607
static int32_t jsonToCreateMultiTablesStmt(const SJson* pJson, void* pObj) {
27✔
7608
  SCreateMultiTablesStmt* pNode = (SCreateMultiTablesStmt*)pObj;
27✔
7609
  return jsonToNodeList(pJson, jkCreateMultiTablesStmtSubTables, &pNode->pSubTables);
27✔
7610
}
7611

7612
static const char* jkCreateVTableStmtDbName = "DbName";
7613
static const char* jkCreateVTableStmtTableName = "TableName";
7614
static const char* jkCreateVTableStmtIgnoreExists = "IgnoreExists";
7615
static const char* jkCreateVTableStmtCols = "Cols";
7616

7617
static int32_t createVTableStmtToJson(const void* pObj, SJson* pJson) {
×
7618
  const SCreateVTableStmt* pNode = (const SCreateVTableStmt*)pObj;
×
7619

7620
  int32_t code = tjsonAddStringToObject(pJson, jkCreateVTableStmtDbName, pNode->dbName);
×
7621
  if (TSDB_CODE_SUCCESS == code) {
×
7622
    code = tjsonAddStringToObject(pJson, jkCreateVTableStmtTableName, pNode->tableName);
×
7623
  }
7624
  if (TSDB_CODE_SUCCESS == code) {
×
7625
    code = tjsonAddBoolToObject(pJson, jkCreateVTableStmtIgnoreExists, pNode->ignoreExists);
×
7626
  }
7627
  if (TSDB_CODE_SUCCESS == code) {
×
7628
    code = nodeListToJson(pJson, jkCreateVTableStmtCols, pNode->pCols);
×
7629
  }
7630
  return code;
×
7631
}
7632

7633

7634
static int32_t jsonToCreateVTableStmt(const SJson* pJson, void* pObj) {
×
7635
  SCreateVTableStmt* pNode = (SCreateVTableStmt*)pObj;
×
7636

7637
  int32_t code = tjsonGetStringValue(pJson, jkCreateTableStmtDbName, pNode->dbName);
×
7638
  if (TSDB_CODE_SUCCESS == code) {
×
7639
    code = tjsonGetStringValue(pJson, jkCreateTableStmtTableName, pNode->tableName);
×
7640
  }
7641
  if (TSDB_CODE_SUCCESS == code) {
×
7642
    code = tjsonGetBoolValue(pJson, jkCreateTableStmtIgnoreExists, &pNode->ignoreExists);
×
7643
  }
7644
  if (TSDB_CODE_SUCCESS == code) {
×
7645
    code = jsonToNodeList(pJson, jkCreateTableStmtCols, &pNode->pCols);
×
7646
  }
7647
  return code;
×
7648
}
7649

7650
static const char* jkCreateVSubTableStmtDbName = "DbName";
7651
static const char* jkCreateVSubTableStmtTableName = "TableName";
7652
static const char* jkCreateVSubTableStmtUseDbName = "UseDbName";
7653
static const char* jkCreateVSubTableStmtUseTableName = "UseTableName";
7654
static const char* jkCreateVSubTableStmtIgnoreExists = "IgnoreExists";
7655
static const char* jkCreateVSubTableStmtSpecificTags = "SpecificTags";
7656
static const char* jkCreateVSubTableStmtValsOfTags = "ValsOfTags";
7657
static const char* jkCreateVSubTableStmtSpecificColRefs = "SpecificColRefs";
7658
static const char* jkCreateVSubTableStmtValsOfColRefs = "ValsOfColRefs";
7659

7660
static int32_t createVSubTableStmtToJson(const void* pObj, SJson* pJson) {
×
7661
  const SCreateVSubTableStmt* pNode = (const SCreateVSubTableStmt*)pObj;
×
7662

7663
  int32_t code = tjsonAddStringToObject(pJson, jkCreateVSubTableStmtDbName, pNode->dbName);
×
7664
  if (TSDB_CODE_SUCCESS == code) {
×
7665
    code = tjsonAddStringToObject(pJson, jkCreateVSubTableStmtTableName, pNode->tableName);
×
7666
  }
7667
  if (TSDB_CODE_SUCCESS == code) {
×
7668
    code = tjsonAddStringToObject(pJson, jkCreateVSubTableStmtUseDbName, pNode->useDbName);
×
7669
  }
7670
  if (TSDB_CODE_SUCCESS == code) {
×
7671
    code = tjsonAddStringToObject(pJson, jkCreateVSubTableStmtUseTableName, pNode->useTableName);
×
7672
  }
7673
  if (TSDB_CODE_SUCCESS == code) {
×
7674
    code = tjsonAddBoolToObject(pJson, jkCreateVSubTableStmtIgnoreExists, pNode->ignoreExists);
×
7675
  }
7676
  if (TSDB_CODE_SUCCESS == code) {
×
7677
    code = nodeListToJson(pJson, jkCreateVSubTableStmtSpecificTags, pNode->pSpecificTags);
×
7678
  }
7679
  if (TSDB_CODE_SUCCESS == code) {
×
7680
    code = nodeListToJson(pJson, jkCreateVSubTableStmtValsOfTags, pNode->pValsOfTags);
×
7681
  }
7682
  if (TSDB_CODE_SUCCESS == code) {
×
7683
    code = nodeListToJson(pJson, jkCreateVSubTableStmtSpecificColRefs, pNode->pSpecificColRefs);
×
7684
  }
7685
  if (TSDB_CODE_SUCCESS == code) {
×
7686
    code = nodeListToJson(pJson, jkCreateVSubTableStmtValsOfColRefs, pNode->pColRefs);
×
7687
  }
7688
  return code;
×
7689
}
7690

7691
static int32_t jsonToCreateVSubTableStmt(const SJson* pJson, void* pObj) {
×
7692
  SCreateVSubTableStmt* pNode = (SCreateVSubTableStmt*)pObj;
×
7693

7694
  int32_t code = tjsonGetStringValue(pJson, jkCreateVSubTableStmtDbName, pNode->dbName);
×
7695
  if (TSDB_CODE_SUCCESS == code) {
×
7696
    code = tjsonGetStringValue(pJson, jkCreateVSubTableStmtTableName, pNode->tableName);
×
7697
  }
7698
  if (TSDB_CODE_SUCCESS == code) {
×
7699
    code = tjsonGetStringValue(pJson, jkCreateVSubTableStmtUseDbName, pNode->useDbName);
×
7700
  }
7701
  if (TSDB_CODE_SUCCESS == code) {
×
7702
    code = tjsonGetStringValue(pJson, jkCreateVSubTableStmtUseTableName, pNode->useTableName);
×
7703
  }
7704
  if (TSDB_CODE_SUCCESS == code) {
×
7705
    code = tjsonGetBoolValue(pJson, jkCreateVSubTableStmtIgnoreExists, &pNode->ignoreExists);
×
7706
  }
7707
  if (TSDB_CODE_SUCCESS == code) {
×
7708
    code = jsonToNodeList(pJson, jkCreateVSubTableStmtSpecificTags, &pNode->pSpecificTags);
×
7709
  }
7710
  if (TSDB_CODE_SUCCESS == code) {
×
7711
    code = jsonToNodeList(pJson, jkCreateVSubTableStmtValsOfTags, &pNode->pValsOfTags);
×
7712
  }
7713
  if (TSDB_CODE_SUCCESS == code) {
×
7714
    code = jsonToNodeList(pJson, jkCreateVSubTableStmtSpecificColRefs, &pNode->pSpecificColRefs);
×
7715
  }
7716
  if (TSDB_CODE_SUCCESS == code) {
×
7717
    code = jsonToNodeList(pJson, jkCreateVSubTableStmtValsOfColRefs, &pNode->pColRefs);
×
7718
  }
7719

7720
  return code;
×
7721
}
7722

7723
static const char* jkDropTableClauseDbName = "DbName";
7724
static const char* jkDropTableClauseTableName = "TableName";
7725
static const char* jkDropTableClauseIgnoreNotExists = "IgnoreNotExists";
7726

7727
static int32_t dropTableClauseToJson(const void* pObj, SJson* pJson) {
36✔
7728
  const SDropTableClause* pNode = (const SDropTableClause*)pObj;
36✔
7729

7730
  int32_t code = tjsonAddStringToObject(pJson, jkDropTableClauseDbName, pNode->dbName);
36✔
7731
  if (TSDB_CODE_SUCCESS == code) {
36!
7732
    code = tjsonAddStringToObject(pJson, jkDropTableClauseTableName, pNode->tableName);
36✔
7733
  }
7734
  if (TSDB_CODE_SUCCESS == code) {
36!
7735
    code = tjsonAddBoolToObject(pJson, jkDropTableClauseIgnoreNotExists, pNode->ignoreNotExists);
36✔
7736
  }
7737

7738
  return code;
36✔
7739
}
7740

7741
static int32_t jsonToDropTableClause(const SJson* pJson, void* pObj) {
36✔
7742
  SDropTableClause* pNode = (SDropTableClause*)pObj;
36✔
7743

7744
  int32_t code = tjsonGetStringValue(pJson, jkDropTableClauseDbName, pNode->dbName);
36✔
7745
  if (TSDB_CODE_SUCCESS == code) {
36!
7746
    code = tjsonGetStringValue(pJson, jkDropTableClauseTableName, pNode->tableName);
36✔
7747
  }
7748
  if (TSDB_CODE_SUCCESS == code) {
36!
7749
    code = tjsonGetBoolValue(pJson, jkDropTableClauseIgnoreNotExists, &pNode->ignoreNotExists);
36✔
7750
  }
7751

7752
  return code;
36✔
7753
}
7754

7755
static const char* jkDropTableStmtTables = "Tables";
7756

7757
static int32_t dropTableStmtToJson(const void* pObj, SJson* pJson) {
18✔
7758
  const SDropTableStmt* pNode = (const SDropTableStmt*)pObj;
18✔
7759
  return nodeListToJson(pJson, jkDropTableStmtTables, pNode->pTables);
18✔
7760
}
7761

7762
static int32_t jsonToDropTableStmt(const SJson* pJson, void* pObj) {
18✔
7763
  SDropTableStmt* pNode = (SDropTableStmt*)pObj;
18✔
7764
  return jsonToNodeList(pJson, jkDropTableStmtTables, &pNode->pTables);
18✔
7765
}
7766

7767
static const char* jkDropSuperTableStmtDbName = "DbName";
7768
static const char* jkDropSuperTableStmtTableName = "TableName";
7769
static const char* jkDropSuperTableStmtIgnoreNotExists = "IgnoreNotExists";
7770
static const char* jkDropSuperTableStmtwithOpt = "withOpt";
7771

7772
static int32_t dropStableStmtToJson(const void* pObj, SJson* pJson) {
27✔
7773
  const SDropSuperTableStmt* pNode = (const SDropSuperTableStmt*)pObj;
27✔
7774

7775
  int32_t code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
27✔
7776
  if (TSDB_CODE_SUCCESS == code) {
27!
7777
    code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtTableName, pNode->tableName);
27✔
7778
  }
7779
  if (TSDB_CODE_SUCCESS == code) {
27!
7780
    code = tjsonAddBoolToObject(pJson, jkDropSuperTableStmtIgnoreNotExists, pNode->ignoreNotExists);
27✔
7781
  }
7782
  if (TSDB_CODE_SUCCESS == code) {
27!
7783
    code = tjsonAddBoolToObject(pJson, jkDropSuperTableStmtwithOpt, pNode->withOpt);
27✔
7784
  }
7785

7786
  return code;
27✔
7787
}
7788

7789
static int32_t jsonToDropStableStmt(const SJson* pJson, void* pObj) {
27✔
7790
  SDropSuperTableStmt* pNode = (SDropSuperTableStmt*)pObj;
27✔
7791

7792
  int32_t code = tjsonGetStringValue(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
27✔
7793
  if (TSDB_CODE_SUCCESS == code) {
27!
7794
    code = tjsonGetStringValue(pJson, jkDropSuperTableStmtTableName, pNode->tableName);
27✔
7795
  }
7796
  if (TSDB_CODE_SUCCESS == code) {
27!
7797
    code = tjsonGetBoolValue(pJson, jkDropSuperTableStmtIgnoreNotExists, &pNode->ignoreNotExists);
27✔
7798
  }
7799
  if (TSDB_CODE_SUCCESS == code) {
27!
7800
    code = tjsonGetBoolValue(pJson, jkDropSuperTableStmtwithOpt, &pNode->withOpt);
27✔
7801
  }
7802

7803
  return code;
27✔
7804
}
7805

7806
static const char* jkDropVirtualTableStmtDbName = "DbName";
7807
static const char* jkDropVirtualTableStmtTableName = "TableName";
7808
static const char* jkDropVirtualTableStmtIgnoreNotExists = "IgnoreNotExists";
7809
static const char* jkDropVirtualTableStmtwithOpt = "withOpt";
7810

7811
static int32_t dropVtableStmtToJson(const void* pObj, SJson* pJson) {
×
7812
  const SDropVirtualTableStmt* pNode = (const SDropVirtualTableStmt*)pObj;
×
7813

7814
  int32_t code = tjsonAddStringToObject(pJson, jkDropVirtualTableStmtDbName, pNode->dbName);
×
7815
  if (TSDB_CODE_SUCCESS == code) {
×
7816
    code = tjsonAddStringToObject(pJson, jkDropVirtualTableStmtTableName, pNode->tableName);
×
7817
  }
7818
  if (TSDB_CODE_SUCCESS == code) {
×
7819
    code = tjsonAddBoolToObject(pJson, jkDropVirtualTableStmtIgnoreNotExists, pNode->ignoreNotExists);
×
7820
  }
7821
  if (TSDB_CODE_SUCCESS == code) {
×
7822
    code = tjsonAddBoolToObject(pJson, jkDropVirtualTableStmtwithOpt, pNode->withOpt);
×
7823
  }
7824

7825
  return code;
×
7826
}
7827

7828
static int32_t jsonToDropVtableStmt(const SJson* pJson, void* pObj) {
×
7829
  SDropVirtualTableStmt* pNode = (SDropVirtualTableStmt*)pObj;
×
7830

7831
  int32_t code = tjsonGetStringValue(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
×
7832
  if (TSDB_CODE_SUCCESS == code) {
×
7833
    code = tjsonGetStringValue(pJson, jkDropVirtualTableStmtTableName, pNode->tableName);
×
7834
  }
7835
  if (TSDB_CODE_SUCCESS == code) {
×
7836
    code = tjsonGetBoolValue(pJson, jkDropVirtualTableStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7837
  }
7838
  if (TSDB_CODE_SUCCESS == code) {
×
7839
    code = tjsonGetBoolValue(pJson, jkDropVirtualTableStmtwithOpt, &pNode->withOpt);
×
7840
  }
7841

7842
  return code;
×
7843
}
7844

7845
static const char* jkAlterTableStmtDbName = "DbName";
7846
static const char* jkAlterTableStmtTableName = "TableName";
7847
static const char* jkAlterTableStmtAlterType = "AlterType";
7848
static const char* jkAlterTableStmtColName = "ColName";
7849
static const char* jkAlterTableStmtNewColName = "NewColName";
7850
static const char* jkAlterTableStmtOptions = "Options";
7851
static const char* jkAlterTableStmtNewDataType = "NewDataType";
7852
static const char* jkAlterTableStmtNewTagVal = "NewTagVal";
7853

7854
static int32_t alterTableStmtToJson(const void* pObj, SJson* pJson) {
486✔
7855
  const SAlterTableStmt* pNode = (const SAlterTableStmt*)pObj;
486✔
7856

7857
  int32_t code = tjsonAddStringToObject(pJson, jkAlterTableStmtDbName, pNode->dbName);
486✔
7858
  if (TSDB_CODE_SUCCESS == code) {
486!
7859
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtTableName, pNode->tableName);
486✔
7860
  }
7861
  if (TSDB_CODE_SUCCESS == code) {
486!
7862
    code = tjsonAddIntegerToObject(pJson, jkAlterTableStmtAlterType, pNode->alterType);
486✔
7863
  }
7864
  if (TSDB_CODE_SUCCESS == code) {
486!
7865
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtColName, pNode->colName);
486✔
7866
  }
7867
  if (TSDB_CODE_SUCCESS == code) {
486!
7868
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtNewColName, pNode->newColName);
486✔
7869
  }
7870
  if (TSDB_CODE_SUCCESS == code) {
486!
7871
    code = tjsonAddObject(pJson, jkAlterTableStmtOptions, nodeToJson, pNode->pOptions);
486✔
7872
  }
7873
  if (TSDB_CODE_SUCCESS == code) {
486!
7874
    code = tjsonAddObject(pJson, jkAlterTableStmtNewDataType, dataTypeToJson, &pNode->dataType);
486✔
7875
  }
7876
  if (TSDB_CODE_SUCCESS == code) {
486!
7877
    code = tjsonAddObject(pJson, jkAlterTableStmtOptions, nodeToJson, pNode->pVal);
486✔
7878
  }
7879

7880
  return code;
486✔
7881
}
7882

7883
static int32_t jsonToAlterTableStmt(const SJson* pJson, void* pObj) {
486✔
7884
  SAlterTableStmt* pNode = (SAlterTableStmt*)pObj;
486✔
7885

7886
  int32_t code = tjsonGetStringValue(pJson, jkAlterTableStmtDbName, pNode->dbName);
486✔
7887
  if (TSDB_CODE_SUCCESS == code) {
486!
7888
    code = tjsonGetStringValue(pJson, jkAlterTableStmtTableName, pNode->tableName);
486✔
7889
  }
7890
  if (TSDB_CODE_SUCCESS == code) {
486!
7891
    code = tjsonGetTinyIntValue(pJson, jkAlterTableStmtAlterType, &pNode->alterType);
486✔
7892
  }
7893
  if (TSDB_CODE_SUCCESS == code) {
486!
7894
    code = tjsonGetStringValue(pJson, jkAlterTableStmtColName, pNode->colName);
486✔
7895
  }
7896
  if (TSDB_CODE_SUCCESS == code) {
486!
7897
    code = tjsonGetStringValue(pJson, jkAlterTableStmtNewColName, pNode->newColName);
486✔
7898
  }
7899
  if (TSDB_CODE_SUCCESS == code) {
486!
7900
    code = jsonToNodeObject(pJson, jkAlterTableStmtOptions, (SNode**)&pNode->pOptions);
486✔
7901
  }
7902
  if (TSDB_CODE_SUCCESS == code) {
486!
7903
    code = tjsonToObject(pJson, jkAlterTableStmtNewDataType, jsonToDataType, &pNode->dataType);
486✔
7904
  }
7905
  if (TSDB_CODE_SUCCESS == code) {
486!
7906
    code = jsonToNodeObject(pJson, jkAlterTableStmtOptions, (SNode**)&pNode->pVal);
486✔
7907
  }
7908

7909
  return code;
486✔
7910
}
7911

7912
static int32_t alterStableStmtToJson(const void* pObj, SJson* pJson) { return alterTableStmtToJson(pObj, pJson); }
261✔
7913

7914
static int32_t jsonToAlterStableStmt(const SJson* pJson, void* pObj) { return jsonToAlterTableStmt(pJson, pObj); }
261✔
7915

7916
static const char* jkCreateUserStmtUserName = "UserName";
7917
static const char* jkCreateUserStmtPassword = "Password";
7918
static const char* jkCreateUserStmtSysinfo = "Sysinfo";
7919

7920
static int32_t createUserStmtToJson(const void* pObj, SJson* pJson) {
54✔
7921
  const SCreateUserStmt* pNode = (const SCreateUserStmt*)pObj;
54✔
7922

7923
  int32_t code = tjsonAddStringToObject(pJson, jkCreateUserStmtUserName, pNode->userName);
54✔
7924
  if (TSDB_CODE_SUCCESS == code) {
54!
7925
    code = tjsonAddStringToObject(pJson, jkCreateUserStmtPassword, pNode->password);
54✔
7926
  }
7927
  if (TSDB_CODE_SUCCESS == code) {
54!
7928
    code = tjsonAddIntegerToObject(pJson, jkCreateUserStmtSysinfo, pNode->sysinfo);
54✔
7929
  }
7930

7931
  return code;
54✔
7932
}
7933

7934
static int32_t jsonToCreateUserStmt(const SJson* pJson, void* pObj) {
54✔
7935
  SCreateUserStmt* pNode = (SCreateUserStmt*)pObj;
54✔
7936

7937
  int32_t code = tjsonGetStringValue(pJson, jkCreateUserStmtUserName, pNode->userName);
54✔
7938
  if (TSDB_CODE_SUCCESS == code) {
54!
7939
    code = tjsonGetStringValue(pJson, jkCreateUserStmtPassword, pNode->password);
54✔
7940
  }
7941
  if (TSDB_CODE_SUCCESS == code) {
54!
7942
    code = tjsonGetTinyIntValue(pJson, jkCreateUserStmtSysinfo, &pNode->sysinfo);
54✔
7943
  }
7944

7945
  return code;
54✔
7946
}
7947

7948
static const char* jkAlterUserStmtUserName = "UserName";
7949
static const char* jkAlterUserStmtAlterType = "AlterType";
7950
static const char* jkAlterUserStmtPassword = "Password";
7951
static const char* jkAlterUserStmtEnable = "Enable";
7952
static const char* jkAlterUserStmtSysinfo = "Sysinfo";
7953
static const char* jkAlterUserStmtCreatedb = "Createdb";
7954

7955
static int32_t alterUserStmtToJson(const void* pObj, SJson* pJson) {
81✔
7956
  const SAlterUserStmt* pNode = (const SAlterUserStmt*)pObj;
81✔
7957

7958
  int32_t code = tjsonAddStringToObject(pJson, jkAlterUserStmtUserName, pNode->userName);
81✔
7959
  if (TSDB_CODE_SUCCESS == code) {
81!
7960
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtAlterType, pNode->alterType);
81✔
7961
  }
7962
  if (TSDB_CODE_SUCCESS == code) {
81!
7963
    code = tjsonAddStringToObject(pJson, jkAlterUserStmtPassword, pNode->password);
81✔
7964
  }
7965
  if (TSDB_CODE_SUCCESS == code) {
81!
7966
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtEnable, pNode->enable);
81✔
7967
  }
7968
  if (TSDB_CODE_SUCCESS == code) {
81!
7969
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtSysinfo, pNode->sysinfo);
81✔
7970
  }
7971
  if (TSDB_CODE_SUCCESS == code) {
81!
7972
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtCreatedb, pNode->createdb);
81✔
7973
  }
7974

7975
  return code;
81✔
7976
}
7977

7978
static int32_t jsonToAlterUserStmt(const SJson* pJson, void* pObj) {
81✔
7979
  SAlterUserStmt* pNode = (SAlterUserStmt*)pObj;
81✔
7980

7981
  int32_t code = tjsonGetStringValue(pJson, jkAlterUserStmtUserName, pNode->userName);
81✔
7982
  if (TSDB_CODE_SUCCESS == code) {
81!
7983
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtAlterType, &pNode->alterType);
81✔
7984
  }
7985
  if (TSDB_CODE_SUCCESS == code) {
81!
7986
    code = tjsonGetStringValue(pJson, jkAlterUserStmtPassword, pNode->password);
81✔
7987
  }
7988
  if (TSDB_CODE_SUCCESS == code) {
81!
7989
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtEnable, &pNode->enable);
81✔
7990
  }
7991
  if (TSDB_CODE_SUCCESS == code) {
81!
7992
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtSysinfo, &pNode->sysinfo);
81✔
7993
  }
7994
  if (TSDB_CODE_SUCCESS == code) {
81!
7995
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtCreatedb, &pNode->createdb);
81✔
7996
  }
7997

7998
  return code;
81✔
7999
}
8000

8001
static const char* jkDropUserStmtUserName = "UserName";
8002

8003
static int32_t dropUserStmtToJson(const void* pObj, SJson* pJson) {
27✔
8004
  const SDropUserStmt* pNode = (const SDropUserStmt*)pObj;
27✔
8005
  return tjsonAddStringToObject(pJson, jkDropUserStmtUserName, pNode->userName);
27✔
8006
}
8007

8008
static int32_t jsonToDropUserStmt(const SJson* pJson, void* pObj) {
27✔
8009
  SDropUserStmt* pNode = (SDropUserStmt*)pObj;
27✔
8010
  return tjsonGetStringValue(pJson, jkDropUserStmtUserName, pNode->userName);
27✔
8011
}
8012

8013
static const char* jkUseDatabaseStmtDbName = "DbName";
8014

8015
static int32_t useDatabaseStmtToJson(const void* pObj, SJson* pJson) {
27✔
8016
  const SUseDatabaseStmt* pNode = (const SUseDatabaseStmt*)pObj;
27✔
8017
  return tjsonAddStringToObject(pJson, jkUseDatabaseStmtDbName, pNode->dbName);
27✔
8018
}
8019

8020
static int32_t jsonToUseDatabaseStmt(const SJson* pJson, void* pObj) {
27✔
8021
  SUseDatabaseStmt* pNode = (SUseDatabaseStmt*)pObj;
27✔
8022
  return tjsonGetStringValue(pJson, jkUseDatabaseStmtDbName, pNode->dbName);
27✔
8023
}
8024

8025
static const char* jkCreateDnodeStmtFqdn = "Fqdn";
8026
static const char* jkCreateDnodeStmtPort = "Port";
8027

8028
static int32_t createDnodeStmtToJson(const void* pObj, SJson* pJson) {
162✔
8029
  const SCreateDnodeStmt* pNode = (const SCreateDnodeStmt*)pObj;
162✔
8030

8031
  int32_t code = tjsonAddStringToObject(pJson, jkCreateDnodeStmtFqdn, pNode->fqdn);
162✔
8032
  if (TSDB_CODE_SUCCESS == code) {
162!
8033
    code = tjsonAddIntegerToObject(pJson, jkCreateDnodeStmtPort, pNode->port);
162✔
8034
  }
8035

8036
  return code;
162✔
8037
}
8038

8039
static int32_t jsonToCreateDnodeStmt(const SJson* pJson, void* pObj) {
162✔
8040
  SCreateDnodeStmt* pNode = (SCreateDnodeStmt*)pObj;
162✔
8041

8042
  int32_t code = tjsonGetStringValue(pJson, jkCreateDnodeStmtFqdn, pNode->fqdn);
162✔
8043
  if (TSDB_CODE_SUCCESS == code) {
162!
8044
    code = tjsonGetIntValue(pJson, jkCreateDnodeStmtPort, &pNode->port);
162✔
8045
  }
8046

8047
  return code;
162✔
8048
}
8049

8050
static const char* jkAlterDnodeStmtDnodeId = "DnodeId";
8051
static const char* jkAlterDnodeStmtConfig = "Config";
8052
static const char* jkAlterDnodeStmtValue = "Value";
8053

8054
static int32_t alterDnodeStmtToJson(const void* pObj, SJson* pJson) {
108✔
8055
  const SAlterDnodeStmt* pNode = (const SAlterDnodeStmt*)pObj;
108✔
8056

8057
  int32_t code = tjsonAddIntegerToObject(pJson, jkAlterDnodeStmtDnodeId, pNode->dnodeId);
108✔
8058
  if (TSDB_CODE_SUCCESS == code) {
108!
8059
    code = tjsonAddStringToObject(pJson, jkAlterDnodeStmtConfig, pNode->config);
108✔
8060
  }
8061
  if (TSDB_CODE_SUCCESS == code) {
108!
8062
    code = tjsonAddStringToObject(pJson, jkAlterDnodeStmtValue, pNode->value);
108✔
8063
  }
8064

8065
  return code;
108✔
8066
}
8067

8068
static int32_t jsonToAlterDnodeStmt(const SJson* pJson, void* pObj) {
108✔
8069
  SAlterDnodeStmt* pNode = (SAlterDnodeStmt*)pObj;
108✔
8070

8071
  int32_t code = tjsonGetIntValue(pJson, jkAlterDnodeStmtDnodeId, &pNode->dnodeId);
108✔
8072
  if (TSDB_CODE_SUCCESS == code) {
108!
8073
    code = tjsonGetStringValue(pJson, jkAlterDnodeStmtConfig, pNode->config);
108✔
8074
  }
8075
  if (TSDB_CODE_SUCCESS == code) {
108!
8076
    code = tjsonGetStringValue(pJson, jkAlterDnodeStmtValue, pNode->value);
108✔
8077
  }
8078

8079
  return code;
108✔
8080
}
8081

8082
static const char* jkCreateIndexStmtIndexType = "IndexType";
8083
static const char* jkCreateIndexStmtIgnoreExists = "IgnoreExists";
8084
static const char* jkCreateIndexStmtIndexDbName = "IndexDbName";
8085
static const char* jkCreateIndexStmtIndexName = "indexName";
8086
static const char* jkCreateIndexStmtDbName = "DbName";
8087
static const char* jkCreateIndexStmtTableName = "TableName";
8088
static const char* jkCreateIndexStmtCols = "Cols";
8089
static const char* jkCreateIndexStmtOptions = "Options";
8090

8091
static int32_t createIndexStmtToJson(const void* pObj, SJson* pJson) {
×
8092
  const SCreateIndexStmt* pNode = (const SCreateIndexStmt*)pObj;
×
8093

8094
  int32_t code = tjsonAddIntegerToObject(pJson, jkCreateIndexStmtIndexType, pNode->indexType);
×
8095
  if (TSDB_CODE_SUCCESS == code) {
×
8096
    code = tjsonAddBoolToObject(pJson, jkCreateIndexStmtIgnoreExists, pNode->ignoreExists);
×
8097
  }
8098
  if (TSDB_CODE_SUCCESS == code) {
×
8099
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtIndexDbName, pNode->indexDbName);
×
8100
  }
8101
  if (TSDB_CODE_SUCCESS == code) {
×
8102
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtIndexName, pNode->indexName);
×
8103
  }
8104
  if (TSDB_CODE_SUCCESS == code) {
×
8105
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtDbName, pNode->dbName);
×
8106
  }
8107
  if (TSDB_CODE_SUCCESS == code) {
×
8108
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtTableName, pNode->tableName);
×
8109
  }
8110
  if (TSDB_CODE_SUCCESS == code) {
×
8111
    code = nodeListToJson(pJson, jkCreateIndexStmtCols, pNode->pCols);
×
8112
  }
8113
  if (TSDB_CODE_SUCCESS == code) {
×
8114
    code = tjsonAddObject(pJson, jkCreateIndexStmtOptions, nodeToJson, pNode->pOptions);
×
8115
  }
8116

8117
  return code;
×
8118
}
8119

8120
static int32_t jsonToCreateIndexStmt(const SJson* pJson, void* pObj) {
×
8121
  SCreateIndexStmt* pNode = (SCreateIndexStmt*)pObj;
×
8122

8123
  int32_t code = TSDB_CODE_SUCCESS;
×
8124
  tjsonGetNumberValue(pJson, jkCreateIndexStmtIndexType, pNode->indexType, code);
×
8125
  if (TSDB_CODE_SUCCESS == code) {
×
8126
    code = tjsonGetBoolValue(pJson, jkCreateIndexStmtIgnoreExists, &pNode->ignoreExists);
×
8127
  }
8128
  if (TSDB_CODE_SUCCESS == code) {
×
8129
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtIndexDbName, pNode->indexDbName);
×
8130
  }
8131
  if (TSDB_CODE_SUCCESS == code) {
×
8132
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtIndexName, pNode->indexName);
×
8133
  }
8134
  if (TSDB_CODE_SUCCESS == code) {
×
8135
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtDbName, pNode->dbName);
×
8136
  }
8137
  if (TSDB_CODE_SUCCESS == code) {
×
8138
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtTableName, pNode->tableName);
×
8139
  }
8140
  if (TSDB_CODE_SUCCESS == code) {
×
8141
    code = jsonToNodeList(pJson, jkCreateIndexStmtCols, &pNode->pCols);
×
8142
  }
8143
  if (TSDB_CODE_SUCCESS == code) {
×
8144
    code = jsonToNodeObject(pJson, jkCreateIndexStmtOptions, (SNode**)&pNode->pOptions);
×
8145
  }
8146

8147
  return code;
×
8148
}
8149

8150
static const char* jkDropIndexStmtIgnoreNotExists = "IgnoreNotExists";
8151
static const char* jkDropIndexStmtIndexDbName = "IndexDbName";
8152
static const char* jkDropIndexStmtIndexName = "IndexName";
8153

8154
static int32_t dropIndexStmtToJson(const void* pObj, SJson* pJson) {
54✔
8155
  const SDropIndexStmt* pNode = (const SDropIndexStmt*)pObj;
54✔
8156

8157
  int32_t code = tjsonAddBoolToObject(pJson, jkDropIndexStmtIgnoreNotExists, pNode->ignoreNotExists);
54✔
8158
  if (TSDB_CODE_SUCCESS == code) {
54!
8159
    code = tjsonAddStringToObject(pJson, jkDropIndexStmtIndexDbName, pNode->indexDbName);
54✔
8160
  }
8161
  if (TSDB_CODE_SUCCESS == code) {
54!
8162
    code = tjsonAddStringToObject(pJson, jkDropIndexStmtIndexName, pNode->indexName);
54✔
8163
  }
8164

8165
  return code;
54✔
8166
}
8167

8168
static int32_t jsonToDropIndexStmt(const SJson* pJson, void* pObj) {
54✔
8169
  SDropIndexStmt* pNode = (SDropIndexStmt*)pObj;
54✔
8170

8171
  int32_t code = tjsonGetBoolValue(pJson, jkDropIndexStmtIgnoreNotExists, &pNode->ignoreNotExists);
54✔
8172
  if (TSDB_CODE_SUCCESS == code) {
54!
8173
    code = tjsonGetStringValue(pJson, jkDropIndexStmtIndexDbName, pNode->indexDbName);
54✔
8174
  }
8175
  if (TSDB_CODE_SUCCESS == code) {
54!
8176
    code = tjsonGetStringValue(pJson, jkDropIndexStmtIndexName, pNode->indexName);
54✔
8177
  }
8178

8179
  return code;
54✔
8180
}
8181

8182
static const char* jkCreateComponentNodeStmtDnodeId = "DnodeId";
8183

8184
static int32_t createComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
81✔
8185
  const SCreateComponentNodeStmt* pNode = (const SCreateComponentNodeStmt*)pObj;
81✔
8186
  return tjsonAddIntegerToObject(pJson, jkCreateComponentNodeStmtDnodeId, pNode->dnodeId);
81✔
8187
}
8188

8189
static int32_t jsonToCreateComponentNodeStmt(const SJson* pJson, void* pObj) {
81✔
8190
  SCreateComponentNodeStmt* pNode = (SCreateComponentNodeStmt*)pObj;
81✔
8191
  return tjsonGetIntValue(pJson, jkCreateComponentNodeStmtDnodeId, &pNode->dnodeId);
81✔
8192
}
8193

8194
static const char* jkDropComponentNodeStmtDnodeId = "DnodeId";
8195

8196
static int32_t dropComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
81✔
8197
  const SDropComponentNodeStmt* pNode = (const SDropComponentNodeStmt*)pObj;
81✔
8198
  return tjsonAddIntegerToObject(pJson, jkDropComponentNodeStmtDnodeId, pNode->dnodeId);
81✔
8199
}
8200

8201
static int32_t jsonToDropComponentNodeStmt(const SJson* pJson, void* pObj) {
81✔
8202
  SDropComponentNodeStmt* pNode = (SDropComponentNodeStmt*)pObj;
81✔
8203
  return tjsonGetIntValue(pJson, jkDropComponentNodeStmtDnodeId, &pNode->dnodeId);
81✔
8204
}
8205

8206
static int32_t createQnodeStmtToJson(const void* pObj, SJson* pJson) {
27✔
8207
  return createComponentNodeStmtToJson(pObj, pJson);
27✔
8208
}
8209

8210
static int32_t jsonToCreateQnodeStmt(const SJson* pJson, void* pObj) {
27✔
8211
  return jsonToCreateComponentNodeStmt(pJson, pObj);
27✔
8212
}
8213

8214
static int32_t dropQnodeStmtToJson(const void* pObj, SJson* pJson) { return dropComponentNodeStmtToJson(pObj, pJson); }
27✔
8215

8216
static int32_t jsonToDropQnodeStmt(const SJson* pJson, void* pObj) { return jsonToDropComponentNodeStmt(pJson, pObj); }
27✔
8217

8218
static const char* jkCreateAnodeStmtUrl = "Url";
8219
static const char* jkUpdateDropANodeStmtId = "AnodeId";
8220

8221
static int32_t createAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
8222
  const SCreateAnodeStmt* pNode = (const SCreateAnodeStmt*)pObj;
×
8223
  return tjsonAddStringToObject(pJson, jkCreateAnodeStmtUrl, pNode->url);
×
8224
}
8225

8226
static int32_t jsonToCreateAnodeStmt(const SJson* pJson, void* pObj) {
×
8227
  SCreateAnodeStmt* pNode = (SCreateAnodeStmt*)pObj;
×
8228
  return tjsonGetStringValue(pJson, jkCreateAnodeStmtUrl, pNode->url);
×
8229
}
8230

8231
static int32_t updateAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
8232
  const SUpdateAnodeStmt* pNode = (const SUpdateAnodeStmt*)pObj;
×
8233
  return tjsonAddIntegerToObject(pJson, jkUpdateDropANodeStmtId, pNode->anodeId);
×
8234
}
8235

8236
static int32_t jsonToUpdateAnodeStmt(const SJson* pJson, void* pObj) {
×
8237
  SUpdateAnodeStmt* pNode = (SUpdateAnodeStmt*)pObj;
×
8238
  return tjsonGetIntValue(pJson, jkUpdateDropANodeStmtId, &pNode->anodeId);
×
8239
}
8240

8241
static int32_t dropAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
8242
  const SDropAnodeStmt* pNode = (const SDropAnodeStmt*)pObj;
×
8243
  return tjsonAddIntegerToObject(pJson, jkUpdateDropANodeStmtId, pNode->anodeId);
×
8244
}
8245

8246
static int32_t jsonToDropAnodeStmt(const SJson* pJson, void* pObj) {
×
8247
  SDropAnodeStmt* pNode = (SDropAnodeStmt*)pObj;
×
8248
  return tjsonGetIntValue(pJson, jkUpdateDropANodeStmtId, &pNode->anodeId);
×
8249
}
8250

8251
static const char* jkUpdateDropBNodeStmtId = "DnodeId";
8252

8253
static int32_t createBnodeStmtToJson(const void* pObj, SJson* pJson) {
×
8254
  const SCreateBnodeStmt* pNode = (const SCreateBnodeStmt*)pObj;
×
8255
  return tjsonAddIntegerToObject(pJson, jkCreateComponentNodeStmtDnodeId, pNode->dnodeId);
×
8256
}
8257

8258
static int32_t jsonToCreateBnodeStmt(const SJson* pJson, void* pObj) {
×
8259
  SCreateBnodeStmt* pNode = (SCreateBnodeStmt*)pObj;
×
8260
  return tjsonGetIntValue(pJson, jkCreateComponentNodeStmtDnodeId, &pNode->dnodeId);
×
8261
}
8262

8263
static int32_t dropBnodeStmtToJson(const void* pObj, SJson* pJson) {
×
8264
  const SDropBnodeStmt* pNode = (const SDropBnodeStmt*)pObj;
×
8265
  return tjsonAddIntegerToObject(pJson, jkUpdateDropBNodeStmtId, pNode->dnodeId);
×
8266
}
8267

8268
static int32_t jsonToDropBnodeStmt(const SJson* pJson, void* pObj) {
×
8269
  SDropBnodeStmt* pNode = (SDropBnodeStmt*)pObj;
×
8270
  return tjsonGetIntValue(pJson, jkUpdateDropBNodeStmtId, &pNode->dnodeId);
×
8271
}
8272

8273
static int32_t createSnodeStmtToJson(const void* pObj, SJson* pJson) {
27✔
8274
  return createComponentNodeStmtToJson(pObj, pJson);
27✔
8275
}
8276

8277
static int32_t jsonToCreateSnodeStmt(const SJson* pJson, void* pObj) {
27✔
8278
  return jsonToCreateComponentNodeStmt(pJson, pObj);
27✔
8279
}
8280

8281
static int32_t dropSnodeStmtToJson(const void* pObj, SJson* pJson) { return dropComponentNodeStmtToJson(pObj, pJson); }
27✔
8282

8283
static int32_t jsonToDropSnodeStmt(const SJson* pJson, void* pObj) { return jsonToDropComponentNodeStmt(pJson, pObj); }
27✔
8284

8285
static int32_t createMnodeStmtToJson(const void* pObj, SJson* pJson) {
27✔
8286
  return createComponentNodeStmtToJson(pObj, pJson);
27✔
8287
}
8288

8289
static int32_t jsonToCreateMnodeStmt(const SJson* pJson, void* pObj) {
27✔
8290
  return jsonToCreateComponentNodeStmt(pJson, pObj);
27✔
8291
}
8292

8293
static int32_t dropMnodeStmtToJson(const void* pObj, SJson* pJson) { return dropComponentNodeStmtToJson(pObj, pJson); }
27✔
8294

8295
static int32_t jsonToDropMnodeStmt(const SJson* pJson, void* pObj) { return jsonToDropComponentNodeStmt(pJson, pObj); }
27✔
8296

8297
static const char* jkDropDnodeStmtDnodeId = "DnodeId";
8298
static const char* jkDropDnodeStmtFqdn = "Fqdn";
8299
static const char* jkDropDnodeStmtPort = "Port";
8300
static const char* jkDropDnodeStmtForce = "Force";
8301
static const char* jkDropDnodeStmtUnsafe = "Unsafe";
8302

8303
static int32_t dropDnodeStmtToJson(const void* pObj, SJson* pJson) {
243✔
8304
  const SDropDnodeStmt* pNode = (const SDropDnodeStmt*)pObj;
243✔
8305

8306
  int32_t code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtDnodeId, pNode->dnodeId);
243✔
8307
  if (TSDB_CODE_SUCCESS == code) {
243!
8308
    code = tjsonAddStringToObject(pJson, jkDropDnodeStmtFqdn, pNode->fqdn);
243✔
8309
  }
8310
  if (TSDB_CODE_SUCCESS == code) {
243!
8311
    code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtPort, pNode->port);
243✔
8312
  }
8313
  if (TSDB_CODE_SUCCESS == code) {
243!
8314
    code = tjsonAddBoolToObject(pJson, jkDropDnodeStmtForce, pNode->force);
243✔
8315
  }
8316
  if (TSDB_CODE_SUCCESS == code) {
243!
8317
    code = tjsonAddBoolToObject(pJson, jkDropDnodeStmtUnsafe, pNode->unsafe);
243✔
8318
  }
8319

8320
  return code;
243✔
8321
}
8322

8323
static int32_t jsonToDropDnodeStmt(const SJson* pJson, void* pObj) {
243✔
8324
  SDropDnodeStmt* pNode = (SDropDnodeStmt*)pObj;
243✔
8325

8326
  int32_t code = tjsonGetIntValue(pJson, jkDropDnodeStmtDnodeId, &pNode->dnodeId);
243✔
8327
  if (TSDB_CODE_SUCCESS == code) {
243!
8328
    code = tjsonGetStringValue(pJson, jkDropDnodeStmtFqdn, pNode->fqdn);
243✔
8329
  }
8330
  if (TSDB_CODE_SUCCESS == code) {
243!
8331
    code = tjsonGetIntValue(pJson, jkDropDnodeStmtPort, &pNode->port);
243✔
8332
  }
8333
  if (TSDB_CODE_SUCCESS == code) {
243!
8334
    code = tjsonGetBoolValue(pJson, jkDropDnodeStmtForce, &pNode->force);
243✔
8335
  }
8336
  if (TSDB_CODE_SUCCESS == code) {
243!
8337
    code = tjsonGetBoolValue(pJson, jkDropDnodeStmtUnsafe, &pNode->unsafe);
243✔
8338
  }
8339

8340
  return code;
243✔
8341
}
8342

8343
static const char* jkRestoreComponentNodeStmtDnodeId = "DnodeId";
8344

8345
static int32_t restoreComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
×
8346
  const SRestoreComponentNodeStmt* pNode = (const SRestoreComponentNodeStmt*)pObj;
×
8347
  return tjsonAddIntegerToObject(pJson, jkRestoreComponentNodeStmtDnodeId, pNode->dnodeId);
×
8348
}
8349

8350
static int32_t jsonToRestoreComponentNodeStmt(const SJson* pJson, void* pObj) {
108✔
8351
  SRestoreComponentNodeStmt* pNode = (SRestoreComponentNodeStmt*)pObj;
108✔
8352
  return tjsonGetIntValue(pJson, jkRestoreComponentNodeStmtDnodeId, &pNode->dnodeId);
108✔
8353
}
8354

8355
static int32_t jsonToRestoreDnodeStmt(const SJson* pJson, void* pObj) {
27✔
8356
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
27✔
8357
}
8358
static int32_t jsonToRestoreQnodeStmt(const SJson* pJson, void* pObj) {
27✔
8359
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
27✔
8360
}
8361
static int32_t jsonToRestoreMnodeStmt(const SJson* pJson, void* pObj) {
27✔
8362
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
27✔
8363
}
8364
static int32_t jsonToRestoreVnodeStmt(const SJson* pJson, void* pObj) {
27✔
8365
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
27✔
8366
}
8367

8368
static const char* jkCreateTopicStmtTopicName = "TopicName";
8369
static const char* jkCreateTopicStmtSubscribeDbName = "SubscribeDbName";
8370
static const char* jkCreateTopicStmtIgnoreExists = "IgnoreExists";
8371
static const char* jkCreateTopicStmtQuery = "Query";
8372

8373
static int32_t createTopicStmtToJson(const void* pObj, SJson* pJson) {
219✔
8374
  const SCreateTopicStmt* pNode = (const SCreateTopicStmt*)pObj;
219✔
8375

8376
  int32_t code = tjsonAddStringToObject(pJson, jkCreateTopicStmtTopicName, pNode->topicName);
219✔
8377
  if (TSDB_CODE_SUCCESS == code) {
219!
8378
    code = tjsonAddStringToObject(pJson, jkCreateTopicStmtSubscribeDbName, pNode->subDbName);
219✔
8379
  }
8380
  if (TSDB_CODE_SUCCESS == code) {
219!
8381
    code = tjsonAddBoolToObject(pJson, jkCreateTopicStmtIgnoreExists, pNode->ignoreExists);
219✔
8382
  }
8383
  if (TSDB_CODE_SUCCESS == code) {
219!
8384
    code = tjsonAddObject(pJson, jkCreateTopicStmtQuery, nodeToJson, pNode->pQuery);
219✔
8385
  }
8386

8387
  return code;
219✔
8388
}
8389

8390
static int32_t jsonToCreateTopicStmt(const SJson* pJson, void* pObj) {
219✔
8391
  SCreateTopicStmt* pNode = (SCreateTopicStmt*)pObj;
219✔
8392

8393
  int32_t code = tjsonGetStringValue(pJson, jkCreateTopicStmtTopicName, pNode->topicName);
219✔
8394
  if (TSDB_CODE_SUCCESS == code) {
219!
8395
    code = tjsonGetStringValue(pJson, jkCreateTopicStmtSubscribeDbName, pNode->subDbName);
219✔
8396
  }
8397
  if (TSDB_CODE_SUCCESS == code) {
219!
8398
    code = tjsonGetBoolValue(pJson, jkCreateTopicStmtIgnoreExists, &pNode->ignoreExists);
219✔
8399
  }
8400
  if (TSDB_CODE_SUCCESS == code) {
219!
8401
    code = jsonToNodeObject(pJson, jkCreateTopicStmtQuery, &pNode->pQuery);
219✔
8402
  }
8403

8404
  return code;
219✔
8405
}
8406

8407
static const char* jkDropTopicStmtTopicName = "TopicName";
8408
static const char* jkDropTopicStmtIgnoreNotExists = "IgnoreNotExists";
8409

8410
static int32_t dropTopicStmtToJson(const void* pObj, SJson* pJson) {
54✔
8411
  const SDropTopicStmt* pNode = (const SDropTopicStmt*)pObj;
54✔
8412

8413
  int32_t code = tjsonAddStringToObject(pJson, jkDropTopicStmtTopicName, pNode->topicName);
54✔
8414
  if (TSDB_CODE_SUCCESS == code) {
54!
8415
    code = tjsonAddBoolToObject(pJson, jkDropTopicStmtIgnoreNotExists, pNode->ignoreNotExists);
54✔
8416
  }
8417

8418
  return code;
54✔
8419
}
8420

8421
static int32_t jsonToDropTopicStmt(const SJson* pJson, void* pObj) {
54✔
8422
  SDropTopicStmt* pNode = (SDropTopicStmt*)pObj;
54✔
8423

8424
  int32_t code = tjsonGetStringValue(pJson, jkDropTopicStmtTopicName, pNode->topicName);
54✔
8425
  if (TSDB_CODE_SUCCESS == code) {
54!
8426
    code = tjsonGetBoolValue(pJson, jkDropTopicStmtIgnoreNotExists, &pNode->ignoreNotExists);
54✔
8427
  }
8428

8429
  return code;
54✔
8430
}
8431

8432
static const char* jkDropCGroupStmtTopicName = "TopicName";
8433
static const char* jkDropCGroupStmtConsumerGroup = "ConsumerGroup";
8434
static const char* jkDropCGroupStmtIgnoreNotExists = "IgnoreNotExists";
8435

8436
static int32_t dropConsumerGroupStmtToJson(const void* pObj, SJson* pJson) {
54✔
8437
  const SDropCGroupStmt* pNode = (const SDropCGroupStmt*)pObj;
54✔
8438

8439
  int32_t code = tjsonAddStringToObject(pJson, jkDropCGroupStmtTopicName, pNode->topicName);
54✔
8440
  if (TSDB_CODE_SUCCESS == code) {
54!
8441
    code = tjsonAddStringToObject(pJson, jkDropCGroupStmtConsumerGroup, pNode->cgroup);
54✔
8442
  }
8443
  if (TSDB_CODE_SUCCESS == code) {
54!
8444
    code = tjsonAddBoolToObject(pJson, jkDropCGroupStmtIgnoreNotExists, pNode->ignoreNotExists);
54✔
8445
  }
8446

8447
  return code;
54✔
8448
}
8449

8450
static int32_t jsonToDropConsumerGroupStmt(const SJson* pJson, void* pObj) {
54✔
8451
  SDropCGroupStmt* pNode = (SDropCGroupStmt*)pObj;
54✔
8452

8453
  int32_t code = tjsonGetStringValue(pJson, jkDropCGroupStmtTopicName, pNode->topicName);
54✔
8454
  if (TSDB_CODE_SUCCESS == code) {
54!
8455
    code = tjsonGetStringValue(pJson, jkDropCGroupStmtConsumerGroup, pNode->cgroup);
54✔
8456
  }
8457
  if (TSDB_CODE_SUCCESS == code) {
54!
8458
    code = tjsonGetBoolValue(pJson, jkDropCGroupStmtIgnoreNotExists, &pNode->ignoreNotExists);
54✔
8459
  }
8460

8461
  return code;
54✔
8462
}
8463

8464
static const char* jkAlterClusterStmtConfig = "Config";
8465
static const char* jkAlterClusterStmtValue = "Value";
8466

8467
static int32_t alterClusterStmtToJson(const void* pObj, SJson* pJson) {
×
8468
  const SAlterClusterStmt* pNode = (const SAlterClusterStmt*)pObj;
×
8469

8470
  int32_t code = tjsonAddStringToObject(pJson, jkAlterClusterStmtConfig, pNode->config);
×
8471
  if (TSDB_CODE_SUCCESS == code) {
×
8472
    code = tjsonAddStringToObject(pJson, jkAlterClusterStmtValue, pNode->value);
×
8473
  }
8474

8475
  return code;
×
8476
}
8477

8478
static int32_t jsonToAlterClusterStmt(const SJson* pJson, void* pObj) {
×
8479
  SAlterClusterStmt* pNode = (SAlterClusterStmt*)pObj;
×
8480

8481
  int32_t code = tjsonGetStringValue(pJson, jkAlterClusterStmtConfig, pNode->config);
×
8482
  if (TSDB_CODE_SUCCESS == code) {
×
8483
    code = tjsonGetStringValue(pJson, jkAlterClusterStmtValue, pNode->value);
×
8484
  }
8485

8486
  return code;
×
8487
}
8488

8489
static const char* jkAlterLocalStmtConfig = "Config";
8490
static const char* jkAlterLocalStmtValue = "Value";
8491

8492
static int32_t alterLocalStmtToJson(const void* pObj, SJson* pJson) {
54✔
8493
  const SAlterLocalStmt* pNode = (const SAlterLocalStmt*)pObj;
54✔
8494

8495
  int32_t code = tjsonAddStringToObject(pJson, jkAlterLocalStmtConfig, pNode->config);
54✔
8496
  if (TSDB_CODE_SUCCESS == code) {
54!
8497
    code = tjsonAddStringToObject(pJson, jkAlterLocalStmtValue, pNode->value);
54✔
8498
  }
8499

8500
  return code;
54✔
8501
}
8502

8503
static int32_t jsonToAlterLocalStmt(const SJson* pJson, void* pObj) {
54✔
8504
  SAlterLocalStmt* pNode = (SAlterLocalStmt*)pObj;
54✔
8505

8506
  int32_t code = tjsonGetStringValue(pJson, jkAlterLocalStmtConfig, pNode->config);
54✔
8507
  if (TSDB_CODE_SUCCESS == code) {
54!
8508
    code = tjsonGetStringValue(pJson, jkAlterLocalStmtValue, pNode->value);
54✔
8509
  }
8510

8511
  return code;
54✔
8512
}
8513

8514
static const char* jkExplainStmtAnalyze = "Analyze";
8515
static const char* jkExplainStmtOptions = "Options";
8516
static const char* jkExplainStmtQuery = "Query";
8517

8518
static int32_t explainStmtToJson(const void* pObj, SJson* pJson) {
90✔
8519
  const SExplainStmt* pNode = (const SExplainStmt*)pObj;
90✔
8520

8521
  int32_t code = tjsonAddBoolToObject(pJson, jkExplainStmtAnalyze, pNode->analyze);
90✔
8522
  if (TSDB_CODE_SUCCESS == code) {
90!
8523
    code = tjsonAddObject(pJson, jkExplainStmtOptions, nodeToJson, pNode->pOptions);
90✔
8524
  }
8525
  if (TSDB_CODE_SUCCESS == code) {
90!
8526
    code = tjsonAddObject(pJson, jkExplainStmtQuery, nodeToJson, pNode->pQuery);
90✔
8527
  }
8528

8529
  return code;
90✔
8530
}
8531

8532
static int32_t jsonToExplainStmt(const SJson* pJson, void* pObj) {
90✔
8533
  SExplainStmt* pNode = (SExplainStmt*)pObj;
90✔
8534

8535
  int32_t code = tjsonGetBoolValue(pJson, jkExplainStmtAnalyze, &pNode->analyze);
90✔
8536
  if (TSDB_CODE_SUCCESS == code) {
90!
8537
    code = jsonToNodeObject(pJson, jkExplainStmtOptions, (SNode**)&pNode->pOptions);
90✔
8538
  }
8539
  if (TSDB_CODE_SUCCESS == code) {
90!
8540
    code = jsonToNodeObject(pJson, jkExplainStmtQuery, &pNode->pQuery);
90✔
8541
  }
8542

8543
  return code;
90✔
8544
}
8545

8546
static const char* jkDescribeStmtDbName = "DbName";
8547
static const char* jkDescribeStmtTableName = "TableName";
8548

8549
static int32_t describeStmtToJson(const void* pObj, SJson* pJson) {
54✔
8550
  const SDescribeStmt* pNode = (const SDescribeStmt*)pObj;
54✔
8551

8552
  int32_t code = tjsonAddStringToObject(pJson, jkDescribeStmtDbName, pNode->dbName);
54✔
8553
  if (TSDB_CODE_SUCCESS == code) {
54!
8554
    code = tjsonAddStringToObject(pJson, jkDescribeStmtTableName, pNode->tableName);
54✔
8555
  }
8556

8557
  return code;
54✔
8558
}
8559

8560
static int32_t jsonToDescribeStmt(const SJson* pJson, void* pObj) {
54✔
8561
  SDescribeStmt* pNode = (SDescribeStmt*)pObj;
54✔
8562

8563
  int32_t code = tjsonGetStringValue(pJson, jkDescribeStmtDbName, pNode->dbName);
54✔
8564
  if (TSDB_CODE_SUCCESS == code) {
54!
8565
    code = tjsonGetStringValue(pJson, jkDescribeStmtTableName, pNode->tableName);
54✔
8566
  }
8567

8568
  return code;
54✔
8569
}
8570

8571
static const char* jkCompactDatabaseStmtDbName = "DbName";
8572

8573
static int32_t compactDatabaseStmtToJson(const void* pObj, SJson* pJson) {
108✔
8574
  const SCompactDatabaseStmt* pNode = (const SCompactDatabaseStmt*)pObj;
108✔
8575
  return tjsonAddStringToObject(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
108✔
8576
}
8577

8578
static int32_t jsonToCompactDatabaseStmt(const SJson* pJson, void* pObj) {
108✔
8579
  SCompactDatabaseStmt* pNode = (SCompactDatabaseStmt*)pObj;
108✔
8580
  return tjsonGetStringValue(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
108✔
8581
}
8582

8583
static int32_t compactVgroupsStmtToJson(const void* pObj, SJson* pJson) {
×
8584
  const SCompactVgroupsStmt* pNode = (const SCompactVgroupsStmt*)pObj;
×
8585
  return 0;
×
8586
}
8587

8588
static int32_t jsonToCompactVgroupsStmt(const SJson* pJson, void* pObj) {
×
8589
  SCompactVgroupsStmt* pNode = (SCompactVgroupsStmt*)pObj;
×
8590
  return 0;
×
8591
}
8592

8593
static const char* jkCreateStreamStmtStreamDbName = "StreamDbName";
8594
static const char* jkCreateStreamStmtStreamName = "StreamName";
8595
static const char* jkCreateStreamStmtTargetDbName = "TargetDbName";
8596
static const char* jkCreateStreamStmtTargetTabName = "TargetTabName";
8597
static const char* jkCreateStreamStmtIgnoreExists = "IgnoreExists";
8598
static const char* jkCreateStreamStmtTrigger = "Trigger";
8599
static const char* jkCreateStreamStmtQuery = "Query";
8600
static const char* jkCreateStreamStmtTags = "Tags";
8601
static const char* jkCreateStreamStmtSubtable = "Subtable";
8602
static const char* jkCreateStreamStmtCols = "Cols";
8603

8604
static int32_t createStreamStmtToJson(const void* pObj, SJson* pJson) {
1,878✔
8605
  const SCreateStreamStmt* pNode = (const SCreateStreamStmt*)pObj;
1,878✔
8606

8607
  int32_t code = tjsonAddStringToObject(pJson, jkCreateStreamStmtStreamDbName, pNode->streamDbName);
1,878✔
8608
  if (TSDB_CODE_SUCCESS == code) {
1,878!
8609
    code = tjsonAddStringToObject(pJson, jkCreateStreamStmtStreamName, pNode->streamName);
1,878✔
8610
  }
8611
  if (TSDB_CODE_SUCCESS == code) {
1,878!
8612
    code = tjsonAddStringToObject(pJson, jkCreateStreamStmtTargetDbName, pNode->targetDbName);
1,878✔
8613
  }
8614
  if (TSDB_CODE_SUCCESS == code) {
1,878!
8615
    code = tjsonAddStringToObject(pJson, jkCreateStreamStmtTargetTabName, pNode->targetTabName);
1,878✔
8616
  }
8617
  if (TSDB_CODE_SUCCESS == code) {
1,878!
8618
    code = tjsonAddBoolToObject(pJson, jkCreateStreamStmtIgnoreExists, pNode->ignoreExists);
1,878✔
8619
  }
8620
  if (TSDB_CODE_SUCCESS == code) {
1,878!
8621
    code = tjsonAddObject(pJson, jkCreateStreamStmtQuery, nodeToJson, pNode->pTrigger);
1,878✔
8622
  }
8623
  if (TSDB_CODE_SUCCESS == code) {
1,878!
8624
    code = tjsonAddObject(pJson, jkCreateStreamStmtQuery, nodeToJson, pNode->pQuery);
1,878✔
8625
  }
8626
  if (TSDB_CODE_SUCCESS == code) {
1,878!
8627
    code = tjsonAddObject(pJson, jkCreateStreamStmtSubtable, nodeToJson, pNode->pSubtable);
1,878✔
8628
  }
8629
  if (TSDB_CODE_SUCCESS == code) {
1,878!
8630
    code = nodeListToJson(pJson, jkCreateStreamStmtTags, pNode->pTags);
1,878✔
8631
  }
8632
  if (TSDB_CODE_SUCCESS == code) {
1,878!
8633
    code = nodeListToJson(pJson, jkCreateStreamStmtCols, pNode->pCols);
1,878✔
8634
  }
8635
  return code;
1,878✔
8636
}
8637

8638
static int32_t jsonToCreateStreamStmt(const SJson* pJson, void* pObj) {
1,878✔
8639
  SCreateStreamStmt* pNode = (SCreateStreamStmt*)pObj;
1,878✔
8640

8641
  int32_t code = tjsonGetStringValue(pJson, jkCreateStreamStmtStreamDbName, pNode->streamDbName);
1,878✔
8642
  if (TSDB_CODE_SUCCESS == code) {
1,878!
8643
    code = tjsonGetStringValue(pJson, jkCreateStreamStmtStreamName, pNode->streamName);
1,878✔
8644
  }
8645
  if (TSDB_CODE_SUCCESS == code) {
1,878!
8646
    code = tjsonGetStringValue(pJson, jkCreateStreamStmtTargetDbName, pNode->targetDbName);
1,878✔
8647
  }
8648
  if (TSDB_CODE_SUCCESS == code) {
1,878!
8649
    code = tjsonGetStringValue(pJson, jkCreateStreamStmtTargetTabName, pNode->targetTabName);
1,878✔
8650
  }
8651
  if (TSDB_CODE_SUCCESS == code) {
1,878!
8652
    code = tjsonGetBoolValue(pJson, jkCreateStreamStmtIgnoreExists, &pNode->ignoreExists);
1,878✔
8653
  }
8654
  if (TSDB_CODE_SUCCESS == code) {
1,878!
8655
    code = jsonToNodeObject(pJson, jkCreateStreamStmtTrigger, &pNode->pTrigger);
1,878✔
8656
  }
8657
  if (TSDB_CODE_SUCCESS == code) {
1,878!
8658
    code = jsonToNodeObject(pJson, jkCreateStreamStmtQuery, &pNode->pQuery);
1,878✔
8659
  }
8660
  if (TSDB_CODE_SUCCESS == code) {
1,878!
8661
    code = jsonToNodeObject(pJson, jkCreateStreamStmtSubtable, &pNode->pSubtable);
1,878✔
8662
  }
8663
  if (TSDB_CODE_SUCCESS == code) {
1,878!
8664
    code = jsonToNodeList(pJson, jkCreateStreamStmtTags, &pNode->pTags);
1,878✔
8665
  }
8666
  if (TSDB_CODE_SUCCESS == code) {
1,878!
8667
    code = jsonToNodeList(pJson, jkCreateStreamStmtCols, &pNode->pCols);
1,878✔
8668
  }
8669
  return code;
1,878✔
8670
}
8671

8672
static const char* jkDropStreamStmtDbName = "DbName";
8673
static const char* jkDropStreamStmtStreamName = "StreamName";
8674
static const char* jkDropStreamStmtIgnoreNotExists = "IgnoreNotExists";
8675

8676
static int32_t dropStreamStmtToJson(const void* pObj, SJson* pJson) {
×
8677
  const SDropStreamStmt* pNode = (const SDropStreamStmt*)pObj;
×
8678

8679
  int32_t code = tjsonAddStringToObject(pJson, jkDropStreamStmtDbName, pNode->streamDbName);
×
8680
  if (TSDB_CODE_SUCCESS == code) {
×
8681
    code = tjsonAddStringToObject(pJson, jkDropStreamStmtStreamName, pNode->streamName);
×
8682
  }
8683
  if (TSDB_CODE_SUCCESS == code) {
×
8684
    code = tjsonAddBoolToObject(pJson, jkDropStreamStmtIgnoreNotExists, pNode->ignoreNotExists);
×
8685
  }
8686

8687
  return code;
×
8688
}
8689

8690
static int32_t jsonToDropStreamStmt(const SJson* pJson, void* pObj) {
×
8691
  SDropStreamStmt* pNode = (SDropStreamStmt*)pObj;
×
8692

8693
  int32_t code = tjsonGetStringValue(pJson, jkDropStreamStmtDbName, pNode->streamDbName);
×
8694
  if (TSDB_CODE_SUCCESS == code) {
×
8695
    code = tjsonGetStringValue(pJson, jkDropStreamStmtStreamName, pNode->streamName);
×
8696
  }
8697
  if (TSDB_CODE_SUCCESS == code) {
×
8698
    code = tjsonGetBoolValue(pJson, jkDropStreamStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
8699
  }
8700

8701
  return code;
×
8702
}
8703

8704
static const char* jkMergeVgroupStmtVgroupId1 = "VgroupId1";
8705
static const char* jkMergeVgroupStmtVgroupId2 = "VgroupId2";
8706

8707
static int32_t mergeVgroupStmtToJson(const void* pObj, SJson* pJson) {
27✔
8708
  const SMergeVgroupStmt* pNode = (const SMergeVgroupStmt*)pObj;
27✔
8709

8710
  int32_t code = tjsonAddIntegerToObject(pJson, jkMergeVgroupStmtVgroupId1, pNode->vgId1);
27✔
8711
  if (TSDB_CODE_SUCCESS == code) {
27!
8712
    code = tjsonAddIntegerToObject(pJson, jkMergeVgroupStmtVgroupId2, pNode->vgId2);
27✔
8713
  }
8714

8715
  return code;
27✔
8716
}
8717

8718
static int32_t jsonToMergeVgroupStmt(const SJson* pJson, void* pObj) {
27✔
8719
  SMergeVgroupStmt* pNode = (SMergeVgroupStmt*)pObj;
27✔
8720

8721
  int32_t code = tjsonGetIntValue(pJson, jkMergeVgroupStmtVgroupId1, &pNode->vgId1);
27✔
8722
  if (TSDB_CODE_SUCCESS == code) {
27!
8723
    code = tjsonGetIntValue(pJson, jkMergeVgroupStmtVgroupId2, &pNode->vgId2);
27✔
8724
  }
8725

8726
  return code;
27✔
8727
}
8728

8729
static const char* jkRedistributeVgroupStmtVgroupId = "VgroupId";
8730
static const char* jkRedistributeVgroupStmtDnodeId1 = "DnodeId1";
8731
static const char* jkRedistributeVgroupStmtDnodeId2 = "DnodeId2";
8732
static const char* jkRedistributeVgroupStmtDnodeId3 = "DnodeId3";
8733
static const char* jkRedistributeVgroupStmtDnodes = "Dnodes";
8734

8735
static int32_t redistributeVgroupStmtToJson(const void* pObj, SJson* pJson) {
54✔
8736
  const SRedistributeVgroupStmt* pNode = (const SRedistributeVgroupStmt*)pObj;
54✔
8737

8738
  int32_t code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtVgroupId, pNode->vgId);
54✔
8739
  if (TSDB_CODE_SUCCESS == code) {
54!
8740
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId1, pNode->dnodeId1);
54✔
8741
  }
8742
  if (TSDB_CODE_SUCCESS == code) {
54!
8743
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId2, pNode->dnodeId2);
54✔
8744
  }
8745
  if (TSDB_CODE_SUCCESS == code) {
54!
8746
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId3, pNode->dnodeId3);
54✔
8747
  }
8748
  if (TSDB_CODE_SUCCESS == code) {
54!
8749
    code = nodeListToJson(pJson, jkRedistributeVgroupStmtDnodes, pNode->pDnodes);
54✔
8750
  }
8751

8752
  return code;
54✔
8753
}
8754

8755
static int32_t jsonToRedistributeVgroupStmt(const SJson* pJson, void* pObj) {
54✔
8756
  SRedistributeVgroupStmt* pNode = (SRedistributeVgroupStmt*)pObj;
54✔
8757

8758
  int32_t code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtVgroupId, &pNode->vgId);
54✔
8759
  if (TSDB_CODE_SUCCESS == code) {
54!
8760
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId1, &pNode->dnodeId1);
54✔
8761
  }
8762
  if (TSDB_CODE_SUCCESS == code) {
54!
8763
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId2, &pNode->dnodeId2);
54✔
8764
  }
8765
  if (TSDB_CODE_SUCCESS == code) {
54!
8766
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId3, &pNode->dnodeId3);
54✔
8767
  }
8768
  if (TSDB_CODE_SUCCESS == code) {
54!
8769
    code = jsonToNodeList(pJson, jkRedistributeVgroupStmtDnodes, &pNode->pDnodes);
54✔
8770
  }
8771

8772
  return code;
54✔
8773
}
8774

8775
static const char* jkSplitVgroupStmtVgroupId = "VgroupId";
8776
static const char* jkSplitVgroupStmtForce = "Force";
8777

8778
static int32_t splitVgroupStmtToJson(const void* pObj, SJson* pJson) {
27✔
8779
  const SSplitVgroupStmt* pNode = (const SSplitVgroupStmt*)pObj;
27✔
8780
  int32_t code = tjsonAddIntegerToObject(pJson, jkSplitVgroupStmtVgroupId, pNode->vgId);
27✔
8781
  if (TSDB_CODE_SUCCESS == code) {
27!
8782
    code = tjsonAddBoolToObject(pJson, jkSplitVgroupStmtForce, pNode->force);
27✔
8783
  }
8784

8785
  return code;
27✔
8786
}
8787

8788
static int32_t jsonToSplitVgroupStmt(const SJson* pJson, void* pObj) {
27✔
8789
  SSplitVgroupStmt* pNode = (SSplitVgroupStmt*)pObj;
27✔
8790
  int32_t code = tjsonGetIntValue(pJson, jkSplitVgroupStmtVgroupId, &pNode->vgId);
27✔
8791
  if (TSDB_CODE_SUCCESS == code) {
27!
8792
    code = tjsonGetBoolValue(pJson, jkSplitVgroupStmtForce, &pNode->force);
27✔
8793
  }
8794

8795
  return code;
27✔
8796
}
8797

8798
static const char* jkGrantStmtUserName = "UserName";
8799
static const char* jkGrantStmtObjName = "ObjName";
8800
static const char* jkGrantStmtPrivileges = "Privileges";
8801

8802
static int32_t grantStmtToJson(const void* pObj, SJson* pJson) {
324✔
8803
  const SGrantStmt* pNode = (const SGrantStmt*)pObj;
324✔
8804

8805
  int32_t code = tjsonAddStringToObject(pJson, jkGrantStmtUserName, pNode->userName);
324✔
8806
  if (TSDB_CODE_SUCCESS == code) {
324!
8807
    code = tjsonAddStringToObject(pJson, jkGrantStmtObjName, pNode->objName);
324✔
8808
  }
8809
  if (TSDB_CODE_SUCCESS == code) {
324!
8810
    code = tjsonAddIntegerToObject(pJson, jkGrantStmtPrivileges, pNode->privileges);
324✔
8811
  }
8812

8813
  return code;
324✔
8814
}
8815

8816
static int32_t jsonToGrantStmt(const SJson* pJson, void* pObj) {
324✔
8817
  SGrantStmt* pNode = (SGrantStmt*)pObj;
324✔
8818

8819
  int32_t code = tjsonGetStringValue(pJson, jkGrantStmtUserName, pNode->userName);
324✔
8820
  if (TSDB_CODE_SUCCESS == code) {
324!
8821
    code = tjsonGetStringValue(pJson, jkGrantStmtObjName, pNode->objName);
324✔
8822
  }
8823
  if (TSDB_CODE_SUCCESS == code) {
324!
8824
    code = tjsonGetBigIntValue(pJson, jkGrantStmtPrivileges, &pNode->privileges);
324✔
8825
  }
8826

8827
  return code;
324✔
8828
}
8829

8830
static int32_t revokeStmtToJson(const void* pObj, SJson* pJson) { return grantStmtToJson(pObj, pJson); }
162✔
8831

8832
static int32_t jsonToRevokeStmt(const SJson* pJson, void* pObj) { return jsonToGrantStmt(pJson, pObj); }
162✔
8833

8834
static const char* jkShowStmtDbName = "DbName";
8835
static const char* jkShowStmtTbName = "TbName";
8836
static const char* jkShowStmtTableCondType = "TableCondType";
8837

8838
static int32_t showStmtToJson(const void* pObj, SJson* pJson) {
279✔
8839
  const SShowStmt* pNode = (const SShowStmt*)pObj;
279✔
8840

8841
  int32_t code = tjsonAddObject(pJson, jkShowStmtDbName, nodeToJson, pNode->pDbName);
279✔
8842
  if (TSDB_CODE_SUCCESS == code) {
279!
8843
    code = tjsonAddObject(pJson, jkShowStmtTbName, nodeToJson, pNode->pTbName);
279✔
8844
  }
8845
  if (TSDB_CODE_SUCCESS == code) {
279!
8846
    code = tjsonAddIntegerToObject(pJson, jkShowStmtTableCondType, pNode->tableCondType);
279✔
8847
  }
8848

8849
  return code;
279✔
8850
}
8851

8852
static int32_t jsonToShowStmt(const SJson* pJson, void* pObj) {
279✔
8853
  SShowStmt* pNode = (SShowStmt*)pObj;
279✔
8854

8855
  int32_t code = jsonToNodeObject(pJson, jkShowStmtDbName, &pNode->pDbName);
279✔
8856
  if (TSDB_CODE_SUCCESS == code) {
279!
8857
    code = jsonToNodeObject(pJson, jkShowStmtTbName, &pNode->pTbName);
279✔
8858
  }
8859
  if (TSDB_CODE_SUCCESS == code) {
279!
8860
    tjsonGetNumberValue(pJson, jkShowStmtTableCondType, pNode->tableCondType, code);
279✔
8861
  }
8862

8863
  return code;
279✔
8864
}
8865

8866
static int32_t showDnodesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
9✔
8867

8868
static int32_t jsonToShowDnodesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
9✔
8869

8870
static int32_t showMnodesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
9✔
8871

8872
static int32_t jsonToShowMnodesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
9✔
8873

8874
static int32_t showQnodesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
9✔
8875

8876
static int32_t jsonToShowQnodesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
9✔
8877

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

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

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

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

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

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

8890
static int32_t showClusterStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
9✔
8891

8892
static int32_t jsonToShowClusterStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
9✔
8893

8894
static int32_t showDatabasesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
9✔
8895

8896
static int32_t jsonToShowDatabasesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
9✔
8897

8898
static int32_t showFunctionsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
9✔
8899

8900
static int32_t jsonToShowFunctionsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
9✔
8901

8902
static int32_t showIndexesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
18✔
8903

8904
static int32_t jsonToShowIndexesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
18✔
8905

8906
static int32_t showStablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
36✔
8907

8908
static int32_t jsonToShowStablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
36✔
8909

8910
static int32_t showStreamsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
9✔
8911

8912
static int32_t jsonToShowStreamsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
9✔
8913

8914
static int32_t showTablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
36✔
8915

8916
static int32_t jsonToShowTablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
36✔
8917

8918
static int32_t showTagsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
9✔
8919

8920
static int32_t jsonToShowTagsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
9✔
8921

8922
static int32_t showUsersStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
9✔
8923

8924
static int32_t jsonToShowUsersStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
9✔
8925

8926
static int32_t showVgroupsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
18✔
8927

8928
static int32_t jsonToShowVgroupsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
18✔
8929

8930
static int32_t showConsumersStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
9✔
8931

8932
static int32_t jsonToShowConsumersStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
9✔
8933

8934
static int32_t showVariablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
27✔
8935

8936
static int32_t jsonToShowVariablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
27✔
8937

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

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

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

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

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

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

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

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

8954
static int32_t showUsageStmtStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
8955
static int32_t jsonToShowUsageStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
8956
static int32_t showMountsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
8957
static int32_t jsonToShowMountsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
8958

8959
static const char* jkShowDnodeVariablesStmtDnodeId = "DnodeId";
8960
static const char* jkShowDnodeVariablesStmtLikePattern = "LikePattern";
8961

8962
static int32_t showDnodeVariablesStmtToJson(const void* pObj, SJson* pJson) {
18✔
8963
  const SShowDnodeVariablesStmt* pNode = (const SShowDnodeVariablesStmt*)pObj;
18✔
8964

8965
  int32_t code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtDnodeId, nodeToJson, pNode->pDnodeId);
18✔
8966
  if (TSDB_CODE_SUCCESS == code) {
18!
8967
    code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtLikePattern, nodeToJson, pNode->pLikePattern);
18✔
8968
  }
8969

8970
  return code;
18✔
8971
}
8972

8973
static int32_t jsonToShowDnodeVariablesStmt(const SJson* pJson, void* pObj) {
18✔
8974
  SShowDnodeVariablesStmt* pNode = (SShowDnodeVariablesStmt*)pObj;
18✔
8975

8976
  int32_t code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtDnodeId, &pNode->pDnodeId);
18✔
8977
  if (TSDB_CODE_SUCCESS == code) {
18!
8978
    code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtLikePattern, &pNode->pLikePattern);
18✔
8979
  }
8980

8981
  return code;
18✔
8982
}
8983

8984
static int32_t showTransactionsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
9✔
8985

8986
static int32_t jsonToShowTransactionsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
9✔
8987

8988
static int32_t showSubscriptionsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
9✔
8989

8990
static int32_t jsonToShowSubscriptionsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
9✔
8991

8992
static const char* jkShowVnodesStmtDnodeId = "DnodeId";
8993
static const char* jkShowVnodesStmtDnodeEndpoint = "DnodeEndpoint";
8994

8995
static int32_t showVnodesStmtToJson(const void* pObj, SJson* pJson) {
18✔
8996
  const SShowVnodesStmt* pNode = (const SShowVnodesStmt*)pObj;
18✔
8997

8998
  int32_t code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeId, nodeToJson, pNode->pDnodeId);
18✔
8999
  if (TSDB_CODE_SUCCESS == code) {
18!
9000
    code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeEndpoint, nodeToJson, pNode->pDnodeEndpoint);
18✔
9001
  }
9002

9003
  return code;
18✔
9004
}
9005

9006
static int32_t jsonToShowVnodesStmt(const SJson* pJson, void* pObj) {
18✔
9007
  SShowVnodesStmt* pNode = (SShowVnodesStmt*)pObj;
18✔
9008

9009
  int32_t code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeId, &pNode->pDnodeId);
18✔
9010
  if (TSDB_CODE_SUCCESS == code) {
18!
9011
    code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeEndpoint, &pNode->pDnodeEndpoint);
18✔
9012
  }
9013

9014
  return code;
18✔
9015
}
9016

9017
static int32_t showUserPrivilegesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
9✔
9018

9019
static int32_t jsonToShowUserPrivilegesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
9✔
9020

9021
static const char* jkShowCreateDatabaseStmtDbName = "DbName";
9022

9023
static int32_t showCreateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
27✔
9024
  const SShowCreateDatabaseStmt* pNode = (const SShowCreateDatabaseStmt*)pObj;
27✔
9025
  return tjsonAddStringToObject(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
27✔
9026
}
9027

9028
static int32_t jsonToShowCreateDatabaseStmt(const SJson* pJson, void* pObj) {
27✔
9029
  SShowCreateDatabaseStmt* pNode = (SShowCreateDatabaseStmt*)pObj;
27✔
9030
  return tjsonGetStringValue(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
27✔
9031
}
9032

9033
static const char* jkShowCreateTableStmtDbName = "DbName";
9034
static const char* jkShowCreateTableStmtTableName = "TableName";
9035

9036
static int32_t showCreateTableStmtToJson(const void* pObj, SJson* pJson) {
54✔
9037
  const SShowCreateTableStmt* pNode = (const SShowCreateTableStmt*)pObj;
54✔
9038

9039
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
54✔
9040
  if (TSDB_CODE_SUCCESS == code) {
54!
9041
    code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
54✔
9042
  }
9043

9044
  return code;
54✔
9045
}
9046

9047
static int32_t jsonToShowCreateTableStmt(const SJson* pJson, void* pObj) {
54✔
9048
  SShowCreateTableStmt* pNode = (SShowCreateTableStmt*)pObj;
54✔
9049

9050
  int32_t code = tjsonGetStringValue(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
54✔
9051
  if (TSDB_CODE_SUCCESS == code) {
54!
9052
    code = tjsonGetStringValue(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
54✔
9053
  }
9054

9055
  return code;
54✔
9056
}
9057

9058
static int32_t showCreateStableStmtToJson(const void* pObj, SJson* pJson) {
27✔
9059
  return showCreateTableStmtToJson(pObj, pJson);
27✔
9060
}
9061

9062
static int32_t jsonToShowCreateStableStmt(const SJson* pJson, void* pObj) {
27✔
9063
  return jsonToShowCreateTableStmt(pJson, pObj);
27✔
9064
}
9065

9066
static const char* jkShowCreateViewStmtDbName = "DbName";
9067
static const char* jkShowCreateViewStmtViewName = "ViewName";
9068

9069
static int32_t showCreateViewStmtToJson(const void* pObj, SJson* pJson) {
×
9070
  const SShowCreateViewStmt* pNode = (const SShowCreateViewStmt*)pObj;
×
9071

9072
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtDbName, pNode->dbName);
×
9073
  if (TSDB_CODE_SUCCESS == code) {
×
9074
    code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtViewName, pNode->viewName);
×
9075
  }
9076

9077
  return code;
×
9078
}
9079

9080
static int32_t jsonToShowCreateViewStmt(const SJson* pJson, void* pObj) {
×
9081
  SShowCreateViewStmt* pNode = (SShowCreateViewStmt*)pObj;
×
9082

9083
  int32_t code = tjsonGetStringValue(pJson, jkShowCreateViewStmtDbName, pNode->dbName);
×
9084
  if (TSDB_CODE_SUCCESS == code) {
×
9085
    code = tjsonGetStringValue(pJson, jkShowCreateViewStmtViewName, pNode->viewName);
×
9086
  }
9087

9088
  return code;
×
9089
}
9090

9091
static const char* jkShowTableDistributedStmtDbName = "DbName";
9092
static const char* jkShowTableDistributedStmtTableName = "TableName";
9093

9094
static int32_t showTableDistributedStmtToJson(const void* pObj, SJson* pJson) {
9✔
9095
  const SShowTableDistributedStmt* pNode = (const SShowTableDistributedStmt*)pObj;
9✔
9096

9097
  int32_t code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
9✔
9098
  if (TSDB_CODE_SUCCESS == code) {
9!
9099
    code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
9✔
9100
  }
9101

9102
  return code;
9✔
9103
}
9104

9105
static int32_t jsonToShowTableDistributedStmt(const SJson* pJson, void* pObj) {
9✔
9106
  SShowTableDistributedStmt* pNode = (SShowTableDistributedStmt*)pObj;
9✔
9107

9108
  int32_t code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
9✔
9109
  if (TSDB_CODE_SUCCESS == code) {
9!
9110
    code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
9✔
9111
  }
9112

9113
  return code;
9✔
9114
}
9115

9116
static int32_t showLocalVariablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
27✔
9117

9118
static int32_t jsonToShowLocalVariablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
27✔
9119

9120
static const char* jkShowTableTagsStmtDbName = "DbName";
9121
static const char* jkShowTableTagsStmtTbName = "TbName";
9122
static const char* jkShowTableTagsStmtTags = "Tags";
9123

9124
static int32_t showTableTagsStmtToJson(const void* pObj, SJson* pJson) {
27✔
9125
  const SShowTableTagsStmt* pNode = (const SShowTableTagsStmt*)pObj;
27✔
9126

9127
  int32_t code = tjsonAddObject(pJson, jkShowTableTagsStmtDbName, nodeToJson, pNode->pDbName);
27✔
9128
  if (TSDB_CODE_SUCCESS == code) {
27!
9129
    code = tjsonAddObject(pJson, jkShowTableTagsStmtTbName, nodeToJson, pNode->pTbName);
27✔
9130
  }
9131
  if (TSDB_CODE_SUCCESS == code) {
27!
9132
    code = nodeListToJson(pJson, jkShowTableTagsStmtTags, pNode->pTags);
27✔
9133
  }
9134

9135
  return code;
27✔
9136
}
9137

9138
static int32_t jsonToShowTableTagsStmt(const SJson* pJson, void* pObj) {
27✔
9139
  SShowTableTagsStmt* pNode = (SShowTableTagsStmt*)pObj;
27✔
9140

9141
  int32_t code = jsonToNodeObject(pJson, jkShowTableTagsStmtDbName, &pNode->pDbName);
27✔
9142
  if (TSDB_CODE_SUCCESS == code) {
27!
9143
    code = jsonToNodeObject(pJson, jkShowTableTagsStmtTbName, &pNode->pTbName);
27✔
9144
  }
9145
  if (TSDB_CODE_SUCCESS == code) {
27!
9146
    code = jsonToNodeList(pJson, jkShowTableTagsStmtTags, &pNode->pTags);
27✔
9147
  }
9148

9149
  return code;
27✔
9150
}
9151

9152
static const char* jkDeleteStmtFromTable = "FromTable";
9153
static const char* jkDeleteStmtWhere = "Where";
9154
static const char* jkDeleteStmtCountFunc = "CountFunc";
9155
static const char* jkDeleteStmtTagIndexCond = "TagIndexCond";
9156
static const char* jkDeleteStmtTimeRangeStartKey = "TimeRangeStartKey";
9157
static const char* jkDeleteStmtTimeRangeEndKey = "TimeRangeEndKey";
9158
static const char* jkDeleteStmtPrecision = "Precision";
9159
static const char* jkDeleteStmtDeleteZeroRows = "DeleteZeroRows";
9160

9161
static int32_t deleteStmtToJson(const void* pObj, SJson* pJson) {
129✔
9162
  const SDeleteStmt* pNode = (const SDeleteStmt*)pObj;
129✔
9163

9164
  int32_t code = tjsonAddObject(pJson, jkDeleteStmtFromTable, nodeToJson, pNode->pFromTable);
129✔
9165
  if (TSDB_CODE_SUCCESS == code) {
129!
9166
    code = tjsonAddObject(pJson, jkDeleteStmtWhere, nodeToJson, pNode->pWhere);
129✔
9167
  }
9168
  if (TSDB_CODE_SUCCESS == code) {
129!
9169
    code = tjsonAddObject(pJson, jkDeleteStmtCountFunc, nodeToJson, pNode->pCountFunc);
129✔
9170
  }
9171
  if (TSDB_CODE_SUCCESS == code) {
129!
9172
    code = tjsonAddObject(pJson, jkDeleteStmtTagIndexCond, nodeToJson, pNode->pTagCond);
129✔
9173
  }
9174
  if (TSDB_CODE_SUCCESS == code) {
129!
9175
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtTimeRangeStartKey, pNode->timeRange.skey);
129✔
9176
  }
9177
  if (TSDB_CODE_SUCCESS == code) {
129!
9178
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtTimeRangeEndKey, pNode->timeRange.ekey);
129✔
9179
  }
9180
  if (TSDB_CODE_SUCCESS == code) {
129!
9181
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtPrecision, pNode->precision);
129✔
9182
  }
9183
  if (TSDB_CODE_SUCCESS == code) {
129!
9184
    code = tjsonAddBoolToObject(pJson, jkDeleteStmtDeleteZeroRows, pNode->deleteZeroRows);
129✔
9185
  }
9186

9187
  return code;
129✔
9188
}
9189

9190
static int32_t jsonToDeleteStmt(const SJson* pJson, void* pObj) {
129✔
9191
  SDeleteStmt* pNode = (SDeleteStmt*)pObj;
129✔
9192

9193
  int32_t code = jsonToNodeObject(pJson, jkDeleteStmtFromTable, &pNode->pFromTable);
129✔
9194
  if (TSDB_CODE_SUCCESS == code) {
129!
9195
    code = jsonToNodeObject(pJson, jkDeleteStmtWhere, &pNode->pWhere);
129✔
9196
  }
9197
  if (TSDB_CODE_SUCCESS == code) {
129!
9198
    code = jsonToNodeObject(pJson, jkDeleteStmtCountFunc, &pNode->pCountFunc);
129✔
9199
  }
9200
  if (TSDB_CODE_SUCCESS == code) {
129!
9201
    code = jsonToNodeObject(pJson, jkDeleteStmtTagIndexCond, &pNode->pTagCond);
129✔
9202
  }
9203
  if (TSDB_CODE_SUCCESS == code) {
129!
9204
    code = tjsonGetBigIntValue(pJson, jkDeleteStmtTimeRangeStartKey, &pNode->timeRange.skey);
129✔
9205
  }
9206
  if (TSDB_CODE_SUCCESS == code) {
129!
9207
    code = tjsonGetBigIntValue(pJson, jkDeleteStmtTimeRangeEndKey, &pNode->timeRange.ekey);
129✔
9208
  }
9209
  if (TSDB_CODE_SUCCESS == code) {
129!
9210
    code = tjsonGetUTinyIntValue(pJson, jkDeleteStmtPrecision, &pNode->precision);
129✔
9211
  }
9212
  if (TSDB_CODE_SUCCESS == code) {
129!
9213
    code = tjsonGetBoolValue(pJson, jkDeleteStmtDeleteZeroRows, &pNode->deleteZeroRows);
129✔
9214
  }
9215

9216
  return code;
129✔
9217
}
9218

9219
static const char* jkInsertStmtTable = "Table";
9220
static const char* jkInsertStmtCols = "Cols";
9221
static const char* jkInsertStmtQuery = "Query";
9222
static const char* jkInsertStmtPrecision = "Precision";
9223

9224
static int32_t insertStmtToJson(const void* pObj, SJson* pJson) {
36✔
9225
  const SInsertStmt* pNode = (const SInsertStmt*)pObj;
36✔
9226

9227
  int32_t code = tjsonAddObject(pJson, jkInsertStmtTable, nodeToJson, pNode->pTable);
36✔
9228
  if (TSDB_CODE_SUCCESS == code) {
36!
9229
    code = nodeListToJson(pJson, jkInsertStmtCols, pNode->pCols);
36✔
9230
  }
9231
  if (TSDB_CODE_SUCCESS == code) {
36!
9232
    code = tjsonAddObject(pJson, jkInsertStmtQuery, nodeToJson, pNode->pQuery);
36✔
9233
  }
9234
  if (TSDB_CODE_SUCCESS == code) {
36!
9235
    code = tjsonAddIntegerToObject(pJson, jkInsertStmtPrecision, pNode->precision);
36✔
9236
  }
9237

9238
  return code;
36✔
9239
}
9240

9241
static int32_t jsonToInsertStmt(const SJson* pJson, void* pObj) {
36✔
9242
  SInsertStmt* pNode = (SInsertStmt*)pObj;
36✔
9243

9244
  int32_t code = jsonToNodeObject(pJson, jkInsertStmtTable, &pNode->pTable);
36✔
9245
  if (TSDB_CODE_SUCCESS == code) {
36!
9246
    code = jsonToNodeList(pJson, jkInsertStmtCols, &pNode->pCols);
36✔
9247
  }
9248
  if (TSDB_CODE_SUCCESS == code) {
36!
9249
    code = jsonToNodeObject(pJson, jkInsertStmtQuery, &pNode->pQuery);
36✔
9250
  }
9251
  if (TSDB_CODE_SUCCESS == code) {
36!
9252
    code = tjsonGetUTinyIntValue(pJson, jkInsertStmtPrecision, &pNode->precision);
36✔
9253
  }
9254

9255
  return code;
36✔
9256
}
9257

9258
static const char* jkTSMAOptionFuncs = "Funcs";
9259
static const char* jkTSMAOptionCols = "Cols";
9260
static const char* jkTSMAOptionInterval = "Interval";
9261
static const char* jkTSMAOptionTsPrecision = "Precision";
9262

9263
static int32_t tsmaOptionToJson(const void* pObj, SJson* pJson) {
×
9264
  const STSMAOptions* pNode = (const STSMAOptions*)pObj;
×
9265
  int32_t             code = nodeListToJson(pJson, jkTSMAOptionFuncs, pNode->pFuncs);
×
9266
  if (TSDB_CODE_SUCCESS == code) {
×
9267
    code = tjsonAddObject(pJson, jkTSMAOptionInterval, nodeToJson, pNode->pInterval);
×
9268
  }
9269
  if (TSDB_CODE_SUCCESS == code) {
×
9270
    code = tjsonAddIntegerToObject(pJson, jkTSMAOptionTsPrecision, pNode->tsPrecision);
×
9271
  }
9272
  return code;
×
9273
}
9274

9275
static int32_t jsonToTSMAOption(const SJson* pJson, void* pObj) {
×
9276
  STSMAOptions* pNode = (STSMAOptions*)pObj;
×
9277
  int32_t       code = jsonToNodeList(pJson, jkTSMAOptionFuncs, &pNode->pFuncs);
×
9278
  if (TSDB_CODE_SUCCESS == code) {
×
9279
    code = jsonToNodeObject(pJson, jkTSMAOptionInterval, &pNode->pInterval);
×
9280
  }
9281
  if (TSDB_CODE_SUCCESS == code) {
×
9282
    code = tjsonGetUTinyIntValue(pJson, jkTSMAOptionTsPrecision, &pNode->tsPrecision);
×
9283
  }
9284
  return code;
×
9285
}
9286

9287
static const char* jkCreateTSMAStmtIgnoreExists = "IgnoreExists";
9288
static const char* jkCreateTSMAStmtTsmaName = "TSMAName";
9289
static const char* jkCreateTSMAStmtDbName = "DbName";
9290
static const char* jkCreateTSMAStmtTableName = "TableName";
9291
static const char* jkCreateTSMAStmtpOptions = "Options";
9292

9293
static int32_t createTSMAStmtToJson(const void* pObj, SJson* pJson) {
×
9294
  const SCreateTSMAStmt* pNode = (const SCreateTSMAStmt*)pObj;
×
9295
  int32_t                code = tjsonAddBoolToObject(pJson, jkCreateTSMAStmtIgnoreExists, pNode->ignoreExists);
×
9296
  if (TSDB_CODE_SUCCESS == code) {
×
9297
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtTsmaName, pNode->tsmaName);
×
9298
  }
9299
  if (TSDB_CODE_SUCCESS == code) {
×
9300
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtDbName, pNode->dbName);
×
9301
  }
9302
  if (TSDB_CODE_SUCCESS == code) {
×
9303
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtTableName, pNode->tableName);
×
9304
  }
9305
  if (TSDB_CODE_SUCCESS == code) {
×
9306
    code = tjsonAddObject(pJson, jkCreateTSMAStmtpOptions, nodeToJson, pNode->pOptions);
×
9307
  }
9308
  return code;
×
9309
}
9310

9311
static int32_t jsonToCreateTSMAStmt(const SJson* pJson, void* pObj) {
×
9312
  SCreateTSMAStmt* pNode = (SCreateTSMAStmt*)pObj;
×
9313
  int32_t          code = tjsonGetBoolValue(pJson, jkCreateTSMAStmtIgnoreExists, &pNode->ignoreExists);
×
9314
  if (TSDB_CODE_SUCCESS == code) {
×
9315
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtTsmaName, pNode->tsmaName);
×
9316
  }
9317
  if (TSDB_CODE_SUCCESS == code) {
×
9318
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtDbName, pNode->dbName);
×
9319
  }
9320
  if (TSDB_CODE_SUCCESS == code) {
×
9321
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtTableName, pNode->tableName);
×
9322
  }
9323
  if (TSDB_CODE_SUCCESS == code) {
×
9324
    code = jsonToNodeObject(pJson, jkCreateTSMAStmtpOptions, (SNode**)&pNode->pOptions);
×
9325
  }
9326
  return code;
×
9327
}
9328

9329
static const char* jkDropTSMAStmtIgnoreNotExists = "IgnoreNotExists";
9330
static const char* jkDropTSMAStmtDbName = "DbName";
9331
static const char* jkDropTSMAStmtTsmaName = "TSMAName";
9332

9333
static int32_t dropTSMAStmtToJson(const void* pObj, SJson* pJson) {
×
9334
  const SDropTSMAStmt* pNode = (const SDropTSMAStmt*)pObj;
×
9335
  int32_t              code = tjsonAddBoolToObject(pJson, jkDropTSMAStmtIgnoreNotExists, pNode->ignoreNotExists);
×
9336
  if (TSDB_CODE_SUCCESS == code) {
×
9337
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtDbName, pNode->dbName);
×
9338
  }
9339
  if (TSDB_CODE_SUCCESS == code) {
×
9340
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName);
×
9341
  }
9342
  return code;
×
9343
}
9344

9345
static int32_t jsonToDropTSMAStmt(const SJson* pJson, void* pObj) {
×
9346
  SDropTSMAStmt* pNode = (SDropTSMAStmt*)pObj;
×
9347
  int32_t        code = tjsonGetBoolValue(pJson, jkDropTSMAStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
9348
  if (TSDB_CODE_SUCCESS == code) {
×
9349
    code = tjsonGetStringValue(pJson, jkDropTSMAStmtDbName, pNode->dbName);
×
9350
  }
9351
  if (TSDB_CODE_SUCCESS == code) {
×
9352
    code = tjsonGetStringValue(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName);
×
9353
  }
9354
  return code;
×
9355
}
9356

9357
static int32_t specificNodeToJson(const void* pObj, SJson* pJson) {
40,026,138✔
9358
  switch (nodeType(pObj)) {
40,026,138!
9359
    case QUERY_NODE_COLUMN:
1,590,898✔
9360
      return columnNodeToJson(pObj, pJson);
1,590,898✔
9361
    case QUERY_NODE_VALUE:
715,013✔
9362
      return valueNodeToJson(pObj, pJson);
715,013✔
9363
    case QUERY_NODE_OPERATOR:
38,318✔
9364
      return operatorNodeToJson(pObj, pJson);
38,318✔
9365
    case QUERY_NODE_LOGIC_CONDITION:
6,679✔
9366
      return logicConditionNodeToJson(pObj, pJson);
6,679✔
9367
    case QUERY_NODE_FUNCTION:
458,014✔
9368
      return functionNodeToJson(pObj, pJson);
458,014✔
9369
    case QUERY_NODE_REAL_TABLE:
9,206✔
9370
      return realTableNodeToJson(pObj, pJson);
9,206✔
9371
    case QUERY_NODE_TEMP_TABLE:
531✔
9372
      return tempTableNodeToJson(pObj, pJson);
531✔
9373
    case QUERY_NODE_JOIN_TABLE:
222✔
9374
      return joinTableNodeToJson(pObj, pJson);
222✔
9375
    case QUERY_NODE_VIRTUAL_TABLE:
×
9376
      return virtualTableNodeToJson(pObj, pJson);
×
9377
    case QUERY_NODE_PLACE_HOLDER_TABLE:
15✔
9378
      return placeHolderTableNodeToJson(pObj, pJson);
15✔
9379
    case QUERY_NODE_SLIDING_WINDOW :
×
9380
      return slidingWindowNodeToJson(pObj, pJson);
×
9381
    case QUERY_NODE_PERIOD_WINDOW:
183✔
9382
      return periodWindowNodeToJson(pObj, pJson);
183✔
9383
    case QUERY_NODE_STREAM_TRIGGER:
1,878✔
9384
      return streamTriggerNodeToJson(pObj, pJson);
1,878✔
9385
    case QUERY_NODE_STREAM:
×
9386
      return streamNodeToJson(pObj, pJson);
×
9387
    case QUERY_NODE_STREAM_TAG_DEF:
447✔
9388
      return streamTagDefNodeToJson(pObj, pJson);
447✔
9389
    case QUERY_NODE_EXTERNAL_WINDOW:
×
9390
      return externalWindowNodeToJson(pObj, pJson);
×
9391
    case QUERY_NODE_GROUPING_SET:
1,989✔
9392
      return groupingSetNodeToJson(pObj, pJson);
1,989✔
9393
    case QUERY_NODE_ORDER_BY_EXPR:
8,912✔
9394
      return orderByExprNodeToJson(pObj, pJson);
8,912✔
9395
    case QUERY_NODE_LIMIT:
15,222✔
9396
      return limitNodeToJson(pObj, pJson);
15,222✔
9397
    case QUERY_NODE_STATE_WINDOW:
171✔
9398
      return stateWindowNodeToJson(pObj, pJson);
171✔
9399
    case QUERY_NODE_SESSION_WINDOW:
111✔
9400
      return sessionWindowNodeToJson(pObj, pJson);
111✔
9401
    case QUERY_NODE_INTERVAL_WINDOW:
2,061✔
9402
      return intervalWindowNodeToJson(pObj, pJson);
2,061✔
9403
    case QUERY_NODE_NODE_LIST:
8,200,389✔
9404
      return nodeListNodeToJson(pObj, pJson);
8,200,389✔
9405
    case QUERY_NODE_FILL:
114✔
9406
      return fillNodeToJson(pObj, pJson);
114✔
9407
    case QUERY_NODE_RAW_EXPR:
×
9408
      break;
×
9409
    case QUERY_NODE_TARGET:
1,163,632✔
9410
      return targetNodeToJson(pObj, pJson);
1,163,632✔
9411
    case QUERY_NODE_DATABLOCK_DESC:
694,905✔
9412
      return dataBlockDescNodeToJson(pObj, pJson);
694,905✔
9413
    case QUERY_NODE_SLOT_DESC:
1,933,834✔
9414
      return slotDescNodeToJson(pObj, pJson);
1,933,834✔
9415
    case QUERY_NODE_COLUMN_DEF:
41,121✔
9416
      return columnDefNodeToJson(pObj, pJson);
41,121✔
9417
    case QUERY_NODE_DOWNSTREAM_SOURCE:
1,064✔
9418
      return downstreamSourceNodeToJson(pObj, pJson);
1,064✔
9419
    case QUERY_NODE_DATABASE_OPTIONS:
1,260✔
9420
      return databaseOptionsToJson(pObj, pJson);
1,260✔
9421
    case QUERY_NODE_TABLE_OPTIONS:
234✔
9422
      return tableOptionsToJson(pObj, pJson);
234✔
9423
    case QUERY_NODE_COLUMN_OPTIONS:
37,998✔
9424
      return columnOptionsToJson(pObj, pJson);
37,998✔
9425
    case QUERY_NODE_INDEX_OPTIONS:
×
9426
      return indexOptionsToJson(pObj, pJson);
×
9427
    case QUERY_NODE_EXPLAIN_OPTIONS:
90✔
9428
      return explainOptionsToJson(pObj, pJson);
90✔
9429
    case QUERY_NODE_STREAM_TRIGGER_OPTIONS:
468✔
9430
      return streamOptionsToJson(pObj, pJson);
468✔
9431
    case QUERY_NODE_LEFT_VALUE:
522✔
9432
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to serialize.
522✔
9433
    case QUERY_NODE_COLUMN_REF:
×
9434
      return columnReferenceToJson(pObj, pJson);
×
9435
    case QUERY_NODE_WHEN_THEN:
287✔
9436
      return whenThenNodeToJson(pObj, pJson);
287✔
9437
    case QUERY_NODE_CASE_WHEN:
209✔
9438
      return caseWhenNodeToJson(pObj, pJson);
209✔
9439
    case QUERY_NODE_EVENT_WINDOW:
78✔
9440
      return eventWindowNodeToJson(pObj, pJson);
78✔
9441
    case QUERY_NODE_WINDOW_OFFSET:
6✔
9442
      return windowOffsetNodeToJson(pObj, pJson);
6✔
9443
    case QUERY_NODE_COUNT_WINDOW:
114✔
9444
      return countWindowNodeToJson(pObj, pJson);
114✔
9445
    case QUERY_NODE_ANOMALY_WINDOW:
×
9446
      return anomalyWindowNodeToJson(pObj, pJson);
×
9447
    case QUERY_NODE_STREAM_NOTIFY_OPTIONS:
84✔
9448
      return streamNotifyOptionsToJson(pObj, pJson);
84✔
9449
    case QUERY_NODE_SET_OPERATOR:
192✔
9450
      return setOperatorToJson(pObj, pJson);
192✔
9451
    case QUERY_NODE_TIME_RANGE:
1,898✔
9452
      return timeRangeNodeToJson(pObj, pJson);
1,898✔
9453
    case QUERY_NODE_SELECT_STMT:
7,709✔
9454
      return selectStmtToJson(pObj, pJson);
7,709✔
9455
    case QUERY_NODE_VNODE_MODIFY_STMT:
360✔
9456
      return vnodeModifyStmtToJson(pObj, pJson);
360✔
9457
    case QUERY_NODE_CREATE_DATABASE_STMT:
162✔
9458
      return createDatabaseStmtToJson(pObj, pJson);
162✔
9459
    case QUERY_NODE_ALTER_DATABASE_STMT:
1,098✔
9460
      return alterDatabaseStmtToJson(pObj, pJson);
1,098✔
9461
    case QUERY_NODE_TRIM_DATABASE_STMT:
54✔
9462
      return trimDatabaseStmtToJson(pObj, pJson);
54✔
9463
    case QUERY_NODE_SSMIGRATE_DATABASE_STMT:
×
9464
      return ssMigrateDatabaseStmtToJson(pObj, pJson);
×
9465
    case QUERY_NODE_CREATE_TABLE_STMT:
135✔
9466
      return createTableStmtToJson(pObj, pJson);
135✔
9467
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
45✔
9468
      return createSubTableClauseToJson(pObj, pJson);
45✔
9469
    case QUERY_NODE_CREATE_VIRTUAL_TABLE_STMT:
×
9470
      return createVTableStmtToJson(pObj, pJson);
×
9471
    case QUERY_NODE_CREATE_VIRTUAL_SUBTABLE_STMT:
×
9472
      return createVSubTableStmtToJson(pObj, pJson);
×
9473
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
27✔
9474
      return createMultiTablesStmtToJson(pObj, pJson);
27✔
9475
    case QUERY_NODE_DROP_TABLE_CLAUSE:
36✔
9476
      return dropTableClauseToJson(pObj, pJson);
36✔
9477
    case QUERY_NODE_DROP_TABLE_STMT:
18✔
9478
      return dropTableStmtToJson(pObj, pJson);
18✔
9479
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
27✔
9480
      return dropStableStmtToJson(pObj, pJson);
27✔
9481
    case QUERY_NODE_DROP_VIRTUAL_TABLE_STMT:
×
9482
      return dropVtableStmtToJson(pObj, pJson);
×
9483
    case QUERY_NODE_ALTER_TABLE_STMT:
225✔
9484
      return alterTableStmtToJson(pObj, pJson);
225✔
9485
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
261✔
9486
      return alterStableStmtToJson(pObj, pJson);
261✔
9487
    case QUERY_NODE_CREATE_USER_STMT:
54✔
9488
      return createUserStmtToJson(pObj, pJson);
54✔
9489
    case QUERY_NODE_ALTER_USER_STMT:
81✔
9490
      return alterUserStmtToJson(pObj, pJson);
81✔
9491
    case QUERY_NODE_DROP_USER_STMT:
27✔
9492
      return dropUserStmtToJson(pObj, pJson);
27✔
9493
    case QUERY_NODE_USE_DATABASE_STMT:
27✔
9494
      return useDatabaseStmtToJson(pObj, pJson);
27✔
9495
    case QUERY_NODE_CREATE_DNODE_STMT:
162✔
9496
      return createDnodeStmtToJson(pObj, pJson);
162✔
9497
    case QUERY_NODE_DROP_DNODE_STMT:
243✔
9498
      return dropDnodeStmtToJson(pObj, pJson);
243✔
9499
    case QUERY_NODE_ALTER_DNODE_STMT:
108✔
9500
      return alterDnodeStmtToJson(pObj, pJson);
108✔
9501
    case QUERY_NODE_CREATE_INDEX_STMT:
×
9502
      return createIndexStmtToJson(pObj, pJson);
×
9503
    case QUERY_NODE_DROP_INDEX_STMT:
54✔
9504
      return dropIndexStmtToJson(pObj, pJson);
54✔
9505
    case QUERY_NODE_CREATE_QNODE_STMT:
27✔
9506
      return createQnodeStmtToJson(pObj, pJson);
27✔
9507
    case QUERY_NODE_DROP_QNODE_STMT:
27✔
9508
      return dropQnodeStmtToJson(pObj, pJson);
27✔
9509
    case QUERY_NODE_CREATE_ANODE_STMT:
×
9510
      return createAnodeStmtToJson(pObj, pJson);
×
9511
    case QUERY_NODE_DROP_ANODE_STMT:
×
9512
      return dropAnodeStmtToJson(pObj, pJson);
×
9513
    case QUERY_NODE_UPDATE_ANODE_STMT:
×
9514
      return updateAnodeStmtToJson(pObj, pJson);
×
9515
    case QUERY_NODE_CREATE_BNODE_STMT:
×
9516
      return createBnodeStmtToJson(pObj, pJson);
×
9517
    case QUERY_NODE_DROP_BNODE_STMT:
×
9518
      return dropBnodeStmtToJson(pObj, pJson);
×
9519
    case QUERY_NODE_CREATE_SNODE_STMT:
27✔
9520
      return createSnodeStmtToJson(pObj, pJson);
27✔
9521
    case QUERY_NODE_DROP_SNODE_STMT:
27✔
9522
      return dropSnodeStmtToJson(pObj, pJson);
27✔
9523
    case QUERY_NODE_CREATE_MNODE_STMT:
27✔
9524
      return createMnodeStmtToJson(pObj, pJson);
27✔
9525
    case QUERY_NODE_DROP_MNODE_STMT:
27✔
9526
      return dropMnodeStmtToJson(pObj, pJson);
27✔
9527
    case QUERY_NODE_CREATE_TOPIC_STMT:
219✔
9528
      return createTopicStmtToJson(pObj, pJson);
219✔
9529
    case QUERY_NODE_DROP_TOPIC_STMT:
54✔
9530
      return dropTopicStmtToJson(pObj, pJson);
54✔
9531
    case QUERY_NODE_DROP_CGROUP_STMT:
54✔
9532
      return dropConsumerGroupStmtToJson(pObj, pJson);
54✔
9533
    case QUERY_NODE_ALTER_LOCAL_STMT:
54✔
9534
      return alterLocalStmtToJson(pObj, pJson);
54✔
9535
    case QUERY_NODE_EXPLAIN_STMT:
90✔
9536
      return explainStmtToJson(pObj, pJson);
90✔
9537
    case QUERY_NODE_DESCRIBE_STMT:
54✔
9538
      return describeStmtToJson(pObj, pJson);
54✔
9539
    case QUERY_NODE_COMPACT_DATABASE_STMT:
108✔
9540
      return compactDatabaseStmtToJson(pObj, pJson);
108✔
9541
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
×
9542
      return compactVgroupsStmtToJson(pObj, pJson);
×
9543
    case QUERY_NODE_CREATE_STREAM_STMT:
1,878✔
9544
      return createStreamStmtToJson(pObj, pJson);
1,878✔
9545
    case QUERY_NODE_DROP_STREAM_STMT:
×
9546
      return dropStreamStmtToJson(pObj, pJson);
×
9547
    case QUERY_NODE_BALANCE_VGROUP_STMT:
27✔
9548
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to serialize.
27✔
9549
    case QUERY_NODE_ASSIGN_LEADER_STMT:
×
9550
      return TSDB_CODE_SUCCESS;
×
9551
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
27✔
9552
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupLeaderStmt has no fields to serialize.
27✔
9553
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
9554
      return TSDB_CODE_SUCCESS;
×
9555
    case QUERY_NODE_MERGE_VGROUP_STMT:
27✔
9556
      return mergeVgroupStmtToJson(pObj, pJson);
27✔
9557
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
54✔
9558
      return redistributeVgroupStmtToJson(pObj, pJson);
54✔
9559
    case QUERY_NODE_SPLIT_VGROUP_STMT:
27✔
9560
      return splitVgroupStmtToJson(pObj, pJson);
27✔
9561
    case QUERY_NODE_GRANT_STMT:
162✔
9562
      return grantStmtToJson(pObj, pJson);
162✔
9563
    case QUERY_NODE_REVOKE_STMT:
162✔
9564
      return revokeStmtToJson(pObj, pJson);
162✔
9565
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
9566
      return alterClusterStmtToJson(pObj, pJson);
×
9567
    case QUERY_NODE_CREATE_MOUNT_STMT:
×
9568
      return createDatabaseStmtToJson(pObj, pJson);
×
9569
    case QUERY_NODE_DROP_MOUNT_STMT:
×
9570
      return createDatabaseStmtToJson(pObj, pJson);
×
9571
    case QUERY_NODE_SHOW_DNODES_STMT:
9✔
9572
      return showDnodesStmtToJson(pObj, pJson);
9✔
9573
    case QUERY_NODE_SHOW_MNODES_STMT:
9✔
9574
      return showMnodesStmtToJson(pObj, pJson);
9✔
9575
    case QUERY_NODE_SHOW_QNODES_STMT:
9✔
9576
      return showQnodesStmtToJson(pObj, pJson);
9✔
9577
    case QUERY_NODE_SHOW_ANODES_STMT:
×
9578
      return showAnodesStmtToJson(pObj, pJson);
×
9579
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
9580
      return showAnodesFullStmtToJson(pObj, pJson);
×
9581
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
9582
      return showArbGroupsStmtToJson(pObj, pJson);
×
9583
    case QUERY_NODE_SHOW_CLUSTER_STMT:
9✔
9584
      return showClusterStmtToJson(pObj, pJson);
9✔
9585
    case QUERY_NODE_SHOW_DATABASES_STMT:
9✔
9586
      return showDatabasesStmtToJson(pObj, pJson);
9✔
9587
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
9✔
9588
      return showFunctionsStmtToJson(pObj, pJson);
9✔
9589
    case QUERY_NODE_SHOW_INDEXES_STMT:
18✔
9590
      return showIndexesStmtToJson(pObj, pJson);
18✔
9591
    case QUERY_NODE_SHOW_STABLES_STMT:
36✔
9592
      return showStablesStmtToJson(pObj, pJson);
36✔
9593
    case QUERY_NODE_SHOW_STREAMS_STMT:
9✔
9594
      return showStreamsStmtToJson(pObj, pJson);
9✔
9595
    case QUERY_NODE_SHOW_TABLES_STMT:
36✔
9596
    case QUERY_NODE_SHOW_VTABLES_STMT:
9597
      return showTablesStmtToJson(pObj, pJson);
36✔
9598
    case QUERY_NODE_SHOW_TAGS_STMT:
9✔
9599
      return showTagsStmtToJson(pObj, pJson);
9✔
9600
    case QUERY_NODE_SHOW_USERS_STMT:
9✔
9601
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
9602
      return showUsersStmtToJson(pObj, pJson);
9✔
9603
    case QUERY_NODE_SHOW_VGROUPS_STMT:
18✔
9604
      return showVgroupsStmtToJson(pObj, pJson);
18✔
9605
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
9✔
9606
      return showConsumersStmtToJson(pObj, pJson);
9✔
9607
    case QUERY_NODE_SHOW_VARIABLES_STMT:
27✔
9608
      return showVariablesStmtToJson(pObj, pJson);
27✔
9609
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
9610
      return showGrantsFullStmtToJson(pObj, pJson);
×
9611
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
9612
      return showGrantsLogsStmtToJson(pObj, pJson);
×
9613
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
9614
      return showClusterMachinesStmtToJson(pObj, pJson);
×
9615
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
9616
      return showEncryptionsStmtToJson(pObj, pJson);
×
9617
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
18✔
9618
      return showDnodeVariablesStmtToJson(pObj, pJson);
18✔
9619
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
9✔
9620
      return showTransactionsStmtToJson(pObj, pJson);
9✔
9621
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
9✔
9622
      return showSubscriptionsStmtToJson(pObj, pJson);
9✔
9623
    case QUERY_NODE_SHOW_VNODES_STMT:
18✔
9624
      return showVnodesStmtToJson(pObj, pJson);
18✔
9625
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
9✔
9626
      return showUserPrivilegesStmtToJson(pObj, pJson);
9✔
9627
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
27✔
9628
      return showCreateDatabaseStmtToJson(pObj, pJson);
27✔
9629
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
27✔
9630
    case QUERY_NODE_SHOW_CREATE_VTABLE_STMT:
9631
      return showCreateTableStmtToJson(pObj, pJson);
27✔
9632
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
27✔
9633
      return showCreateStableStmtToJson(pObj, pJson);
27✔
9634
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
9635
      return showCreateViewStmtToJson(pObj, pJson);
×
9636
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
9✔
9637
      return showTableDistributedStmtToJson(pObj, pJson);
9✔
9638
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
27✔
9639
      return showLocalVariablesStmtToJson(pObj, pJson);
27✔
9640
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
27✔
9641
      return showTableTagsStmtToJson(pObj, pJson);
27✔
9642
    case QUERY_NODE_SHOW_USAGE_STMT:
×
9643
      return showUsageStmtStmtToJson(pObj, pJson);
×
9644
    case QUERY_NODE_SHOW_MOUNTS_STMT:
×
9645
      return showMountsStmtToJson(pObj, pJson);
×
9646
    case QUERY_NODE_DELETE_STMT:
129✔
9647
      return deleteStmtToJson(pObj, pJson);
129✔
9648
    case QUERY_NODE_INSERT_STMT:
36✔
9649
      return insertStmtToJson(pObj, pJson);
36✔
9650
    case QUERY_NODE_LOGIC_PLAN_SCAN:
8,895✔
9651
      return logicScanNodeToJson(pObj, pJson);
8,895✔
9652
    case QUERY_NODE_LOGIC_PLAN_JOIN:
375✔
9653
      return logicJoinNodeToJson(pObj, pJson);
375✔
9654
    case QUERY_NODE_LOGIC_PLAN_VIRTUAL_TABLE_SCAN:
×
9655
      return logicVirtualTableScanNodeToJson(pObj, pJson);
×
9656
    case QUERY_NODE_LOGIC_PLAN_AGG:
3,564✔
9657
      return logicAggNodeToJson(pObj, pJson);
3,564✔
9658
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
6,054✔
9659
      return logicProjectNodeToJson(pObj, pJson);
6,054✔
9660
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
165✔
9661
      return logicVnodeModifyNodeToJson(pObj, pJson);
165✔
9662
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
936✔
9663
      return logicExchangeNodeToJson(pObj, pJson);
936✔
9664
    case QUERY_NODE_LOGIC_PLAN_MERGE:
345✔
9665
      return logicMergeNodeToJson(pObj, pJson);
345✔
9666
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
1,221✔
9667
      return logicWindowNodeToJson(pObj, pJson);
1,221✔
9668
    case QUERY_NODE_LOGIC_PLAN_FILL:
288✔
9669
      return logicFillNodeToJson(pObj, pJson);
288✔
9670
    case QUERY_NODE_LOGIC_PLAN_SORT:
1,050✔
9671
      return logicSortNodeToJson(pObj, pJson);
1,050✔
9672
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
618✔
9673
      return logicPartitionNodeToJson(pObj, pJson);
618✔
9674
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
429✔
9675
      return logicIndefRowsFuncNodeToJson(pObj, pJson);
429✔
9676
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
99✔
9677
      return logicInterpFuncNodeToJson(pObj, pJson);
99✔
9678
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
9679
      return logicForecastFuncNodeToJson(pObj, pJson);
×
9680
    case QUERY_NODE_LOGIC_PLAN_IMPUTATION_FUNC:
×
9681
      return logicImputationFuncNodeToJson(pObj, pJson);
×
9682
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
9683
      return logicGroupCacheNodeToJson(pObj, pJson);
×
9684
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
9685
      return logicDynQueryCtrlNodeToJson(pObj, pJson);
×
9686
    case QUERY_NODE_LOGIC_SUBPLAN:
9,219✔
9687
      return logicSubplanToJson(pObj, pJson);
9,219✔
9688
    case QUERY_NODE_LOGIC_PLAN:
825✔
9689
      return logicPlanToJson(pObj, pJson);
825✔
9690
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
446✔
9691
      return physiTagScanNodeToJson(pObj, pJson);
446✔
9692
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
24✔
9693
      return physiScanNodeToJson(pObj, pJson);
24✔
9694
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
837✔
9695
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
9696
      return physiLastRowScanNodeToJson(pObj, pJson);
837✔
9697
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
210,220✔
9698
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
9699
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
9700
      return physiTableScanNodeToJson(pObj, pJson);
210,220✔
9701
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
2,757✔
9702
      return physiVirtualTableScanNodeToJson(pObj, pJson);
2,757✔
9703
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
4,817✔
9704
      return physiSysTableScanNodeToJson(pObj, pJson);
4,817✔
9705
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
23,135✔
9706
      return physiProjectNodeToJson(pObj, pJson);
23,135✔
9707
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
2,815✔
9708
      return physiMergeJoinNodeToJson(pObj, pJson);
2,815✔
9709
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
9710
      return physiHashJoinNodeToJson(pObj, pJson);
×
9711
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
179,039✔
9712
      return physiAggNodeToJson(pObj, pJson);
179,039✔
9713
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
29,277✔
9714
      return physiExchangeNodeToJson(pObj, pJson);
29,277✔
9715
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
2,401✔
9716
      return physiMergeNodeToJson(pObj, pJson);
2,401✔
9717
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
3,338✔
9718
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
9719
      return physiSortNodeToJson(pObj, pJson);
3,338✔
9720
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
4,486✔
9721
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
9722
      return physiIntervalNodeToJson(pObj, pJson);
4,486✔
9723
    case QUERY_NODE_PHYSICAL_PLAN_EXTERNAL_WINDOW:
606✔
9724
    case QUERY_NODE_PHYSICAL_PLAN_HASH_EXTERNAL:
9725
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_EXTERNAL:
9726
      return physiExternalNodeToJson(pObj, pJson);
606✔
9727
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
143✔
9728
      return physiFillNodeToJson(pObj, pJson);
143✔
9729
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
113✔
9730
      return physiSessionWindowNodeToJson(pObj, pJson);
113✔
9731
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
102✔
9732
      return physiStateWindowNodeToJson(pObj, pJson);
102✔
9733
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
86✔
9734
      return physiEventWindowNodeToJson(pObj, pJson);
86✔
9735
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
72✔
9736
      return physiCountWindowNodeToJson(pObj, pJson);
72✔
9737
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
9738
      return physiAnomalyWindowNodeToJson(pObj, pJson);
×
9739
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
270✔
9740
      return physiPartitionNodeToJson(pObj, pJson);
270✔
9741
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
220✔
9742
      return physiIndefRowsFuncNodeToJson(pObj, pJson);
220✔
9743
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
343✔
9744
      return physiInterpFuncNodeToJson(pObj, pJson);
343✔
9745
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
9746
      return physiForecastFuncNodeToJson(pObj, pJson);
×
9747
    case QUERY_NODE_PHYSICAL_PLAN_IMPUTATION_FUNC:
×
9748
      return physiForecastFuncNodeToJson(pObj, pJson);
×
9749
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
175,756✔
9750
      return physiDispatchNodeToJson(pObj, pJson);
175,756✔
9751
    case QUERY_NODE_PHYSICAL_PLAN_INSERT:
8,044,955✔
9752
      break;
8,044,955✔
9753
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
28✔
9754
      return physiQueryInsertNodeToJson(pObj, pJson);
28✔
9755
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
53,450✔
9756
      return physiDeleteNodeToJson(pObj, pJson);
53,450✔
9757
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
9758
      return physiGroupCacheNodeToJson(pObj, pJson);
×
9759
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
116✔
9760
      return physiDynQueryCtrlNodeToJson(pObj, pJson);
116✔
9761
    case QUERY_NODE_PHYSICAL_SUBPLAN:
8,262,587✔
9762
      return subplanToJson(pObj, pJson);
8,262,587✔
9763
    case QUERY_NODE_PHYSICAL_PLAN:
8,158,269✔
9764
      return planToJson(pObj, pJson);
8,158,269✔
9765
    default:
×
9766
      break;
×
9767
  }
9768
  nodesWarn("specificNodeToJson unknown node = %s", nodesNodeName(nodeType(pObj)));
7,933,264!
9769
  return TSDB_CODE_SUCCESS;
8,069,902✔
9770
}
9771

9772
static int32_t jsonToSpecificNode(const SJson* pJson, void* pObj) {
906,761✔
9773
  switch (nodeType(pObj)) {
906,761!
9774
    case QUERY_NODE_COLUMN:
201,634✔
9775
      return jsonToColumnNode(pJson, pObj);
201,634✔
9776
    case QUERY_NODE_VALUE:
68,107✔
9777
      return jsonToValueNode(pJson, pObj);
68,107✔
9778
    case QUERY_NODE_OPERATOR:
40,736✔
9779
      return jsonToOperatorNode(pJson, pObj);
40,736✔
9780
    case QUERY_NODE_LOGIC_CONDITION:
8,045✔
9781
      return jsonToLogicConditionNode(pJson, pObj);
8,045✔
9782
    case QUERY_NODE_FUNCTION:
42,200✔
9783
      return jsonToFunctionNode(pJson, pObj);
42,200✔
9784
    case QUERY_NODE_REAL_TABLE:
8,608✔
9785
      return jsonToRealTableNode(pJson, pObj);
8,608✔
9786
    case QUERY_NODE_TEMP_TABLE:
532✔
9787
      return jsonToTempTableNode(pJson, pObj);
532✔
9788
    case QUERY_NODE_JOIN_TABLE:
222✔
9789
      return jsonToJoinTableNode(pJson, pObj);
222✔
9790
    case QUERY_NODE_VIRTUAL_TABLE:
×
9791
      return jsonToVirtualTableNode(pJson, pObj);
×
9792
    case QUERY_NODE_PLACE_HOLDER_TABLE:
×
9793
      return jsonToPlaceHolderTableNode(pJson, pObj);
×
9794
    case QUERY_NODE_SLIDING_WINDOW :
×
9795
      return jsonToSlidingWindowNode(pJson, pObj);
×
9796
    case QUERY_NODE_PERIOD_WINDOW:
183✔
9797
      return jsonToPeriodWindowNode(pJson, pObj);
183✔
9798
    case QUERY_NODE_STREAM_TRIGGER:
1,878✔
9799
      return jsonToStreamTriggerNode(pJson, pObj);
1,878✔
9800
    case QUERY_NODE_STREAM:
×
9801
      return jsonToStreamNode(pJson, pObj);
×
9802
    case QUERY_NODE_STREAM_TAG_DEF:
447✔
9803
      return jsonToStreamTagDefNode(pJson, pObj);
447✔
9804
    case QUERY_NODE_EXTERNAL_WINDOW:
×
9805
      return jsonToExternalWindowNode(pJson, pObj);
×
9806
    case QUERY_NODE_GROUPING_SET:
1,257✔
9807
      return jsonToGroupingSetNode(pJson, pObj);
1,257✔
9808
    case QUERY_NODE_ORDER_BY_EXPR:
2,121✔
9809
      return jsonToOrderByExprNode(pJson, pObj);
2,121✔
9810
    case QUERY_NODE_LIMIT:
699✔
9811
      return jsonToLimitNode(pJson, pObj);
699✔
9812
    case QUERY_NODE_STATE_WINDOW:
171✔
9813
      return jsonToStateWindowNode(pJson, pObj);
171✔
9814
    case QUERY_NODE_SESSION_WINDOW:
111✔
9815
      return jsonToSessionWindowNode(pJson, pObj);
111✔
9816
    case QUERY_NODE_INTERVAL_WINDOW:
2,061✔
9817
      return jsonToIntervalWindowNode(pJson, pObj);
2,061✔
9818
    case QUERY_NODE_NODE_LIST:
2,675✔
9819
      return jsonToNodeListNode(pJson, pObj);
2,675✔
9820
    case QUERY_NODE_FILL:
114✔
9821
      return jsonToFillNode(pJson, pObj);
114✔
9822
    case QUERY_NODE_TARGET:
103,955✔
9823
      return jsonToTargetNode(pJson, pObj);
103,955✔
9824
    case QUERY_NODE_DATABLOCK_DESC:
51,850✔
9825
      return jsonToDataBlockDescNode(pJson, pObj);
51,850✔
9826
    case QUERY_NODE_SLOT_DESC:
168,094✔
9827
      return jsonToSlotDescNode(pJson, pObj);
168,094✔
9828
    case QUERY_NODE_COLUMN_DEF:
41,121✔
9829
      return jsonToColumnDefNode(pJson, pObj);
41,121✔
9830
    case QUERY_NODE_DOWNSTREAM_SOURCE:
874✔
9831
      return jsonToDownstreamSourceNode(pJson, pObj);
874✔
9832
    case QUERY_NODE_DATABASE_OPTIONS:
1,260✔
9833
      return jsonToDatabaseOptions(pJson, pObj);
1,260✔
9834
    case QUERY_NODE_TABLE_OPTIONS:
288✔
9835
      return jsonToTableOptions(pJson, pObj);
288✔
9836
    case QUERY_NODE_COLUMN_OPTIONS:
37,998✔
9837
      return jsonToColumnOptions(pJson, pObj);
37,998✔
9838
    case QUERY_NODE_INDEX_OPTIONS:
×
9839
      return jsonToIndexOptions(pJson, pObj);
×
9840
    case QUERY_NODE_EXPLAIN_OPTIONS:
90✔
9841
      return jsonToExplainOptions(pJson, pObj);
90✔
9842
    case QUERY_NODE_STREAM_TRIGGER_OPTIONS:
468✔
9843
      return jsonToStreamOptions(pJson, pObj);
468✔
9844
    case QUERY_NODE_LEFT_VALUE:
51✔
9845
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to deserialize.
51✔
9846
    case QUERY_NODE_COLUMN_REF:
×
9847
      return jsonToColumnReference(pJson, pObj);
×
9848
    case QUERY_NODE_WHEN_THEN:
165✔
9849
      return jsonToWhenThenNode(pJson, pObj);
165✔
9850
    case QUERY_NODE_CASE_WHEN:
117✔
9851
      return jsonToCaseWhenNode(pJson, pObj);
117✔
9852
    case QUERY_NODE_EVENT_WINDOW:
78✔
9853
      return jsonToEventWindowNode(pJson, pObj);
78✔
9854
    case QUERY_NODE_WINDOW_OFFSET:
×
9855
      return jsonToWindowOffsetNode(pJson, pObj);
×
9856
    case QUERY_NODE_COUNT_WINDOW:
114✔
9857
      return jsonToCountWindowNode(pJson, pObj);
114✔
9858
    case QUERY_NODE_ANOMALY_WINDOW:
×
9859
      return jsonToAnomalyWindowNode(pJson, pObj);
×
9860
    case QUERY_NODE_STREAM_NOTIFY_OPTIONS:
84✔
9861
      return jsonToStreamNotifyOptions(pJson, pObj);
84✔
9862
    case QUERY_NODE_SET_OPERATOR:
192✔
9863
      return jsonToSetOperator(pJson, pObj);
192✔
9864
    case QUERY_NODE_TIME_RANGE:
12,463✔
9865
      return jsonToTimeRangeNode(pJson, pObj);
12,463✔
9866
    case QUERY_NODE_SELECT_STMT:
7,097✔
9867
      return jsonToSelectStmt(pJson, pObj);
7,097✔
9868
    case QUERY_NODE_VNODE_MODIFY_STMT:
360✔
9869
      return jsonToVnodeModifyStmt(pJson, pObj);
360✔
9870
    case QUERY_NODE_CREATE_DATABASE_STMT:
162✔
9871
      return jsonToCreateDatabaseStmt(pJson, pObj);
162✔
9872
    case QUERY_NODE_ALTER_DATABASE_STMT:
1,098✔
9873
      return jsonToAlterDatabaseStmt(pJson, pObj);
1,098✔
9874
    case QUERY_NODE_TRIM_DATABASE_STMT:
54✔
9875
      return jsonToTrimDatabaseStmt(pJson, pObj);
54✔
9876
    case QUERY_NODE_SSMIGRATE_DATABASE_STMT:
×
9877
      return jsonToSsMigrateDatabaseStmt(pJson, pObj);
×
9878
    case QUERY_NODE_CREATE_TABLE_STMT:
135✔
9879
      return jsonToCreateTableStmt(pJson, pObj);
135✔
9880
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
45✔
9881
      return jsonToCreateSubTableClause(pJson, pObj);
45✔
9882
    case QUERY_NODE_CREATE_VIRTUAL_TABLE_STMT:
×
9883
      return jsonToCreateVTableStmt(pJson, pObj);
×
9884
    case QUERY_NODE_CREATE_VIRTUAL_SUBTABLE_STMT:
×
9885
      return jsonToCreateVSubTableStmt(pJson, pObj);
×
9886
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
27✔
9887
      return jsonToCreateMultiTablesStmt(pJson, pObj);
27✔
9888
    case QUERY_NODE_DROP_TABLE_CLAUSE:
36✔
9889
      return jsonToDropTableClause(pJson, pObj);
36✔
9890
    case QUERY_NODE_DROP_TABLE_STMT:
18✔
9891
      return jsonToDropTableStmt(pJson, pObj);
18✔
9892
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
27✔
9893
      return jsonToDropStableStmt(pJson, pObj);
27✔
9894
    case QUERY_NODE_DROP_VIRTUAL_TABLE_STMT:
×
9895
      return jsonToDropVtableStmt(pJson, pObj);
×
9896
    case QUERY_NODE_ALTER_TABLE_STMT:
225✔
9897
      return jsonToAlterTableStmt(pJson, pObj);
225✔
9898
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
261✔
9899
      return jsonToAlterStableStmt(pJson, pObj);
261✔
9900
    case QUERY_NODE_CREATE_USER_STMT:
54✔
9901
      return jsonToCreateUserStmt(pJson, pObj);
54✔
9902
    case QUERY_NODE_ALTER_USER_STMT:
81✔
9903
      return jsonToAlterUserStmt(pJson, pObj);
81✔
9904
    case QUERY_NODE_DROP_USER_STMT:
27✔
9905
      return jsonToDropUserStmt(pJson, pObj);
27✔
9906
    case QUERY_NODE_USE_DATABASE_STMT:
27✔
9907
      return jsonToUseDatabaseStmt(pJson, pObj);
27✔
9908
    case QUERY_NODE_CREATE_DNODE_STMT:
162✔
9909
      return jsonToCreateDnodeStmt(pJson, pObj);
162✔
9910
    case QUERY_NODE_DROP_DNODE_STMT:
243✔
9911
      return jsonToDropDnodeStmt(pJson, pObj);
243✔
9912
    case QUERY_NODE_ALTER_DNODE_STMT:
108✔
9913
      return jsonToAlterDnodeStmt(pJson, pObj);
108✔
9914
    case QUERY_NODE_CREATE_INDEX_STMT:
×
9915
      return jsonToCreateIndexStmt(pJson, pObj);
×
9916
    case QUERY_NODE_DROP_INDEX_STMT:
54✔
9917
      return jsonToDropIndexStmt(pJson, pObj);
54✔
9918
    case QUERY_NODE_CREATE_QNODE_STMT:
27✔
9919
      return jsonToCreateQnodeStmt(pJson, pObj);
27✔
9920
    case QUERY_NODE_DROP_QNODE_STMT:
27✔
9921
      return jsonToDropQnodeStmt(pJson, pObj);
27✔
9922
    case QUERY_NODE_CREATE_SNODE_STMT:
27✔
9923
      return jsonToCreateSnodeStmt(pJson, pObj);
27✔
9924
    case QUERY_NODE_DROP_SNODE_STMT:
27✔
9925
      return jsonToDropSnodeStmt(pJson, pObj);
27✔
9926
    case QUERY_NODE_CREATE_MNODE_STMT:
27✔
9927
      return jsonToCreateMnodeStmt(pJson, pObj);
27✔
9928
    case QUERY_NODE_DROP_MNODE_STMT:
27✔
9929
      return jsonToDropMnodeStmt(pJson, pObj);
27✔
9930
    case QUERY_NODE_CREATE_TOPIC_STMT:
219✔
9931
      return jsonToCreateTopicStmt(pJson, pObj);
219✔
9932
    case QUERY_NODE_DROP_TOPIC_STMT:
54✔
9933
      return jsonToDropTopicStmt(pJson, pObj);
54✔
9934
    case QUERY_NODE_DROP_CGROUP_STMT:
54✔
9935
      return jsonToDropConsumerGroupStmt(pJson, pObj);
54✔
9936
    case QUERY_NODE_ALTER_LOCAL_STMT:
54✔
9937
      return jsonToAlterLocalStmt(pJson, pObj);
54✔
9938
    case QUERY_NODE_EXPLAIN_STMT:
90✔
9939
      return jsonToExplainStmt(pJson, pObj);
90✔
9940
    case QUERY_NODE_DESCRIBE_STMT:
54✔
9941
      return jsonToDescribeStmt(pJson, pObj);
54✔
9942
    case QUERY_NODE_COMPACT_DATABASE_STMT:
108✔
9943
      return jsonToCompactDatabaseStmt(pJson, pObj);
108✔
9944
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
×
9945
      return jsonToCompactVgroupsStmt(pJson, pObj);
×
9946
    case QUERY_NODE_CREATE_STREAM_STMT:
1,878✔
9947
      return jsonToCreateStreamStmt(pJson, pObj);
1,878✔
9948
    case QUERY_NODE_DROP_STREAM_STMT:
×
9949
      return jsonToDropStreamStmt(pJson, pObj);
×
9950
    case QUERY_NODE_BALANCE_VGROUP_STMT:
27✔
9951
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to deserialize.
27✔
9952
    case QUERY_NODE_ASSIGN_LEADER_STMT:
×
9953
      return TSDB_CODE_SUCCESS;
×
9954
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
27✔
9955
      return TSDB_CODE_SUCCESS;
27✔
9956
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
9957
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupLeaderStmt has no fields to deserialize.
×
9958
    case QUERY_NODE_MERGE_VGROUP_STMT:
27✔
9959
      return jsonToMergeVgroupStmt(pJson, pObj);
27✔
9960
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
54✔
9961
      return jsonToRedistributeVgroupStmt(pJson, pObj);
54✔
9962
    case QUERY_NODE_SPLIT_VGROUP_STMT:
27✔
9963
      return jsonToSplitVgroupStmt(pJson, pObj);
27✔
9964
    case QUERY_NODE_GRANT_STMT:
162✔
9965
      return jsonToGrantStmt(pJson, pObj);
162✔
9966
    case QUERY_NODE_REVOKE_STMT:
162✔
9967
      return jsonToRevokeStmt(pJson, pObj);
162✔
9968
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
9969
      return jsonToAlterClusterStmt(pJson, pObj);
×
9970
    case QUERY_NODE_SHOW_DNODES_STMT:
9✔
9971
      return jsonToShowDnodesStmt(pJson, pObj);
9✔
9972
    case QUERY_NODE_SHOW_MNODES_STMT:
9✔
9973
      return jsonToShowMnodesStmt(pJson, pObj);
9✔
9974
    case QUERY_NODE_SHOW_QNODES_STMT:
9✔
9975
      return jsonToShowQnodesStmt(pJson, pObj);
9✔
9976
    case QUERY_NODE_SHOW_ANODES_STMT:
×
9977
      return jsonToShowAnodesStmt(pJson, pObj);
×
9978
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
9979
      return jsonToShowAnodesFullStmt(pJson, pObj);
×
9980
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
9981
      return jsonToShowArbGroupsStmt(pJson, pObj);
×
9982
    case QUERY_NODE_SHOW_CLUSTER_STMT:
9✔
9983
      return jsonToShowClusterStmt(pJson, pObj);
9✔
9984
    case QUERY_NODE_SHOW_DATABASES_STMT:
9✔
9985
      return jsonToShowDatabasesStmt(pJson, pObj);
9✔
9986
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
9✔
9987
      return jsonToShowFunctionsStmt(pJson, pObj);
9✔
9988
    case QUERY_NODE_SHOW_INDEXES_STMT:
18✔
9989
      return jsonToShowIndexesStmt(pJson, pObj);
18✔
9990
    case QUERY_NODE_SHOW_STABLES_STMT:
36✔
9991
      return jsonToShowStablesStmt(pJson, pObj);
36✔
9992
    case QUERY_NODE_SHOW_STREAMS_STMT:
9✔
9993
      return jsonToShowStreamsStmt(pJson, pObj);
9✔
9994
    case QUERY_NODE_SHOW_TABLES_STMT:
36✔
9995
    case QUERY_NODE_SHOW_VTABLES_STMT:
9996
      return jsonToShowTablesStmt(pJson, pObj);
36✔
9997
    case QUERY_NODE_SHOW_TAGS_STMT:
9✔
9998
      return jsonToShowTagsStmt(pJson, pObj);
9✔
9999
    case QUERY_NODE_SHOW_USERS_STMT:
9✔
10000
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
10001
      return jsonToShowUsersStmt(pJson, pObj);
9✔
10002
    case QUERY_NODE_SHOW_VGROUPS_STMT:
18✔
10003
      return jsonToShowVgroupsStmt(pJson, pObj);
18✔
10004
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
9✔
10005
      return jsonToShowConsumersStmt(pJson, pObj);
9✔
10006
    case QUERY_NODE_SHOW_VARIABLES_STMT:
27✔
10007
      return jsonToShowVariablesStmt(pJson, pObj);
27✔
10008
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
10009
      return jsonToShowGrantsFullStmt(pJson, pObj);
×
10010
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
10011
      return jsonToShowGrantsLogsStmt(pJson, pObj);
×
10012
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
10013
      return jsonToShowClusterMachinesStmt(pJson, pObj);
×
10014
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
10015
      return jsonToShowEncryptionsStmt(pJson, pObj);
×
10016
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
18✔
10017
      return jsonToShowDnodeVariablesStmt(pJson, pObj);
18✔
10018
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
9✔
10019
      return jsonToShowTransactionsStmt(pJson, pObj);
9✔
10020
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
9✔
10021
      return jsonToShowSubscriptionsStmt(pJson, pObj);
9✔
10022
    case QUERY_NODE_SHOW_VNODES_STMT:
18✔
10023
      return jsonToShowVnodesStmt(pJson, pObj);
18✔
10024
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
9✔
10025
      return jsonToShowUserPrivilegesStmt(pJson, pObj);
9✔
10026
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
27✔
10027
      return jsonToShowCreateDatabaseStmt(pJson, pObj);
27✔
10028
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
27✔
10029
    case QUERY_NODE_SHOW_CREATE_VTABLE_STMT:
10030
      return jsonToShowCreateTableStmt(pJson, pObj);
27✔
10031
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
27✔
10032
      return jsonToShowCreateStableStmt(pJson, pObj);
27✔
10033
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
10034
      return jsonToShowCreateViewStmt(pJson, pObj);
×
10035
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
9✔
10036
      return jsonToShowTableDistributedStmt(pJson, pObj);
9✔
10037
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
27✔
10038
      return jsonToShowLocalVariablesStmt(pJson, pObj);
27✔
10039
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
27✔
10040
      return jsonToShowTableTagsStmt(pJson, pObj);
27✔
10041
    case QUERY_NODE_SHOW_USAGE_STMT:
×
10042
      return jsonToShowUsageStmt(pJson, pObj);
×
10043
    case QUERY_NODE_SHOW_MOUNTS_STMT:
×
10044
      return jsonToShowMountsStmt(pJson, pObj);
×
10045
    case QUERY_NODE_DELETE_STMT:
129✔
10046
      return jsonToDeleteStmt(pJson, pObj);
129✔
10047
    case QUERY_NODE_INSERT_STMT:
36✔
10048
      return jsonToInsertStmt(pJson, pObj);
36✔
10049
    case QUERY_NODE_RESTORE_DNODE_STMT:
27✔
10050
      return jsonToRestoreDnodeStmt(pJson, pObj);
27✔
10051
    case QUERY_NODE_RESTORE_QNODE_STMT:
27✔
10052
      return jsonToRestoreQnodeStmt(pJson, pObj);
27✔
10053
    case QUERY_NODE_RESTORE_MNODE_STMT:
27✔
10054
      return jsonToRestoreMnodeStmt(pJson, pObj);
27✔
10055
    case QUERY_NODE_RESTORE_VNODE_STMT:
27✔
10056
      return jsonToRestoreVnodeStmt(pJson, pObj);
27✔
10057
    case QUERY_NODE_LOGIC_PLAN_SCAN:
3,999✔
10058
      return jsonToLogicScanNode(pJson, pObj);
3,999✔
10059
    case QUERY_NODE_LOGIC_PLAN_JOIN:
132✔
10060
      return jsonToLogicJoinNode(pJson, pObj);
132✔
10061
    case QUERY_NODE_LOGIC_PLAN_VIRTUAL_TABLE_SCAN:
×
10062
      return jsonToLogicVirtualTableScanNode(pJson, pObj);
×
10063
    case QUERY_NODE_LOGIC_PLAN_AGG:
1,680✔
10064
      return jsonToLogicAggNode(pJson, pObj);
1,680✔
10065
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
2,142✔
10066
      return jsonToLogicProjectNode(pJson, pObj);
2,142✔
10067
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
84✔
10068
      return jsonToLogicVnodeModifyNode(pJson, pObj);
84✔
10069
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
594✔
10070
      return jsonToLogicExchangeNode(pJson, pObj);
594✔
10071
    case QUERY_NODE_LOGIC_PLAN_MERGE:
213✔
10072
      return jsonToLogicMergeNode(pJson, pObj);
213✔
10073
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
579✔
10074
      return jsonToLogicWindowNode(pJson, pObj);
579✔
10075
    case QUERY_NODE_LOGIC_PLAN_FILL:
123✔
10076
      return jsonToLogicFillNode(pJson, pObj);
123✔
10077
    case QUERY_NODE_LOGIC_PLAN_SORT:
444✔
10078
      return jsonToLogicSortNode(pJson, pObj);
444✔
10079
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
249✔
10080
      return jsonToLogicPartitionNode(pJson, pObj);
249✔
10081
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
168✔
10082
      return jsonToLogicIndefRowsFuncNode(pJson, pObj);
168✔
10083
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
48✔
10084
      return jsonToLogicInterpFuncNode(pJson, pObj);
48✔
10085
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
10086
      return jsonToLogicImputationFuncNode(pJson, pObj);
×
10087
    case QUERY_NODE_LOGIC_PLAN_IMPUTATION_FUNC:
×
10088
      return jsonToLogicForecastFuncNode(pJson, pObj);
×
10089
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
10090
      return jsonToLogicGroupCacheNode(pJson, pObj);
×
10091
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
10092
      return jsonToLogicDynQueryCtrlNode(pJson, pObj);
×
10093
    case QUERY_NODE_LOGIC_SUBPLAN:
4,542✔
10094
      return jsonToLogicSubplan(pJson, pObj);
4,542✔
10095
    case QUERY_NODE_LOGIC_PLAN:
825✔
10096
      return jsonToLogicPlan(pJson, pObj);
825✔
10097
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
57✔
10098
      return jsonToPhysiTagScanNode(pJson, pObj);
57✔
10099
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
24✔
10100
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
10101
      return jsonToPhysiScanNode(pJson, pObj);
24✔
10102
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
69✔
10103
      return jsonToPhysiLastRowScanNode(pJson, pObj);
69✔
10104
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
18,537✔
10105
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
10106
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
10107
      return jsonToPhysiTableScanNode(pJson, pObj);
18,537✔
10108
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
36✔
10109
      return jsonToPhysiVirtualTableScanNode(pJson, pObj);
36✔
10110
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
417✔
10111
      return jsonToPhysiSysTableScanNode(pJson, pObj);
417✔
10112
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
5,000✔
10113
      return jsonToPhysiProjectNode(pJson, pObj);
5,000✔
10114
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
72✔
10115
      return jsonToPhysiMergeJoinNode(pJson, pObj);
72✔
10116
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
10117
      return jsonToPhysiHashJoinNode(pJson, pObj);
×
10118
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
2,659✔
10119
      return jsonToPhysiAggNode(pJson, pObj);
2,659✔
10120
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
3,208✔
10121
      return jsonToPhysiExchangeNode(pJson, pObj);
3,208✔
10122
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
260✔
10123
      return jsonToPhysiMergeNode(pJson, pObj);
260✔
10124
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
304✔
10125
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
10126
      return jsonToPhysiSortNode(pJson, pObj);
304✔
10127
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
318✔
10128
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
10129
      return jsonToPhysiIntervalNode(pJson, pObj);
318✔
10130
    case QUERY_NODE_PHYSICAL_PLAN_EXTERNAL_WINDOW:
586✔
10131
    case QUERY_NODE_PHYSICAL_PLAN_HASH_EXTERNAL:
10132
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_EXTERNAL:
10133
      return jsonToPhysiExternalNode(pJson, pObj);
586✔
10134
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
72✔
10135
      return jsonToPhysiFillNode(pJson, pObj);
72✔
10136
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
36✔
10137
      return jsonToPhysiSessionWindowNode(pJson, pObj);
36✔
10138
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
36✔
10139
      return jsonToPhysiStateWindowNode(pJson, pObj);
36✔
10140
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
12✔
10141
      return jsonToPhysiEventWindowNode(pJson, pObj);
12✔
10142
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
×
10143
      return jsonToPhysiCountWindowNode(pJson, pObj);
×
10144
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
10145
      return jsonToPhysiAnomalyWindowNode(pJson, pObj);
×
10146
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
126✔
10147
      return jsonToPhysiPartitionNode(pJson, pObj);
126✔
10148
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
60✔
10149
      return jsonToPhysiIndefRowsFuncNode(pJson, pObj);
60✔
10150
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
24✔
10151
      return jsonToPhysiInterpFuncNode(pJson, pObj);
24✔
10152
    case QUERY_NODE_PHYSICAL_PLAN_IMPUTATION_FUNC:
×
10153
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
10154
      return jsonToPhysiForecastFuncNode(pJson, pObj);
×
10155
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
19,872✔
10156
      return jsonToPhysiDispatchNode(pJson, pObj);
19,872✔
10157
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
18✔
10158
      return jsonToPhysiQueryInsertNode(pJson, pObj);
18✔
10159
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
36✔
10160
      return jsonToPhysiDeleteNode(pJson, pObj);
36✔
10161
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
10162
      return jsonToPhysiGroupCacheNode(pJson, pObj);
×
10163
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
12✔
10164
      return jsonToPhysiDynQueryCtrlNode(pJson, pObj);
12✔
10165
    case QUERY_NODE_PHYSICAL_SUBPLAN:
21,979✔
10166
      return jsonToSubplan(pJson, pObj);
21,979✔
10167
    case QUERY_NODE_PHYSICAL_PLAN:
2,315✔
10168
      return jsonToPlan(pJson, pObj);
2,315✔
10169
    default:
×
10170
      break;
×
10171
  }
10172
  nodesWarn("jsonToSpecificNode unknown node = %s", nodesNodeName(nodeType(pObj)));
×
10173
  return TSDB_CODE_SUCCESS;
54✔
10174
}
10175

10176
static const char* jkNodeType = "NodeType";
10177
static const char* jkNodeName = "Name";
10178

10179
static int32_t nodeToJson(const void* pObj, SJson* pJson) {
39,988,532✔
10180
  const SNode* pNode = (const SNode*)pObj;
39,988,532✔
10181

10182
  int32_t code = tjsonAddIntegerToObject(pJson, jkNodeType, pNode->type);
39,988,532✔
10183
  if (TSDB_CODE_SUCCESS == code) {
40,155,736!
10184
    code = tjsonAddStringToObject(pJson, jkNodeName, nodesNodeName(pNode->type));
40,168,029✔
10185
  }
10186
  if (TSDB_CODE_SUCCESS == code) {
40,184,973!
10187
    code = tjsonAddObject(pJson, nodesNodeName(pNode->type), specificNodeToJson, pNode);
40,184,973✔
10188
    if (TSDB_CODE_SUCCESS != code) {
40,186,099!
10189
      nodesError("%s ToJson error", nodesNodeName(pNode->type));
×
10190
    }
10191
  }
10192

10193
  return code;
40,186,997✔
10194
}
10195

10196
static int32_t jsonToNode(const SJson* pJson, void* pObj) {
907,289✔
10197
  SNode* pNode = (SNode*)pObj;
907,289✔
10198

10199
  int32_t code;
10200
  tjsonGetNumberValue(pJson, jkNodeType, pNode->type, code);
907,289✔
10201
  if (TSDB_CODE_SUCCESS == code) {
907,066!
10202
    code = tjsonToObject(pJson, nodesNodeName(pNode->type), jsonToSpecificNode, pNode);
907,075✔
10203
    if (TSDB_CODE_SUCCESS != code) {
906,868!
10204
      nodesError("%s toNode error", nodesNodeName(pNode->type));
×
10205
    }
10206
  }
10207

10208
  return code;
906,868✔
10209
}
10210

10211
static int32_t makeNodeByJson(const SJson* pJson, SNode** pNode) {
907,128✔
10212
  int32_t val = 0;
907,128✔
10213
  int32_t code = tjsonGetIntValue(pJson, jkNodeType, &val);
907,128✔
10214
  if (TSDB_CODE_SUCCESS == code) {
906,938!
10215
    code = nodesMakeNode(val, pNode);
906,946✔
10216
    if (NULL == *pNode) {
907,307!
10217
      return code;
×
10218
    }
10219
    code = jsonToNode(pJson, *pNode);
907,307✔
10220
  }
10221

10222
  return code;
906,863✔
10223
}
10224

10225
static int32_t jsonToNodeObject(const SJson* pJson, const char* pName, SNode** pNode) {
669,459✔
10226
  SJson* pJsonNode = tjsonGetObjectItem(pJson, pName);
669,459✔
10227
  if (NULL == pJsonNode) {
669,407✔
10228
    return TSDB_CODE_SUCCESS;
275,892✔
10229
  }
10230
  return makeNodeByJson(pJsonNode, pNode);
393,515✔
10231
}
10232

10233
int32_t nodesNodeToString(const SNode* pNode, bool format, char** pStr, int32_t* pLen) {
8,179,522✔
10234
  if (NULL == pNode || NULL == pStr) {
8,179,522!
10235
    terrno = TSDB_CODE_FAILED;
×
10236
    return TSDB_CODE_FAILED;
×
10237
  }
10238

10239
  SJson* pJson = tjsonCreateObject();
8,228,109✔
10240
  if (NULL == pJson) {
8,223,673!
10241
    return terrno;
×
10242
  }
10243

10244
  int32_t code = nodeToJson(pNode, pJson);
8,223,673✔
10245
  if (TSDB_CODE_SUCCESS != code) {
8,245,938✔
10246
    terrno = code;
1,518✔
10247
    return code;
×
10248
  }
10249

10250
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
8,244,420!
10251
  tjsonDelete(pJson);
8,239,646✔
10252

10253
  if (NULL != pLen) {
8,235,794✔
10254
    *pLen = strlen(*pStr) + 1;
19,566✔
10255
  }
10256

10257
  return TSDB_CODE_SUCCESS;
8,235,794✔
10258
}
10259

10260
int32_t nodesStringToNode(const char* pStr, SNode** pNode) {
38,290✔
10261
  if (NULL == pStr || NULL == pNode) {
38,290!
10262
    return TSDB_CODE_SUCCESS;
863✔
10263
  }
10264
  SJson* pJson = tjsonParse(pStr);
37,427✔
10265
  if (NULL == pJson) {
37,427!
10266
    return TSDB_CODE_FAILED;
×
10267
  }
10268
  int32_t code = makeNodeByJson(pJson, pNode);
37,427✔
10269
  tjsonDelete(pJson);
37,427✔
10270
  if (TSDB_CODE_SUCCESS != code) {
37,425!
10271
    nodesDestroyNode(*pNode);
×
10272
    *pNode = NULL;
×
10273
    terrno = code;
×
10274
    return code;
×
10275
  }
10276
  return TSDB_CODE_SUCCESS;
37,425✔
10277
}
10278

10279
int32_t nodesListToString(const SNodeList* pList, bool format, char** pStr, int32_t* pLen) {
8,756✔
10280
  if (NULL == pList || NULL == pStr || NULL == pLen) {
8,756!
10281
    terrno = TSDB_CODE_FAILED;
×
10282
    return TSDB_CODE_FAILED;
×
10283
  }
10284

10285
  if (0 == LIST_LENGTH(pList)) {
8,756!
10286
    return TSDB_CODE_SUCCESS;
4,201✔
10287
  }
10288

10289
  SJson* pJson = tjsonCreateArray();
4,555✔
10290
  if (NULL == pJson) {
4,555!
10291
    return terrno;
×
10292
  }
10293

10294
  SNode* pNode;
10295
  FOREACH(pNode, pList) {
11,415!
10296
    int32_t code = tjsonAddItem(pJson, nodeToJson, pNode);
6,860✔
10297
    if (TSDB_CODE_SUCCESS != code) {
6,860!
10298
      terrno = code;
×
10299
      return code;
×
10300
    }
10301
  }
10302

10303
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
4,555!
10304
  tjsonDelete(pJson);
4,555✔
10305

10306
  *pLen = strlen(*pStr) + 1;
4,555✔
10307
  return TSDB_CODE_SUCCESS;
4,555✔
10308
}
10309

10310
int32_t nodesStringToList(const char* pStr, SNodeList** pList) {
1,393✔
10311
  if (NULL == pStr || NULL == pList) {
1,393!
10312
    return TSDB_CODE_SUCCESS;
596✔
10313
  }
10314
  SJson* pJson = tjsonParse(pStr);
797✔
10315
  if (NULL == pJson) {
797!
10316
    return TSDB_CODE_FAILED;
×
10317
  }
10318
  int32_t code = jsonToNodeListImpl(pJson, pList);
797✔
10319
  tjsonDelete(pJson);
797✔
10320
  if (TSDB_CODE_SUCCESS != code) {
797!
10321
    nodesDestroyList(*pList);
×
10322
    *pList = NULL;
×
10323
    terrno = code;
×
10324
    return code;
×
10325
  }
10326
  return TSDB_CODE_SUCCESS;
797✔
10327
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc