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

taosdata / TDengine / #4909

30 Dec 2025 10:52AM UTC coverage: 65.542% (+0.2%) from 65.386%
#4909

push

travis-ci

web-flow
enh: drop multi-stream (#33962)

60 of 106 new or added lines in 4 files covered. (56.6%)

857 existing lines in 113 files now uncovered.

193924 of 295877 relevant lines covered (65.54%)

120594206.86 hits per line

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

41.07
/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) {
2,147,483,647✔
31
  switch (type) {
2,147,483,647✔
32
    case QUERY_NODE_COLUMN:
2,147,483,647✔
33
      return "Column";
2,147,483,647✔
34
    case QUERY_NODE_VALUE:
817,798,205✔
35
      return "Value";
817,798,205✔
36
    case QUERY_NODE_OPERATOR:
472,475,597✔
37
      return "Operator";
472,475,597✔
38
    case QUERY_NODE_LOGIC_CONDITION:
115,420,957✔
39
      return "LogicCondition";
115,420,957✔
40
    case QUERY_NODE_FUNCTION:
1,066,581,179✔
41
      return "Function";
1,066,581,179✔
42
    case QUERY_NODE_REAL_TABLE:
291,266✔
43
      return "RealTable";
291,266✔
44
    case QUERY_NODE_VIRTUAL_TABLE:
×
45
      return "VirtualTable";
×
46
    case QUERY_NODE_PLACE_HOLDER_TABLE:
×
47
      return "PlaceHolderTable";
×
48
    case QUERY_NODE_SLIDING_WINDOW :
×
49
      return "SlidingWindow";
×
50
    case QUERY_NODE_PERIOD_WINDOW:
×
51
      return "PeriodWindow";
×
52
    case QUERY_NODE_STREAM_TRIGGER:
×
53
      return "StreamTrigger";
×
54
    case QUERY_NODE_STREAM:
×
55
      return "Stream";
×
56
    case QUERY_NODE_STREAM_TAG_DEF:
×
57
      return "StreamTagDef";
×
58
    case QUERY_NODE_EXTERNAL_WINDOW:
×
59
      return "ExternalWindow";
×
60
    case QUERY_NODE_TEMP_TABLE:
×
61
      return "TempTable";
×
62
    case QUERY_NODE_JOIN_TABLE:
×
63
      return "JoinTable";
×
64
    case QUERY_NODE_GROUPING_SET:
×
65
      return "GroupingSet";
×
66
    case QUERY_NODE_ORDER_BY_EXPR:
125,785,848✔
67
      return "OrderByExpr";
125,785,848✔
68
    case QUERY_NODE_LIMIT:
69,419,404✔
69
      return "Limit";
69,419,404✔
70
    case QUERY_NODE_STATE_WINDOW:
×
71
      return "StateWindow";
×
72
    case QUERY_NODE_SESSION_WINDOW:
×
73
      return "SessionWinow";
×
74
    case QUERY_NODE_INTERVAL_WINDOW:
×
75
      return "IntervalWindow";
×
76
    case QUERY_NODE_NODE_LIST:
1,288,060,365✔
77
      return "NodeList";
1,288,060,365✔
78
    case QUERY_NODE_FILL:
×
79
      return "Fill";
×
80
    case QUERY_NODE_RAW_EXPR:
×
81
      return "RawExpr";
×
82
    case QUERY_NODE_TARGET:
2,147,483,647✔
83
      return "Target";
2,147,483,647✔
84
    case QUERY_NODE_DATABLOCK_DESC:
1,790,819,032✔
85
      return "DataBlockDesc";
1,790,819,032✔
86
    case QUERY_NODE_SLOT_DESC:
2,147,483,647✔
87
      return "SlotDesc";
2,147,483,647✔
88
    case QUERY_NODE_COLUMN_DEF:
×
89
      return "ColumnDef";
×
90
    case QUERY_NODE_DOWNSTREAM_SOURCE:
2,194,798✔
91
      return "DownstreamSource";
2,194,798✔
92
    case QUERY_NODE_DATABASE_OPTIONS:
×
93
      return "DatabaseOptions";
×
94
    case QUERY_NODE_TABLE_OPTIONS:
×
95
      return "TableOptions";
×
96
    case QUERY_NODE_COLUMN_OPTIONS:
×
97
      return "ColumnOptions";
×
98
    case QUERY_NODE_INDEX_OPTIONS:
×
99
      return "IndexOptions";
×
100
    case QUERY_NODE_EXPLAIN_OPTIONS:
×
101
      return "ExplainOptions";
×
102
    case QUERY_NODE_STREAM_TRIGGER_OPTIONS:
×
103
      return "StreamTriggerOptions";
×
104
    case QUERY_NODE_LEFT_VALUE:
15,766,432✔
105
      return "LeftValue";
15,766,432✔
106
    case QUERY_NODE_COLUMN_REF:
×
107
      return "ColumnReference";
×
108
    case QUERY_NODE_WHEN_THEN:
2,388,911✔
109
      return "WhenThen";
2,388,911✔
110
    case QUERY_NODE_CASE_WHEN:
2,000,735✔
111
      return "CaseWhen";
2,000,735✔
112
    case QUERY_NODE_EVENT_WINDOW:
×
113
      return "EventWindow";
×
114
    case QUERY_NODE_WINDOW_OFFSET:
567,358✔
115
      return "WindowOffset";
567,358✔
116
    case QUERY_NODE_COUNT_WINDOW:
×
117
      return "CountWindow";
×
118
    case QUERY_NODE_ANOMALY_WINDOW:
×
119
      return "AnomalyWindow";
×
120
    case QUERY_NODE_STREAM_NOTIFY_OPTIONS:
×
121
      return "StreamNotifyOptions";
×
122
    case QUERY_NODE_TIME_RANGE:
1,590,289✔
123
      return "TimeRange";
1,590,289✔
124
    case QUERY_NODE_REMOTE_VALUE:
5,282✔
125
      return "RemoteValue";
5,282✔
126
    case QUERY_NODE_SET_OPERATOR:
×
127
      return "SetOperator";
×
128
    case QUERY_NODE_SELECT_STMT:
633,745✔
129
      return "SelectStmt";
633,745✔
130
    case QUERY_NODE_VNODE_MODIFY_STMT:
583,904✔
131
      return "VnodeModifStmt";
583,904✔
132
    case QUERY_NODE_CREATE_DATABASE_STMT:
26,311✔
133
      return "CreateDatabaseStmt";
26,311✔
134
    case QUERY_NODE_DROP_DATABASE_STMT:
6,768✔
135
      return "DropDatabaseStmt";
6,768✔
136
    case QUERY_NODE_ALTER_DATABASE_STMT:
5,357✔
137
      return "AlterDatabaseStmt";
5,357✔
138
    case QUERY_NODE_FLUSH_DATABASE_STMT:
×
139
      return "FlushDatabaseStmt";
×
140
    case QUERY_NODE_TRIM_DATABASE_STMT:
2,181✔
141
      return "TrimDatabaseStmt";
2,181✔
142
    case QUERY_NODE_SSMIGRATE_DATABASE_STMT:
×
143
      return "SsMigrateDatabaseStmt";
×
144
    case QUERY_NODE_CREATE_TABLE_STMT:
6,848✔
145
      return "CreateTableStmt";
6,848✔
146
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
×
147
      return "CreateSubtableClause";
×
148
    case QUERY_NODE_CREATE_VIRTUAL_TABLE_STMT:
×
149
      return "CreateVirtualtableStmt";
×
150
    case QUERY_NODE_CREATE_VIRTUAL_SUBTABLE_STMT:
×
151
      return "CreateVirtualsubtableStmt";
×
152
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
×
153
      return "CreateMultiTableStmt";
×
154
    case QUERY_NODE_DROP_TABLE_CLAUSE:
×
155
      return "DropTableClause";
×
156
    case QUERY_NODE_DROP_TABLE_STMT:
256✔
157
      return "DropTableStmt";
256✔
158
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
867✔
159
      return "DropSuperTableStmt";
867✔
160
    case QUERY_NODE_DROP_VIRTUAL_TABLE_STMT:
×
161
      return "DropVirtualTableStmt";
×
162
    case QUERY_NODE_ALTER_TABLE_STMT:
28,307✔
163
      return "AlterTableStmt";
28,307✔
164
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
13,611✔
165
      return "AlterSuperTableStmt";
13,611✔
166
    case QUERY_NODE_ALTER_VIRTUAL_TABLE_STMT:
×
167
      return "AlterVirtualTableStmt";
×
168
    case QUERY_NODE_CREATE_USER_STMT:
×
169
      return "CreateUserStmt";
×
170
    case QUERY_NODE_CREATE_ENCRYPT_ALGORITHMS_STMT:
×
171
      return "CreateEncryptAlgrStmt";
×
172
    case QUERY_NODE_DROP_ENCRYPT_ALGR_STMT:
×
173
      return "DropEncryptAlgrStmt";
×
174
    case QUERY_NODE_ALTER_USER_STMT:
2,538✔
175
      return "AlterUserStmt";
2,538✔
176
    case QUERY_NODE_DROP_USER_STMT:
×
177
      return "DropUserStmt";
×
178
    case QUERY_NODE_CREATE_ROLE_STMT:
×
179
      return "CreateRoleStmt";
×
180
    case QUERY_NODE_DROP_ROLE_STMT:
×
181
      return "DropRoleStmt";
×
182
    case QUERY_NODE_ALTER_ROLE_STMT:
×
183
      return "AlterRoleStmt";
×
184
    case QUERY_NODE_USE_DATABASE_STMT:
12,771✔
185
      return "UseDatabaseStmt";
12,771✔
186
    case QUERY_NODE_CREATE_DNODE_STMT:
×
187
      return "CreateDnodeStmt";
×
188
    case QUERY_NODE_DROP_DNODE_STMT:
1,351✔
189
      return "DropDnodeStmt";
1,351✔
190
    case QUERY_NODE_ALTER_DNODE_STMT:
15,119✔
191
      return "AlterDnodeStmt";
15,119✔
192
    case QUERY_NODE_ALTER_DNODES_RELOAD_TLS_STMT:
×
193
      return "AlterDnodesReloadTLSStmt";
×
194
    case QUERY_NODE_ALTER_ENCRYPT_KEY_STMT:
×
195
      return "AlterEncryptKeyStmt";
×
196
    case QUERY_NODE_CREATE_INDEX_STMT:
4,855✔
197
      return "CreateIndexStmt";
4,855✔
198
    case QUERY_NODE_DROP_INDEX_STMT:
1,732✔
199
      return "DropIndexStmt";
1,732✔
200
    case QUERY_NODE_CREATE_QNODE_STMT:
258✔
201
      return "CreateQnodeStmt";
258✔
202
    case QUERY_NODE_DROP_QNODE_STMT:
258✔
203
      return "DropQnodeStmt";
258✔
204
    case QUERY_NODE_CREATE_ANODE_STMT:
×
205
      return "CreateAnodeStmt";
×
206
    case QUERY_NODE_DROP_ANODE_STMT:
×
207
      return "DropAnodeStmt";
×
208
    case QUERY_NODE_UPDATE_ANODE_STMT:
×
209
      return "UpdateAnodeStmt";
×
210
    case QUERY_NODE_CREATE_BNODE_STMT:
2,151✔
211
      return "CreateBnodeStmt";
2,151✔
212
    case QUERY_NODE_DROP_BNODE_STMT:
6,453✔
213
      return "DropBnodeStmt";
6,453✔
214
    case QUERY_NODE_CREATE_SNODE_STMT:
12,226✔
215
      return "CreateSnodeStmt";
12,226✔
216
    case QUERY_NODE_DROP_SNODE_STMT:
12,223✔
217
      return "DropSnodeStmt";
12,223✔
218
    case QUERY_NODE_CREATE_MNODE_STMT:
6,393✔
219
      return "CreateMnodeStmt";
6,393✔
220
    case QUERY_NODE_DROP_MNODE_STMT:
1,878✔
221
      return "DropMnodeStmt";
1,878✔
222
    case QUERY_NODE_CREATE_TOPIC_STMT:
3,052✔
223
      return "CreateTopicStmt";
3,052✔
224
    case QUERY_NODE_DROP_TOPIC_STMT:
157✔
225
      return "DropTopicStmt";
157✔
226
    case QUERY_NODE_DROP_CGROUP_STMT:
×
227
      return "DropConsumerGroupStmt";
×
228
    case QUERY_NODE_ALTER_LOCAL_STMT:
1,225✔
229
      return "AlterLocalStmt";
1,225✔
230
    case QUERY_NODE_EXPLAIN_STMT:
55,924✔
231
      return "ExplainStmt";
55,924✔
232
    case QUERY_NODE_DESCRIBE_STMT:
×
233
      return "DescribeStmt";
×
234
    case QUERY_NODE_COMPACT_DATABASE_STMT:
288✔
235
      return "CompactDatabaseStmt";
288✔
236
    case QUERY_NODE_ROLLUP_DATABASE_STMT:
2,181✔
237
      return "RollupDatabaseStmt";
2,181✔
238
    case QUERY_NODE_SCAN_DATABASE_STMT:
×
239
      return "ScanDatabaseStmt";
×
240
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
1,454✔
241
      return "CompactVgroupsStmt";
1,454✔
242
    case QUERY_NODE_ROLLUP_VGROUPS_STMT:
2,181✔
243
      return "RollupVgroupsStmt";
2,181✔
244
    case QUERY_NODE_SCAN_VGROUPS_STMT:
106✔
245
      return "ScanVgroupsStmt";
106✔
246
    case QUERY_NODE_CREATE_STREAM_STMT:
8,048✔
247
      return "CreateStreamStmt";
8,048✔
248
    case QUERY_NODE_DROP_STREAM_STMT:
932✔
249
      return "DropStreamStmt";
932✔
250
    case QUERY_NODE_PAUSE_STREAM_STMT:
×
251
      return "PauseStreamStmt";
×
252
    case QUERY_NODE_RESUME_STREAM_STMT:
×
253
      return "ResumeStreamStmt";
×
254
    case QUERY_NODE_RECALCULATE_STREAM_STMT:
7,273✔
255
      return "RecalcStreamStmt";
7,273✔
256
    case QUERY_NODE_BALANCE_VGROUP_STMT:
1,980✔
257
      return "BalanceVgroupStmt";
1,980✔
258
    case QUERY_NODE_ASSIGN_LEADER_STMT:
×
259
      return "AssignLeaderStmt";
×
260
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
×
261
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
262
      return "BalanceVgroupLeaderStmt";
×
263
    case QUERY_NODE_SET_VGROUP_KEEP_VERSION_STMT:
×
264
      return "SetVgroupKeepVersionStmt";
×
265
    case QUERY_NODE_TRIM_DATABASE_WAL_STMT:
×
266
      return "TrimDbWalStmt";
×
267
    case QUERY_NODE_CREATE_TOKEN_STMT:
×
268
      return "CreateTokenStmt";
×
269
    case QUERY_NODE_ALTER_TOKEN_STMT:
×
270
      return "AlterTokenStmt";
×
271
    case QUERY_NODE_DROP_TOKEN_STMT:
×
272
      return "DropTokenStmt";
×
273
    case QUERY_NODE_MERGE_VGROUP_STMT:
×
274
      return "MergeVgroupStmt";
×
275
    case QUERY_NODE_SHOW_DB_ALIVE_STMT:
×
276
      return "ShowDbAliveStmt";
×
277
    case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT:
×
278
      return "ShowClusterAliveStmt";
×
279
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
8,504✔
280
      return "RedistributeVgroupStmt";
8,504✔
281
    case QUERY_NODE_SPLIT_VGROUP_STMT:
3,659✔
282
      return "SplitVgroupStmt";
3,659✔
283
    case QUERY_NODE_GRANT_STMT:
1,256✔
284
      return "GrantStmt";
1,256✔
285
    case QUERY_NODE_REVOKE_STMT:
157✔
286
      return "RevokeStmt";
157✔
287
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
288
      return "AlterClusterStmt";
×
289
    case QUERY_NODE_SHOW_DNODES_STMT:
×
290
      return "ShowDnodesStmt";
×
291
    case QUERY_NODE_SHOW_MNODES_STMT:
×
292
      return "ShowMnodesStmt";
×
293
    case QUERY_NODE_SHOW_MODULES_STMT:
×
294
      return "ShowModulesStmt";
×
295
    case QUERY_NODE_SHOW_QNODES_STMT:
×
296
      return "ShowQnodesStmt";
×
297
    case QUERY_NODE_SHOW_ANODES_STMT:
×
298
      return "ShowAnodesStmt";
×
299
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
300
      return "ShowAnodesFullStmt";
×
301
    case QUERY_NODE_SHOW_SNODES_STMT:
×
302
      return "ShowSnodesStmt";
×
303
    case QUERY_NODE_SHOW_BACKUP_NODES_STMT:
×
304
      return "ShowBackupNodesStmt";
×
305
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
306
      return "ShowArbGroupsStmt";
×
307
    case QUERY_NODE_SHOW_CLUSTER_STMT:
×
308
      return "ShowClusterStmt";
×
309
    case QUERY_NODE_SHOW_DATABASES_STMT:
×
310
      return "ShowDatabaseStmt";
×
311
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
×
312
      return "ShowFunctionsStmt";
×
313
    case QUERY_NODE_SHOW_INDEXES_STMT:
×
314
      return "ShowIndexesStmt";
×
315
    case QUERY_NODE_SHOW_STABLES_STMT:
×
316
      return "ShowStablesStmt";
×
317
    case QUERY_NODE_SHOW_STREAMS_STMT:
×
318
      return "ShowStreamsStmt";
×
319
    case QUERY_NODE_SHOW_TABLES_STMT:
×
320
      return "ShowTablesStmt";
×
321
    case QUERY_NODE_SHOW_VTABLES_STMT:
×
322
      return "ShowVtablesStmt";
×
323
    case QUERY_NODE_SHOW_TAGS_STMT:
×
324
      return "ShowTagsStmt";
×
325
    case QUERY_NODE_SHOW_USERS_STMT:
×
326
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
327
      return "ShowUsersStmt";
×
328
    case QUERY_NODE_SHOW_ROLES_STMT:
×
329
      return "ShowRolesStmt";
×
330
    case QUERY_NODE_SHOW_LICENCES_STMT:
×
331
      return "ShowGrantsStmt";
×
332
    case QUERY_NODE_SHOW_VGROUPS_STMT:
×
333
      return "ShowVgroupsStmt";
×
334
    case QUERY_NODE_SHOW_TOPICS_STMT:
×
335
      return "ShowTopicsStmt";
×
336
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
×
337
      return "ShowConsumersStmt";
×
338
    case QUERY_NODE_SHOW_QUERIES_STMT:
×
339
      return "ShowQueriesStmt";
×
340
    case QUERY_NODE_SHOW_VARIABLES_STMT:
×
341
      return "ShowVariablesStmt";
×
342
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
×
343
      return "ShowDnodeVariablesStmt";
×
344
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
×
345
      return "ShowTransactionsStmt";
×
346
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
×
347
      return "ShowSubscriptionsStmt";
×
348
    case QUERY_NODE_SHOW_VNODES_STMT:
×
349
      return "ShowVnodeStmt";
×
350
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
×
351
      return "ShowUserPrivilegesStmt";
×
352
    case QUERY_NODE_SHOW_ROLE_PRIVILEGES_STMT:
×
353
      return "ShowRolePrivilegesStmt";
×
354
    case QUERY_NODE_SHOW_ROLE_COL_PRIVILEGES_STMT:
×
355
      return "ShowRoleColPrivilegesStmt";
×
356
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
×
357
      return "ShowCreateDatabasesStmt";
×
358
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
×
359
      return "ShowCreateTablesStmt";
×
360
    case QUERY_NODE_SHOW_CREATE_VTABLE_STMT:
×
361
      return "ShowCreateVtablesstmt";
×
362
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
157✔
363
      return "ShowCreateStablesStmt";
157✔
364
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
365
      return "ShowCreateViewStmt";
×
366
    case QUERY_NODE_SHOW_CREATE_RSMA_STMT:
×
367
      return "ShowCreateRsmaStmt";
×
368
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
×
369
      return "ShowTableDistributedStmt";
×
370
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
×
371
      return "ShowLocalVariablesStmt";
×
372
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
×
373
      return "ShowTableTagsStmt";
×
374
    case QUERY_NODE_SHOW_COMPACTS_STMT:
×
375
      return "ShowCompactsStmt";
×
376
    case QUERY_NODE_SHOW_SCANS_STMT:
×
377
      return "ShowScansStmt";
×
378
    case QUERY_NODE_SHOW_COMPACT_DETAILS_STMT:
×
379
      return "ShowCompactDetailsStmt";
×
380
    case QUERY_NODE_SHOW_SCAN_DETAILS_STMT:
×
381
      return "ShowScanDetailsStmt";
×
382
    case QUERY_NODE_SHOW_TRANSACTION_DETAILS_STMT:
×
383
      return "ShowTransactionDetailsStmt";
×
384
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
385
      return "ShowGrantsFullStmt";
×
386
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
387
      return "ShowGrantsLogsStmt";
×
388
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
389
      return "ShowClusterMachinesStmt";
×
390
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
391
      return "ShowEncryptionsStmt";
×
392
    case QUERY_NODE_SHOW_USAGE_STMT:
×
393
      return "ShowUsageStmt";
×
394
    case QUERY_NODE_SHOW_MOUNTS_STMT:
×
395
      return "ShowMountsStmt";
×
396
    case QUERY_NODE_SHOW_SSMIGRATES_STMT:
×
397
      return "ShowSSMigratesStmt";
×
398
    case QUERY_NODE_SHOW_TOKENS_STMT:
×
399
      return "ShowTokensStmt";
×
400
    case QUERY_NODE_SHOW_RSMAS_STMT:
×
401
      return "ShowRsmasStmt";
×
402
    case QUERY_NODE_SHOW_RETENTIONS_STMT:
×
403
      return "ShowRetentionsStmt";
×
404
    case QUERY_NODE_SHOW_INSTANCES_STMT:
×
405
      return "ShowInstancesStmt";
×
406
    case QUERY_NODE_SHOW_RETENTION_DETAILS_STMT:
×
407
      return "ShowRetentionDetailsStmt";
×
408
    case QUERY_NODE_SHOW_ENCRYPT_ALGORITHMS_STMT:
×
409
      return "ShowEncryptAlgorithmsStmt";
×
410
    case QUERY_NODE_SHOW_ENCRYPT_STATUS_STMT:
×
411
      return "ShowEncryptStatusStmt";
×
412
    case QUERY_NODE_DELETE_STMT:
×
413
      return "DeleteStmt";
×
414
    case QUERY_NODE_INSERT_STMT:
7,899✔
415
      return "InsertStmt";
7,899✔
416
    case QUERY_NODE_RESTORE_DNODE_STMT:
330✔
417
      return "RestoreDnodeStmt";
330✔
418
    case QUERY_NODE_RESTORE_QNODE_STMT:
420✔
419
      return "RestoreQnodeStmt";
420✔
420
    case QUERY_NODE_RESTORE_MNODE_STMT:
327✔
421
      return "RestoreMnodeStmt";
327✔
422
    case QUERY_NODE_RESTORE_VNODE_STMT:
210✔
423
      return "RestoreVnodeStmt";
210✔
424
    case QUERY_NODE_CREATE_VIEW_STMT:
×
425
      return "CreateViewStmt";
×
426
    case QUERY_NODE_DROP_VIEW_STMT:
×
427
      return "DropViewStmt";
×
428
    case QUERY_NODE_CREATE_MOUNT_STMT:
896✔
429
      return "CreateMountStmt";
896✔
430
    case QUERY_NODE_DROP_MOUNT_STMT:
256✔
431
      return "DropMountStmt";
256✔
432
    case QUERY_NODE_CREATE_RSMA_STMT:
7,270✔
433
      return "CreateRsmaStmt";
7,270✔
434
    case QUERY_NODE_DROP_RSMA_STMT:
×
435
      return "DropRsmaStmt";
×
436
    case QUERY_NODE_ALTER_RSMA_STMT:
×
437
      return "AlterRsmaStmt";
×
438
    case QUERY_NODE_LOGIC_PLAN_SCAN:
219,000✔
439
      return "LogicScan";
219,000✔
440
    case QUERY_NODE_LOGIC_PLAN_JOIN:
×
441
      return "LogicJoin";
×
442
    case QUERY_NODE_LOGIC_PLAN_AGG:
×
443
      return "LogicAgg";
×
444
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
131,400✔
445
      return "LogicProject";
131,400✔
446
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
×
447
      return "LogicVnodeModify";
×
448
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
×
449
      return "LogicExchange";
×
450
    case QUERY_NODE_LOGIC_PLAN_MERGE:
×
451
      return "LogicMerge";
×
452
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
×
453
      return "LogicWindow";
×
454
    case QUERY_NODE_LOGIC_PLAN_FILL:
×
455
      return "LogicFill";
×
456
    case QUERY_NODE_LOGIC_PLAN_SORT:
×
457
      return "LogicSort";
×
458
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
×
459
      return "LogicPartition";
×
460
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
×
461
      return "LogicIndefRowsFunc";
×
462
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
×
463
      return "LogicInterpFunc";
×
464
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
465
      return "LogicForecastFunc";
×
466
    case QUERY_NODE_LOGIC_PLAN_ANALYSIS_FUNC:
×
467
      return "LogicImputationFunc";
×
468
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
469
      return "LogicGroupCache";
×
470
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
471
      return "LogicDynamicQueryCtrl";
×
472
    case QUERY_NODE_LOGIC_PLAN_VIRTUAL_TABLE_SCAN:
×
473
      return "LogicVirtualTableScan";
×
474
    case QUERY_NODE_LOGIC_SUBPLAN:
219,000✔
475
      return "LogicSubplan";
219,000✔
476
    case QUERY_NODE_LOGIC_PLAN:
×
477
      return "LogicPlan";
×
478
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
21,264,706✔
479
      return "PhysiTagScan";
21,264,706✔
480
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
325,538,048✔
481
      return "PhysiTableScan";
325,538,048✔
482
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SEQ_SCAN:
×
483
      return "PhysiTableSeqScan";
×
484
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
64,106,424✔
485
      return "PhysiTableMergeScan";
64,106,424✔
486
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
675,186✔
487
      return "PhysiSreamScan";
675,186✔
488
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
31,822,821✔
489
      return "PhysiSystemTableScan";
31,822,821✔
490
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
9,912✔
491
      return "PhysiBlockDistScan";
9,912✔
492
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
1,018,952✔
493
      return "PhysiLastRowScan";
1,018,952✔
494
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
52,630✔
495
      return "PhysiTableCountScan";
52,630✔
496
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
778,188✔
497
      return "PhysiMergeEventWindow";
778,188✔
498
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
758,488✔
499
      return "PhysiMergeCountWindow";
758,488✔
500
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
501
      return "PhysiMergeAnomalyWindow";
×
502
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
176,437,824✔
503
      return "PhysiProject";
176,437,824✔
504
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
27,218,156✔
505
      return "PhysiMergeJoin";
27,218,156✔
506
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
3,590,418✔
507
      return "PhysiHashJoin";
3,590,418✔
508
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
209,797,581✔
509
      return "PhysiAgg";
209,797,581✔
510
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
215,138,993✔
511
      return "PhysiExchange";
215,138,993✔
512
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
31,069,175✔
513
      return "PhysiMerge";
31,069,175✔
514
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
64,460,397✔
515
      return "PhysiSort";
64,460,397✔
516
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
101,384✔
517
      return "PhysiGroupSort";
101,384✔
518
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
9,539,579✔
519
      return "PhysiHashInterval";
9,539,579✔
520
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
1,710,752✔
521
      return "PhysiMergeAlignedInterval";
1,710,752✔
522
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
813,996✔
523
      return "PhysiFill";
813,996✔
524
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
1,212,772✔
525
      return "PhysiSessionWindow";
1,212,772✔
526
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
1,463,932✔
527
      return "PhysiStateWindow";
1,463,932✔
528
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
6,283,858✔
529
      return "PhysiPartition";
6,283,858✔
530
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
7,581,928✔
531
      return "PhysiIndefRowsFunc";
7,581,928✔
532
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
4,457,395✔
533
      return "PhysiInterpFunc";
4,457,395✔
534
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
535
      return "PhysiForecastFunc";
×
536
    case QUERY_NODE_PHYSICAL_PLAN_ANALYSIS_FUNC:
×
537
      return "PhysiImputationFunc";
×
538
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
561,771,898✔
539
      return "PhysiDispatch";
561,771,898✔
540
    case QUERY_NODE_PHYSICAL_PLAN_INSERT:
1,647,214,414✔
541
      return "PhysiInsert";
1,647,214,414✔
542
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
400,040✔
543
      return "PhysiQueryInsert";
400,040✔
544
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
3,299,758✔
545
      return "PhysiDelete";
3,299,758✔
546
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
3,588,978✔
547
      return "PhysiGroupCache";
3,588,978✔
548
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
7,702,687✔
549
      return "PhysiDynamicQueryCtrl";
7,702,687✔
550
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
6,201,607✔
551
      return "PhysiVirtualTableScan";
6,201,607✔
552
    case QUERY_NODE_PHYSICAL_SUBPLAN:
1,664,288,893✔
553
      return "PhysiSubplan";
1,664,288,893✔
554
    case QUERY_NODE_PHYSICAL_PLAN:
1,270,377,973✔
555
      return "PhysiPlan";
1,270,377,973✔
556
    case QUERY_NODE_PHYSICAL_PLAN_EXTERNAL_WINDOW:
904,994✔
557
    case QUERY_NODE_PHYSICAL_PLAN_HASH_EXTERNAL:
558
      return "PhysiExternalWindow";
904,994✔
559
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_EXTERNAL:
43,475✔
560
      return "PhysiMergeAlignedExternalWindow";
43,475✔
561
    default:
×
562
      break;
×
563
  }
564
  nodesWarn("nodesNodeName unknown node = %d", type);
×
565
  return "UnknownNode";
314✔
566
}
567

568
static int32_t nodeListToJson(SJson* pJson, const char* pName, const SNodeList* pList) {
2,147,483,647✔
569
  if (LIST_LENGTH(pList) > 0) {
2,147,483,647✔
570
    SJson* jList = tjsonAddArrayToObject(pJson, pName);
2,147,483,647✔
571
    if (NULL == jList) {
2,147,483,647✔
572
      return terrno;
×
573
    }
574
    SNode* pNode;
575
    FOREACH(pNode, pList) {
2,147,483,647✔
576
      int32_t code = tjsonAddItem(jList, nodeToJson, pNode);
2,147,483,647✔
577
      if (TSDB_CODE_SUCCESS != code) {
2,147,483,647✔
578
        return code;
×
579
      }
580
    }
581
  }
582
  return TSDB_CODE_SUCCESS;
2,147,483,647✔
583
}
584

585
static int32_t jsonToNodeListImpl(const SJson* pJsonArray, SNodeList** pList) {
35,864,882✔
586
  int32_t size = (NULL == pJsonArray ? 0 : tjsonGetArraySize(pJsonArray));
35,864,882✔
587
  if (size > 0) {
35,866,653✔
588
    int32_t code = nodesMakeList(pList);
22,328,673✔
589
    if (NULL == *pList) {
22,328,766✔
590
      return code;
×
591
    }
592
  }
593

594
  int32_t code = TSDB_CODE_SUCCESS;
35,866,586✔
595
  for (int32_t i = 0; i < size; ++i) {
105,625,894✔
596
    SJson* pJsonItem = tjsonGetArrayItem(pJsonArray, i);
69,760,586✔
597
    SNode* pNode = NULL;
69,761,526✔
598
    code = makeNodeByJson(pJsonItem, &pNode);
69,761,893✔
599
    if (TSDB_CODE_SUCCESS == code) {
69,751,714✔
600
      code = nodesListAppend(*pList, pNode);
69,753,644✔
601
    }
602
    if (TSDB_CODE_SUCCESS != code) {
69,757,245✔
603
      break;
×
604
    }
605
  }
606
  return code;
35,864,809✔
607
}
608

609
static int32_t jsonToNodeList(const SJson* pJson, const char* pName, SNodeList** pList) {
35,487,119✔
610
  return jsonToNodeListImpl(tjsonGetObjectItem(pJson, pName), pList);
35,487,119✔
611
}
612

613
// common definitions
614
static const char* jkStmtIgnoreExists = "IgnoreExists";
615
static const char* jkStmtIgnoreNotExists = "IgnoreNotExists";
616

617
static const char* jkTableComInfoNumOfTags = "NumOfTags";
618
static const char* jkTableComInfoPrecision = "Precision";
619
static const char* jkTableComInfoNumOfColumns = "NumOfColumns";
620
static const char* jkTableComInfoRowSize = "RowSize";
621

622
static int32_t tableComInfoToJson(const void* pObj, SJson* pJson) {
100,361✔
623
  const STableComInfo* pNode = (const STableComInfo*)pObj;
100,361✔
624

625
  int32_t code = tjsonAddIntegerToObject(pJson, jkTableComInfoNumOfTags, pNode->numOfTags);
100,361✔
626
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
627
    code = tjsonAddIntegerToObject(pJson, jkTableComInfoPrecision, pNode->precision);
100,361✔
628
  }
629
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
630
    code = tjsonAddIntegerToObject(pJson, jkTableComInfoNumOfColumns, pNode->numOfColumns);
100,361✔
631
  }
632
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
633
    code = tjsonAddIntegerToObject(pJson, jkTableComInfoRowSize, pNode->rowSize);
100,361✔
634
  }
635

636
  return code;
100,361✔
637
}
638

639
static int32_t jsonToTableComInfo(const SJson* pJson, void* pObj) {
90,544✔
640
  STableComInfo* pNode = (STableComInfo*)pObj;
90,544✔
641

642
  int32_t code;
643
  tjsonGetNumberValue(pJson, jkTableComInfoNumOfTags, pNode->numOfTags, code);
90,544✔
644
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
645
    tjsonGetNumberValue(pJson, jkTableComInfoPrecision, pNode->precision, code);
90,544✔
646
  }
647
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
648
    tjsonGetNumberValue(pJson, jkTableComInfoNumOfColumns, pNode->numOfColumns, code);
90,544✔
649
  }
650
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
651
    tjsonGetNumberValue(pJson, jkTableComInfoRowSize, pNode->rowSize, code);
90,544✔
652
  }
653

654
  return code;
90,544✔
655
}
656

657
static const char* jkSchemaType = "Type";
658
static const char* jkSchemaColId = "ColId";
659
static const char* jkSchemaBytes = "bytes";
660
static const char* jkSchemaName = "Name";
661
static const char* jkSchemaFlags = "Flags";
662

663
static int32_t schemaToJson(const void* pObj, SJson* pJson) {
905,404✔
664
  const SSchema* pNode = (const SSchema*)pObj;
905,404✔
665

666
  int32_t code = tjsonAddIntegerToObject(pJson, jkSchemaType, pNode->type);
905,404✔
667
  if (TSDB_CODE_SUCCESS == code) {
905,404✔
668
    code = tjsonAddIntegerToObject(pJson, jkSchemaColId, pNode->colId);
905,404✔
669
  }
670
  if (TSDB_CODE_SUCCESS == code) {
905,404✔
671
    code = tjsonAddIntegerToObject(pJson, jkSchemaBytes, pNode->bytes);
905,404✔
672
  }
673
  if (TSDB_CODE_SUCCESS == code) {
905,404✔
674
    code = tjsonAddStringToObject(pJson, jkSchemaName, pNode->name);
905,404✔
675
  }
676
  if (TSDB_CODE_SUCCESS == code) {
905,404✔
677
    code = tjsonAddIntegerToObject(pJson, jkSchemaFlags, pNode->flags);
905,404✔
678
  }
679

680
  return code;
905,404✔
681
}
682

683
static int32_t jsonToSchema(const SJson* pJson, void* pObj) {
840,441✔
684
  SSchema* pNode = (SSchema*)pObj;
840,441✔
685

686
  int32_t code;
687
  tjsonGetNumberValue(pJson, jkSchemaType, pNode->type, code);
840,441✔
688
  if (TSDB_CODE_SUCCESS == code) {
840,441✔
689
    tjsonGetNumberValue(pJson, jkSchemaColId, pNode->colId, code);
840,441✔
690
  }
691
  if (TSDB_CODE_SUCCESS == code) {
840,441✔
692
    tjsonGetNumberValue(pJson, jkSchemaBytes, pNode->bytes, code);
840,441✔
693
  }
694
  if (TSDB_CODE_SUCCESS == code) {
840,441✔
695
    code = tjsonGetStringValue(pJson, jkSchemaName, pNode->name);
840,441✔
696
  }
697
  if (TSDB_CODE_SUCCESS == code) {
840,441✔
698
    tjsonGetNumberValue(pJson, jkSchemaFlags, pNode->flags, code);
840,441✔
699
  }
700

701
  return code;
840,441✔
702
}
703

704
static const char* jkRefColHasRef = "HasRef";
705
static const char* jkRefColColId = "ColId";
706
static const char* jkRefColDbName = "DbName";
707
static const char* jkRefColTableName = "TableName";
708
static const char* jkRefColColName = "ColName";
709

710
static int32_t refColToJson(const void* pObj, SJson* pJson) {
×
711
  const SColRef* pCol = (const SColRef*)pObj;
×
712

713
  int32_t code = tjsonAddBoolToObject(pJson, jkRefColHasRef, pCol->hasRef);
×
714
  if (TSDB_CODE_SUCCESS == code) {
×
715
    code = tjsonAddIntegerToObject(pJson, jkRefColColId, pCol->id);
×
716
  }
717
  if (TSDB_CODE_SUCCESS == code) {
×
718
    code = tjsonAddStringToObject(pJson, jkRefColDbName, pCol->refDbName);
×
719
  }
720
  if (TSDB_CODE_SUCCESS == code) {
×
721
    code = tjsonAddStringToObject(pJson, jkRefColTableName, pCol->refTableName);
×
722
  }
723
  if (TSDB_CODE_SUCCESS == code) {
×
724
    code = tjsonAddStringToObject(pJson, jkRefColColName, pCol->refColName);
×
725
  }
726

727
  return code;
×
728
}
729

730

731
static int32_t jsonToRefCol(const SJson* pJson, void* pObj) {
×
732
  SColRef* pCol = (SColRef*)pObj;
×
733

734
  int32_t code = tjsonGetBoolValue(pJson, jkRefColHasRef, &pCol->hasRef);
×
735
  if (TSDB_CODE_SUCCESS == code) {
×
736
    code = tjsonGetSmallIntValue(pJson, jkRefColColId, &pCol->id);
×
737
  }
738
  if (TSDB_CODE_SUCCESS == code) {
×
739
    code = tjsonGetStringValue(pJson, jkRefColDbName, pCol->refDbName);
×
740
  }
741
  if (TSDB_CODE_SUCCESS == code) {
×
742
    code = tjsonGetStringValue(pJson, jkRefColTableName, pCol->refTableName);
×
743
  }
744
  if (TSDB_CODE_SUCCESS == code) {
×
745
    code = tjsonGetStringValue(pJson, jkRefColColName, pCol->refColName);
×
746
  }
747

748
  return code;
×
749
}
750

751

752
static const char* jkTableMetaVgId = "VgId";
753
static const char* jkTableMetaTableType = "TableType";
754
static const char* jkTableMetaUid = "Uid";
755
static const char* jkTableMetaSuid = "Suid";
756
static const char* jkTableMetaColRefNum = "ColRefNum";
757
static const char* jkTableMetaRefCols = "RefCols";
758
static const char* jkTableMetaSversion = "Sversion";
759
static const char* jkTableMetaTversion = "Tversion";
760
static const char* jkTableMetaRversion = "Rversion";
761
static const char* jkTableMetaComInfo = "ComInfo";
762
static const char* jkTableMetaColSchemas = "ColSchemas";
763

764
static int32_t tableMetaToJson(const void* pObj, SJson* pJson) {
100,361✔
765
  const STableMeta* pNode = (const STableMeta*)pObj;
100,361✔
766

767
  int32_t code = tjsonAddIntegerToObject(pJson, jkTableMetaVgId, pNode->vgId);
100,361✔
768
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
769
    code = tjsonAddIntegerToObject(pJson, jkTableMetaTableType, pNode->tableType);
100,361✔
770
  }
771
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
772
    code = tjsonAddIntegerToObject(pJson, jkTableMetaUid, pNode->uid);
100,361✔
773
  }
774
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
775
    code = tjsonAddIntegerToObject(pJson, jkTableMetaSuid, pNode->suid);
100,361✔
776
  }
777
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
778
    code = tjsonAddIntegerToObject(pJson, jkTableMetaColRefNum, pNode->colRef ? pNode->numOfColRefs : 0);
100,361✔
779
  }
780
  if (TSDB_CODE_SUCCESS == code && pNode->numOfColRefs > 0 && pNode->colRef) {
100,361✔
781
    code = tjsonAddArray(pJson, jkTableMetaRefCols, refColToJson, pNode->colRef, sizeof(SColRef),
×
782
                         pNode->numOfColRefs);
×
783
  }
784
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
785
    code = tjsonAddIntegerToObject(pJson, jkTableMetaSversion, pNode->sversion);
100,361✔
786
  }
787
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
788
    code = tjsonAddIntegerToObject(pJson, jkTableMetaTversion, pNode->tversion);
100,361✔
789
  }
790
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
791
    code = tjsonAddIntegerToObject(pJson, jkTableMetaRversion, pNode->rversion);
100,361✔
792
  }
793
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
794
    code = tjsonAddObject(pJson, jkTableMetaComInfo, tableComInfoToJson, &pNode->tableInfo);
100,361✔
795
  }
796
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
797
    code = tjsonAddArray(pJson, jkTableMetaColSchemas, schemaToJson, pNode->schema, sizeof(SSchema),
100,361✔
798
                         TABLE_TOTAL_COL_NUM(pNode));
100,361✔
799
  }
800

801
  return code;
100,361✔
802
}
803

804
static int32_t jsonToTableMeta(const SJson* pJson, void* pObj) {
90,544✔
805
  STableMeta* pNode = (STableMeta*)pObj;
90,544✔
806

807
  int32_t code;
808
  tjsonGetNumberValue(pJson, jkTableMetaVgId, pNode->vgId, code);
90,544✔
809
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
810
    tjsonGetNumberValue(pJson, jkTableMetaTableType, pNode->tableType, code);
90,544✔
811
  }
812
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
813
    tjsonGetNumberValue(pJson, jkTableMetaUid, pNode->uid, code);
90,544✔
814
  }
815
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
816
    tjsonGetNumberValue(pJson, jkTableMetaSuid, pNode->suid, code);
90,544✔
817
  }
818
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
819
    tjsonGetNumberValue(pJson, jkTableMetaColRefNum, pNode->numOfColRefs, code);
90,544✔
820
  }
821
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
822
    tjsonGetNumberValue(pJson, jkTableMetaSversion, pNode->sversion, code);
90,544✔
823
  }
824
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
825
    tjsonGetNumberValue(pJson, jkTableMetaTversion, pNode->tversion, code);
90,544✔
826
  }
827
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
828
    tjsonGetNumberValue(pJson, jkTableMetaRversion, pNode->rversion, code);
90,544✔
829
  }
830
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
831
    code = tjsonToObject(pJson, jkTableMetaComInfo, jsonToTableComInfo, &pNode->tableInfo);
90,544✔
832
  }
833
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
834
    code = tjsonToArray(pJson, jkTableMetaColSchemas, jsonToSchema, pNode->schema, sizeof(SSchema));
90,544✔
835
  }
836
  if (TSDB_CODE_SUCCESS == code && pNode->numOfColRefs > 0) {
90,544✔
837
    pNode->colRef = (SColRef*)((char*)(pNode + 1) + TABLE_TOTAL_COL_NUM(pNode) * sizeof(SSchema));
×
838
    code = tjsonToArray(pJson, jkTableMetaRefCols, jsonToRefCol, pNode->colRef, sizeof(SColRef));
×
839
  }
840

841
  return code;
90,544✔
842
}
843

844
static const char* jkLogicPlanTargets = "Targets";
845
static const char* jkLogicPlanConditions = "Conditions";
846
static const char* jkLogicPlanChildren = "Children";
847
static const char* jkLogicPlanLimit = "Limit";
848
static const char* jkLogicPlanSlimit = "SLimit";
849
static const char* jkLogicPlanRequireDataOrder = "RequireDataOrder";
850
static const char* jkLogicPlanResultDataOrder = "ResultDataOrder";
851
static const char* jkLogicPlanGroupAction = "GroupAction";
852

853
static int32_t logicPlanNodeToJson(const void* pObj, SJson* pJson) {
175,200✔
854
  const SLogicNode* pNode = (const SLogicNode*)pObj;
175,200✔
855

856
  int32_t code = nodeListToJson(pJson, jkLogicPlanTargets, pNode->pTargets);
175,200✔
857
  if (TSDB_CODE_SUCCESS == code) {
175,200✔
858
    code = tjsonAddObject(pJson, jkLogicPlanConditions, nodeToJson, pNode->pConditions);
175,200✔
859
  }
860
  if (TSDB_CODE_SUCCESS == code) {
175,200✔
861
    code = nodeListToJson(pJson, jkLogicPlanChildren, pNode->pChildren);
175,200✔
862
  }
863
  if (TSDB_CODE_SUCCESS == code) {
175,200✔
864
    code = tjsonAddObject(pJson, jkLogicPlanLimit, nodeToJson, pNode->pLimit);
175,200✔
865
  }
866
  if (TSDB_CODE_SUCCESS == code) {
175,200✔
867
    code = tjsonAddObject(pJson, jkLogicPlanSlimit, nodeToJson, pNode->pSlimit);
175,200✔
868
  }
869
  if (TSDB_CODE_SUCCESS == code) {
175,200✔
870
    code = tjsonAddIntegerToObject(pJson, jkLogicPlanRequireDataOrder, pNode->requireDataOrder);
175,200✔
871
  }
872
  if (TSDB_CODE_SUCCESS == code) {
175,200✔
873
    code = tjsonAddIntegerToObject(pJson, jkLogicPlanResultDataOrder, pNode->resultDataOrder);
175,200✔
874
  }
875
  if (TSDB_CODE_SUCCESS == code) {
175,200✔
876
    code = tjsonAddIntegerToObject(pJson, jkLogicPlanGroupAction, pNode->groupAction);
175,200✔
877
  }
878

879
  return code;
175,200✔
880
}
881

882
static int32_t jsonToLogicPlanNode(const SJson* pJson, void* pObj) {
×
883
  SLogicNode* pNode = (SLogicNode*)pObj;
×
884

885
  int32_t code = jsonToNodeList(pJson, jkLogicPlanTargets, &pNode->pTargets);
×
886
  if (TSDB_CODE_SUCCESS == code) {
×
887
    code = jsonToNodeObject(pJson, jkLogicPlanConditions, &pNode->pConditions);
×
888
  }
889
  if (TSDB_CODE_SUCCESS == code) {
×
890
    code = jsonToNodeList(pJson, jkLogicPlanChildren, &pNode->pChildren);
×
891
  }
892
  if (TSDB_CODE_SUCCESS == code) {
×
893
    code = jsonToNodeObject(pJson, jkLogicPlanLimit, &pNode->pLimit);
×
894
  }
895
  if (TSDB_CODE_SUCCESS == code) {
×
896
    code = jsonToNodeObject(pJson, jkLogicPlanSlimit, &pNode->pSlimit);
×
897
  }
898
  if (TSDB_CODE_SUCCESS == code) {
×
899
    tjsonGetNumberValue(pJson, jkLogicPlanRequireDataOrder, pNode->requireDataOrder, code);
×
900
  }
901
  if (TSDB_CODE_SUCCESS == code) {
×
902
    tjsonGetNumberValue(pJson, jkLogicPlanResultDataOrder, pNode->resultDataOrder, code);
×
903
  }
904
  if (TSDB_CODE_SUCCESS == code) {
×
905
    tjsonGetNumberValue(pJson, jkLogicPlanGroupAction, pNode->groupAction, code);
×
906
  }
907

908
  return code;
×
909
}
910

911
static const char* jkScanLogicPlanScanCols = "ScanCols";
912
static const char* jkScanLogicPlanScanPseudoCols = "ScanPseudoCols";
913
static const char* jkScanLogicPlanTableType = "TableType";
914
static const char* jkScanLogicPlanTableId = "TableId";
915
static const char* jkScanLogicPlanStableId = "StableId";
916
static const char* jkScanLogicPlanScanType = "ScanType";
917
static const char* jkScanLogicPlanScanCount = "ScanCount";
918
static const char* jkScanLogicPlanReverseScanCount = "ReverseScanCount";
919
static const char* jkScanLogicPlanDynamicScanFuncs = "DynamicScanFuncs";
920
static const char* jkScanLogicPlanDataRequired = "DataRequired";
921
static const char* jkScanLogicPlanTagCond = "TagCond";
922
static const char* jkScanLogicPlanGroupTags = "GroupTags";
923
static const char* jkScanLogicPlanOnlyMetaCtbIdx = "OnlyMetaCtbIdx";
924
static const char* jkScanLogicPlanFilesetDelimited = "FilesetDelimited";
925
static const char* jkScanLogicPlanParaTablesSort = "ParaTablesSort";
926
static const char* jkScanLogicPlanSmallDataTsSort = "SmallDataTsSort";
927

928
static int32_t logicScanNodeToJson(const void* pObj, SJson* pJson) {
109,500✔
929
  const SScanLogicNode* pNode = (const SScanLogicNode*)pObj;
109,500✔
930

931
  int32_t code = logicPlanNodeToJson(pObj, pJson);
109,500✔
932
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
933
    code = nodeListToJson(pJson, jkScanLogicPlanScanCols, pNode->pScanCols);
109,500✔
934
  }
935
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
936
    code = nodeListToJson(pJson, jkScanLogicPlanScanPseudoCols, pNode->pScanPseudoCols);
109,500✔
937
  }
938
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
939
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanTableType, pNode->tableType);
109,500✔
940
  }
941
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
942
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanTableId, pNode->tableId);
109,500✔
943
  }
944
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
945
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanStableId, pNode->stableId);
109,500✔
946
  }
947
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
948
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanScanType, pNode->scanType);
109,500✔
949
  }
950
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
951
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanScanCount, pNode->scanSeq[0]);
109,500✔
952
  }
953
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
954
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanReverseScanCount, pNode->scanSeq[1]);
109,500✔
955
  }
956
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
957
    code = tjsonAddObject(pJson, jkScanLogicPlanDynamicScanFuncs, nodeToJson, pNode->pDynamicScanFuncs);
109,500✔
958
  }
959
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
960
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanDataRequired, pNode->dataRequired);
109,500✔
961
  }
962
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
963
    code = tjsonAddObject(pJson, jkScanLogicPlanTagCond, nodeToJson, pNode->pTagCond);
109,500✔
964
  }
965
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
966
    code = nodeListToJson(pJson, jkScanLogicPlanGroupTags, pNode->pGroupTags);
109,500✔
967
  }
968
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
969
    code = tjsonAddBoolToObject(pJson, jkScanLogicPlanOnlyMetaCtbIdx, pNode->onlyMetaCtbIdx);
109,500✔
970
  }
971
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
972
    code = tjsonAddBoolToObject(pJson, jkScanLogicPlanFilesetDelimited, pNode->filesetDelimited);
109,500✔
973
  }
974
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
975
    code = tjsonAddBoolToObject(pJson, jkScanLogicPlanParaTablesSort, pNode->paraTablesSort);
109,500✔
976
  }
977
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
978
    code = tjsonAddBoolToObject(pJson, jkScanLogicPlanSmallDataTsSort, pNode->paraTablesSort);
109,500✔
979
  }
980
  return code;
109,500✔
981
}
982

983
static int32_t jsonToLogicScanNode(const SJson* pJson, void* pObj) {
×
984
  SScanLogicNode* pNode = (SScanLogicNode*)pObj;
×
985

986
  int32_t objSize = 0;
×
987
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
988
  if (TSDB_CODE_SUCCESS == code) {
×
989
    code = jsonToNodeList(pJson, jkScanLogicPlanScanCols, &pNode->pScanCols);
×
990
  }
991
  if (TSDB_CODE_SUCCESS == code) {
×
992
    code = jsonToNodeList(pJson, jkScanLogicPlanScanPseudoCols, &pNode->pScanPseudoCols);
×
993
  }
994
  if (TSDB_CODE_SUCCESS == code) {
×
995
    code = tjsonGetTinyIntValue(pJson, jkScanLogicPlanTableType, &pNode->tableType);
×
996
  }
997
  if (TSDB_CODE_SUCCESS == code) {
×
998
    code = tjsonGetUBigIntValue(pJson, jkScanLogicPlanTableId, &pNode->tableId);
×
999
  }
1000
  if (TSDB_CODE_SUCCESS == code) {
×
1001
    code = tjsonGetUBigIntValue(pJson, jkScanLogicPlanStableId, &pNode->stableId);
×
1002
  }
1003
  if (TSDB_CODE_SUCCESS == code) {
×
1004
    tjsonGetNumberValue(pJson, jkScanLogicPlanScanType, pNode->scanType, code);
×
1005
  }
1006
  if (TSDB_CODE_SUCCESS == code) {
×
1007
    code = tjsonGetUTinyIntValue(pJson, jkScanLogicPlanScanCount, &pNode->scanSeq[0]);
×
1008
  }
1009
  if (TSDB_CODE_SUCCESS == code) {
×
1010
    code = tjsonGetUTinyIntValue(pJson, jkScanLogicPlanReverseScanCount, &pNode->scanSeq[1]);
×
1011
  }
1012
  if (TSDB_CODE_SUCCESS == code) {
×
1013
    code = jsonToNodeList(pJson, jkScanLogicPlanDynamicScanFuncs, &pNode->pDynamicScanFuncs);
×
1014
  }
1015
  if (TSDB_CODE_SUCCESS == code) {
×
1016
    code = tjsonGetIntValue(pJson, jkScanLogicPlanDataRequired, &pNode->dataRequired);
×
1017
  }
1018
  if (TSDB_CODE_SUCCESS == code) {
×
1019
    code = jsonToNodeObject(pJson, jkScanLogicPlanTagCond, &pNode->pTagCond);
×
1020
  }
1021
  if (TSDB_CODE_SUCCESS == code) {
×
1022
    code = jsonToNodeList(pJson, jkScanLogicPlanGroupTags, &pNode->pGroupTags);
×
1023
  }
1024
  if (TSDB_CODE_SUCCESS == code) {
×
1025
    code = tjsonGetBoolValue(pJson, jkScanLogicPlanOnlyMetaCtbIdx, &pNode->onlyMetaCtbIdx);
×
1026
  }
1027
  if (TSDB_CODE_SUCCESS == code) {
×
1028
    code = tjsonGetBoolValue(pJson, jkScanLogicPlanFilesetDelimited, &pNode->filesetDelimited);
×
1029
  }
1030
  if (TSDB_CODE_SUCCESS == code) {
×
1031
    code = tjsonGetBoolValue(pJson, jkScanLogicPlanParaTablesSort, &pNode->smallDataTsSort);
×
1032
  }
1033
  if (TSDB_CODE_SUCCESS == code) {
×
1034
    code = tjsonGetBoolValue(pJson, jkScanLogicPlanSmallDataTsSort, &pNode->smallDataTsSort);
×
1035
  }
1036
  return code;
×
1037
}
1038

1039
static const char* jkProjectLogicPlanProjections = "Projections";
1040
static const char* jkProjectLogicPlanIgnoreGroupId = "IgnoreGroupId";
1041
static const char* jkProjectLogicPlanInputIgnoreGroup = "InputIgnoreGroup";
1042

1043
static int32_t logicProjectNodeToJson(const void* pObj, SJson* pJson) {
65,700✔
1044
  const SProjectLogicNode* pNode = (const SProjectLogicNode*)pObj;
65,700✔
1045

1046
  int32_t code = logicPlanNodeToJson(pObj, pJson);
65,700✔
1047
  if (TSDB_CODE_SUCCESS == code) {
65,700✔
1048
    code = nodeListToJson(pJson, jkProjectLogicPlanProjections, pNode->pProjections);
65,700✔
1049
  }
1050
  if (TSDB_CODE_SUCCESS == code) {
65,700✔
1051
    code = tjsonAddBoolToObject(pJson, jkProjectLogicPlanIgnoreGroupId, pNode->ignoreGroupId);
65,700✔
1052
  }
1053
  if (TSDB_CODE_SUCCESS == code) {
65,700✔
1054
    code = tjsonAddBoolToObject(pJson, jkProjectLogicPlanInputIgnoreGroup, pNode->inputIgnoreGroup);
65,700✔
1055
  }
1056

1057
  return code;
65,700✔
1058
}
1059

1060
static int32_t jsonToLogicProjectNode(const SJson* pJson, void* pObj) {
×
1061
  SProjectLogicNode* pNode = (SProjectLogicNode*)pObj;
×
1062

1063
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1064
  if (TSDB_CODE_SUCCESS == code) {
×
1065
    code = jsonToNodeList(pJson, jkProjectLogicPlanProjections, &pNode->pProjections);
×
1066
  }
1067
  if (TSDB_CODE_SUCCESS == code) {
×
1068
    code = tjsonGetBoolValue(pJson, jkProjectLogicPlanIgnoreGroupId, &pNode->ignoreGroupId);
×
1069
  }
1070
  if (TSDB_CODE_SUCCESS == code) {
×
1071
    code = tjsonGetBoolValue(pJson, jkProjectLogicPlanInputIgnoreGroup, &pNode->inputIgnoreGroup);
×
1072
  }
1073
  return code;
×
1074
}
1075

1076
static const char* jkVnodeModifyLogicPlanModifyType = "ModifyType";
1077
static const char* jkVnodeModifyLogicPlanMsgType = "MsgType";
1078
static const char* jkVnodeModifyLogicPlanAffectedRows = "AffectedRows";
1079

1080
static int32_t logicVnodeModifyNodeToJson(const void* pObj, SJson* pJson) {
×
1081
  const SVnodeModifyLogicNode* pNode = (const SVnodeModifyLogicNode*)pObj;
×
1082

1083
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1084
  if (TSDB_CODE_SUCCESS == code) {
×
1085
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyLogicPlanModifyType, pNode->modifyType);
×
1086
  }
1087
  if (TSDB_CODE_SUCCESS == code) {
×
1088
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyLogicPlanMsgType, pNode->msgType);
×
1089
  }
1090
  if (TSDB_CODE_SUCCESS == code) {
×
1091
    code = tjsonAddObject(pJson, jkVnodeModifyLogicPlanAffectedRows, nodeToJson, pNode->pAffectedRows);
×
1092
  }
1093

1094
  return code;
×
1095
}
1096

1097
static int32_t jsonToLogicVnodeModifyNode(const SJson* pJson, void* pObj) {
×
1098
  SVnodeModifyLogicNode* pNode = (SVnodeModifyLogicNode*)pObj;
×
1099

1100
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1101
  if (TSDB_CODE_SUCCESS == code) {
×
1102
    tjsonGetNumberValue(pJson, jkVnodeModifyLogicPlanModifyType, pNode->modifyType, code);
×
1103
  }
1104
  if (TSDB_CODE_SUCCESS == code) {
×
1105
    code = tjsonGetIntValue(pJson, jkVnodeModifyLogicPlanMsgType, &pNode->msgType);
×
1106
  }
1107
  if (TSDB_CODE_SUCCESS == code) {
×
1108
    code = jsonToNodeObject(pJson, jkVnodeModifyLogicPlanAffectedRows, &pNode->pAffectedRows);
×
1109
  }
1110

1111
  return code;
×
1112
}
1113

1114
static const char* jkExchangeLogicPlanSrcStartGroupId = "SrcStartGroupId";
1115
static const char* jkExchangeLogicPlanSrcEndGroupId = "SrcEndGroupId";
1116

1117
static int32_t logicExchangeNodeToJson(const void* pObj, SJson* pJson) {
×
1118
  const SExchangeLogicNode* pNode = (const SExchangeLogicNode*)pObj;
×
1119

1120
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1121
  if (TSDB_CODE_SUCCESS == code) {
×
1122
    code = tjsonAddIntegerToObject(pJson, jkExchangeLogicPlanSrcStartGroupId, pNode->srcStartGroupId);
×
1123
  }
1124
  if (TSDB_CODE_SUCCESS == code) {
×
1125
    code = tjsonAddIntegerToObject(pJson, jkExchangeLogicPlanSrcEndGroupId, pNode->srcEndGroupId);
×
1126
  }
1127

1128
  return code;
×
1129
}
1130

1131
static int32_t jsonToLogicExchangeNode(const SJson* pJson, void* pObj) {
×
1132
  SExchangeLogicNode* pNode = (SExchangeLogicNode*)pObj;
×
1133

1134
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1135
  if (TSDB_CODE_SUCCESS == code) {
×
1136
    code = tjsonGetIntValue(pJson, jkExchangeLogicPlanSrcStartGroupId, &pNode->srcStartGroupId);
×
1137
  }
1138
  if (TSDB_CODE_SUCCESS == code) {
×
1139
    code = tjsonGetIntValue(pJson, jkExchangeLogicPlanSrcEndGroupId, &pNode->srcEndGroupId);
×
1140
  }
1141

1142
  return code;
×
1143
}
1144

1145
static const char* jkMergeLogicPlanMergeKeys = "MergeKeys";
1146
static const char* jkMergeLogicPlanInputs = "Inputs";
1147
static const char* jkMergeLogicPlanNumOfChannels = "NumOfChannels";
1148
static const char* jkMergeLogicPlanSrcGroupId = "SrcGroupId";
1149
static const char* jkMergeLogicPlanSrcEndGroupId = "SrcEndGroupId";
1150

1151
static int32_t logicMergeNodeToJson(const void* pObj, SJson* pJson) {
×
1152
  const SMergeLogicNode* pNode = (const SMergeLogicNode*)pObj;
×
1153

1154
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1155
  if (TSDB_CODE_SUCCESS == code) {
×
1156
    code = nodeListToJson(pJson, jkMergeLogicPlanMergeKeys, pNode->pMergeKeys);
×
1157
  }
1158
  if (TSDB_CODE_SUCCESS == code) {
×
1159
    code = nodeListToJson(pJson, jkMergeLogicPlanInputs, pNode->pInputs);
×
1160
  }
1161
  if (TSDB_CODE_SUCCESS == code) {
×
1162
    code = tjsonAddIntegerToObject(pJson, jkMergeLogicPlanNumOfChannels, pNode->numOfChannels);
×
1163
  }
1164
  if (TSDB_CODE_SUCCESS == code) {
×
1165
    code = tjsonAddIntegerToObject(pJson, jkMergeLogicPlanSrcGroupId, pNode->srcGroupId);
×
1166
  }
1167
  if (TSDB_CODE_SUCCESS == code) {
×
1168
    code = tjsonAddIntegerToObject(pJson, jkMergeLogicPlanSrcEndGroupId, pNode->srcEndGroupId);
×
1169
  }
1170
  return code;
×
1171
}
1172

1173
static int32_t jsonToLogicMergeNode(const SJson* pJson, void* pObj) {
×
1174
  SMergeLogicNode* pNode = (SMergeLogicNode*)pObj;
×
1175

1176
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1177
  if (TSDB_CODE_SUCCESS == code) {
×
1178
    code = jsonToNodeList(pJson, jkMergeLogicPlanMergeKeys, &pNode->pMergeKeys);
×
1179
  }
1180
  if (TSDB_CODE_SUCCESS == code) {
×
1181
    code = jsonToNodeList(pJson, jkMergeLogicPlanInputs, &pNode->pInputs);
×
1182
  }
1183
  if (TSDB_CODE_SUCCESS == code) {
×
1184
    code = tjsonGetIntValue(pJson, jkMergeLogicPlanNumOfChannels, &pNode->numOfChannels);
×
1185
  }
1186
  if (TSDB_CODE_SUCCESS == code) {
×
1187
    code = tjsonGetIntValue(pJson, jkMergeLogicPlanSrcGroupId, &pNode->srcGroupId);
×
1188
  }
1189
  if (TSDB_CODE_SUCCESS == code) {
×
1190
    code = tjsonGetIntValue(pJson, jkMergeLogicPlanSrcEndGroupId, &pNode->srcEndGroupId);
×
1191
  }
1192
  return code;
×
1193
}
1194

1195
static const char* jkWindowLogicPlanWinType = "WinType";
1196
static const char* jkWindowLogicPlanFuncs = "Funcs";
1197
static const char* jkWindowLogicPlanInterval = "Interval";
1198
static const char* jkWindowLogicPlanOffset = "Offset";
1199
static const char* jkWindowLogicPlanSliding = "Sliding";
1200
static const char* jkWindowLogicPlanIntervalUnit = "IntervalUnit";
1201
static const char* jkWindowLogicPlanSlidingUnit = "SlidingUnit";
1202
static const char* jkWindowLogicPlanStartTime = "StartTime";
1203
static const char* jkWindowLogicPlanEndTime = "EndTime";
1204
static const char* jkWindowLogicPlanSessionGap = "SessionGap";
1205
static const char* jkWindowLogicPlanTspk = "Tspk";
1206
static const char* jkWindowLogicPlanStateExpr = "StateExpr";
1207
static const char* jkWindowLogicPlanIndefRowsFunc = "IndefRowsFunc";
1208
static const char* jkWindowLogicPlanTimeRangeExpr = "TimeRangeExpr";
1209

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

1213
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1214
  if (TSDB_CODE_SUCCESS == code) {
×
1215
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanWinType, pNode->winType);
×
1216
  }
1217
  if (TSDB_CODE_SUCCESS == code) {
×
1218
    code = nodeListToJson(pJson, jkWindowLogicPlanFuncs, pNode->pFuncs);
×
1219
  }
1220
  if (TSDB_CODE_SUCCESS == code) {
×
1221
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanInterval, pNode->interval);
×
1222
  }
1223
  if (TSDB_CODE_SUCCESS == code) {
×
1224
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanOffset, pNode->offset);
×
1225
  }
1226
  if (TSDB_CODE_SUCCESS == code) {
×
1227
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanSliding, pNode->sliding);
×
1228
  }
1229
  if (TSDB_CODE_SUCCESS == code) {
×
1230
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanIntervalUnit, pNode->intervalUnit);
×
1231
  }
1232
  if (TSDB_CODE_SUCCESS == code) {
×
1233
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanSlidingUnit, pNode->slidingUnit);
×
1234
  }
1235
  if (TSDB_CODE_SUCCESS == code) {
×
1236
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanStartTime, pNode->timeRange.skey);
×
1237
  }
1238
  if (TSDB_CODE_SUCCESS == code) {
×
1239
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanEndTime, pNode->timeRange.ekey);
×
1240
  }
1241
  if (TSDB_CODE_SUCCESS == code) {
×
1242
    code = tjsonAddObject(pJson, jkWindowLogicPlanTimeRangeExpr, nodeToJson, pNode->pTimeRange);
×
1243
  }
1244
  if (TSDB_CODE_SUCCESS == code) {
×
1245
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanSessionGap, pNode->sessionGap);
×
1246
  }
1247
  if (TSDB_CODE_SUCCESS == code) {
×
1248
    code = tjsonAddObject(pJson, jkWindowLogicPlanTspk, nodeToJson, pNode->pTspk);
×
1249
  }
1250
  if (TSDB_CODE_SUCCESS == code) {
×
1251
    code = tjsonAddObject(pJson, jkWindowLogicPlanStateExpr, nodeToJson, pNode->pStateExpr);
×
1252
  }
1253
  if (TSDB_CODE_SUCCESS == code) {
×
1254
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanIndefRowsFunc, pNode->indefRowsFunc);
×
1255
  }
1256

1257
  return code;
×
1258
}
1259

1260
static int32_t jsonToLogicWindowNode(const SJson* pJson, void* pObj) {
×
1261
  SWindowLogicNode* pNode = (SWindowLogicNode*)pObj;
×
1262

1263
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1264
  if (TSDB_CODE_SUCCESS == code) {
×
1265
    tjsonGetNumberValue(pJson, jkWindowLogicPlanWinType, pNode->winType, code);
×
1266
  }
1267
  if (TSDB_CODE_SUCCESS == code) {
×
1268
    code = jsonToNodeList(pJson, jkWindowLogicPlanFuncs, &pNode->pFuncs);
×
1269
  }
1270
  if (TSDB_CODE_SUCCESS == code) {
×
1271
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanInterval, &pNode->interval);
×
1272
  }
1273
  if (TSDB_CODE_SUCCESS == code) {
×
1274
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanOffset, &pNode->offset);
×
1275
  }
1276
  if (TSDB_CODE_SUCCESS == code) {
×
1277
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanSliding, &pNode->sliding);
×
1278
  }
1279
  if (TSDB_CODE_SUCCESS == code) {
×
1280
    code = tjsonGetTinyIntValue(pJson, jkWindowLogicPlanIntervalUnit, &pNode->intervalUnit);
×
1281
  }
1282
  if (TSDB_CODE_SUCCESS == code) {
×
1283
    code = tjsonGetTinyIntValue(pJson, jkWindowLogicPlanSlidingUnit, &pNode->slidingUnit);
×
1284
  }
1285
  if (TSDB_CODE_SUCCESS == code) {
×
1286
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanStartTime, &pNode->timeRange.skey);
×
1287
  }
1288
  if (TSDB_CODE_SUCCESS == code) {
×
1289
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanEndTime, &pNode->timeRange.ekey);
×
1290
  }
1291
  if (TSDB_CODE_SUCCESS == code) {
×
1292
    code = jsonToNodeObject(pJson, jkWindowLogicPlanTimeRangeExpr, &pNode->pTimeRange);
×
1293
  }
1294
  if (TSDB_CODE_SUCCESS == code) {
×
1295
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanSessionGap, &pNode->sessionGap);
×
1296
  }
1297
  if (TSDB_CODE_SUCCESS == code) {
×
1298
    code = jsonToNodeObject(pJson, jkWindowLogicPlanTspk, &pNode->pTspk);
×
1299
  }
1300
  if (TSDB_CODE_SUCCESS == code) {
×
1301
    code = jsonToNodeObject(pJson, jkWindowLogicPlanStateExpr, &pNode->pStateExpr);
×
1302
  }
1303
  if (TSDB_CODE_SUCCESS == code) {
×
1304
    code = tjsonGetTinyIntValue(pJson, jkWindowLogicPlanIndefRowsFunc, &pNode->indefRowsFunc);
×
1305
  }
1306

1307
  return code;
×
1308
}
1309

1310
static const char* jkFillLogicPlanMode = "Mode";
1311
static const char* jkFillLogicPlanWStartTs = "WStartTs";
1312
static const char* jkFillLogicPlanValues = "Values";
1313
static const char* jkFillLogicPlanStartTime = "StartTime";
1314
static const char* jkFillLogicPlanEndTime = "EndTime";
1315

1316
static int32_t logicFillNodeToJson(const void* pObj, SJson* pJson) {
×
1317
  const SFillLogicNode* pNode = (const SFillLogicNode*)pObj;
×
1318

1319
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1320
  if (TSDB_CODE_SUCCESS == code) {
×
1321
    code = tjsonAddIntegerToObject(pJson, jkFillLogicPlanMode, pNode->mode);
×
1322
  }
1323
  if (TSDB_CODE_SUCCESS == code) {
×
1324
    code = tjsonAddObject(pJson, jkFillLogicPlanWStartTs, nodeToJson, pNode->pWStartTs);
×
1325
  }
1326
  if (TSDB_CODE_SUCCESS == code) {
×
1327
    code = tjsonAddObject(pJson, jkFillLogicPlanValues, nodeToJson, pNode->pValues);
×
1328
  }
1329
  if (TSDB_CODE_SUCCESS == code) {
×
1330
    code = tjsonAddIntegerToObject(pJson, jkFillLogicPlanStartTime, pNode->timeRange.skey);
×
1331
  }
1332
  if (TSDB_CODE_SUCCESS == code) {
×
1333
    code = tjsonAddIntegerToObject(pJson, jkFillLogicPlanEndTime, pNode->timeRange.ekey);
×
1334
  }
1335

1336
  return code;
×
1337
}
1338

1339
static int32_t jsonToLogicFillNode(const SJson* pJson, void* pObj) {
×
1340
  SFillLogicNode* pNode = (SFillLogicNode*)pObj;
×
1341

1342
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1343
  if (TSDB_CODE_SUCCESS == code) {
×
1344
    tjsonGetNumberValue(pJson, jkFillLogicPlanMode, pNode->mode, code);
×
1345
  }
1346
  if (TSDB_CODE_SUCCESS == code) {
×
1347
    code = jsonToNodeObject(pJson, jkFillLogicPlanWStartTs, &pNode->pWStartTs);
×
1348
  }
1349
  if (TSDB_CODE_SUCCESS == code) {
×
1350
    code = jsonToNodeObject(pJson, jkFillLogicPlanValues, &pNode->pValues);
×
1351
  }
1352
  if (TSDB_CODE_SUCCESS == code) {
×
1353
    code = tjsonGetBigIntValue(pJson, jkFillLogicPlanStartTime, &pNode->timeRange.skey);
×
1354
  }
1355
  if (TSDB_CODE_SUCCESS == code) {
×
1356
    code = tjsonGetBigIntValue(pJson, jkFillLogicPlanEndTime, &pNode->timeRange.ekey);
×
1357
  }
1358

1359
  return code;
×
1360
}
1361

1362
static const char* jkSortLogicPlanSortKeys = "SortKeys";
1363

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

1367
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1368
  if (TSDB_CODE_SUCCESS == code) {
×
1369
    code = nodeListToJson(pJson, jkSortLogicPlanSortKeys, pNode->pSortKeys);
×
1370
  }
1371

1372
  return code;
×
1373
}
1374

1375
static int32_t jsonToLogicSortNode(const SJson* pJson, void* pObj) {
×
1376
  SSortLogicNode* pNode = (SSortLogicNode*)pObj;
×
1377

1378
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1379
  if (TSDB_CODE_SUCCESS == code) {
×
1380
    code = jsonToNodeList(pJson, jkSortLogicPlanSortKeys, &pNode->pSortKeys);
×
1381
  }
1382

1383
  return code;
×
1384
}
1385

1386
static const char* jkPartitionLogicPlanPartitionKeys = "PartitionKeys";
1387

1388
static int32_t logicPartitionNodeToJson(const void* pObj, SJson* pJson) {
×
1389
  const SPartitionLogicNode* pNode = (const SPartitionLogicNode*)pObj;
×
1390

1391
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1392
  if (TSDB_CODE_SUCCESS == code) {
×
1393
    code = nodeListToJson(pJson, jkPartitionLogicPlanPartitionKeys, pNode->pPartitionKeys);
×
1394
  }
1395

1396
  return code;
×
1397
}
1398

1399
static int32_t jsonToLogicPartitionNode(const SJson* pJson, void* pObj) {
×
1400
  SPartitionLogicNode* pNode = (SPartitionLogicNode*)pObj;
×
1401

1402
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1403
  if (TSDB_CODE_SUCCESS == code) {
×
1404
    code = jsonToNodeList(pJson, jkPartitionLogicPlanPartitionKeys, &pNode->pPartitionKeys);
×
1405
  }
1406

1407
  return code;
×
1408
}
1409

1410
static const char* jkIndefRowsFuncLogicPlanFuncs = "Funcs";
1411

1412
static int32_t logicIndefRowsFuncNodeToJson(const void* pObj, SJson* pJson) {
×
1413
  const SIndefRowsFuncLogicNode* pNode = (const SIndefRowsFuncLogicNode*)pObj;
×
1414

1415
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1416
  if (TSDB_CODE_SUCCESS == code) {
×
1417
    code = nodeListToJson(pJson, jkIndefRowsFuncLogicPlanFuncs, pNode->pFuncs);
×
1418
  }
1419

1420
  return code;
×
1421
}
1422

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

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

1431
  return code;
×
1432
}
1433

1434
static const char* jkInterpFuncLogicPlanFuncs = "Funcs";
1435
static const char* jkInterpFuncLogicPlanStartTime = "StartTime";
1436
static const char* jkInterpFuncLogicPlanEndTime = "EndTime";
1437
static const char* jkInterpFuncLogicPlanInterval = "Interval";
1438
static const char* jkInterpFuncLogicPlanIntervalUnit = "IntervalUnit";
1439
static const char* jkInterpFuncLogicPlanPrecision = "Precision";
1440
static const char* jkInterpFuncLogicPlanFillMode = "fillMode";
1441
static const char* jkInterpFuncLogicPlanFillValues = "FillValues";
1442
static const char* jkInterpFuncLogicPlanTimeSeries = "TimeSeries";
1443
static const char* jkInterpFuncLogicPlanRangeInterval = "RangeInterval";
1444
static const char* jkInterpFuncLogicPlanRangeIntervalUnit = "RangeIntervalUnit";
1445

1446
static int32_t logicInterpFuncNodeToJson(const void* pObj, SJson* pJson) {
×
1447
  const SInterpFuncLogicNode* pNode = (const SInterpFuncLogicNode*)pObj;
×
1448

1449
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1450
  if (TSDB_CODE_SUCCESS == code) {
×
1451
    code = nodeListToJson(pJson, jkInterpFuncLogicPlanFuncs, pNode->pFuncs);
×
1452
  }
1453
  if (TSDB_CODE_SUCCESS == code) {
×
1454
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanStartTime, pNode->timeRange.skey);
×
1455
  }
1456
  if (TSDB_CODE_SUCCESS == code) {
×
1457
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanEndTime, pNode->timeRange.ekey);
×
1458
  }
1459
  if (TSDB_CODE_SUCCESS == code) {
×
1460
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanInterval, pNode->interval);
×
1461
  }
1462
  if (TSDB_CODE_SUCCESS == code) {
×
1463
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanIntervalUnit, pNode->intervalUnit);
×
1464
  }
1465
  if (TSDB_CODE_SUCCESS == code) {
×
1466
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanPrecision, pNode->precision);
×
1467
  }
1468
  if (TSDB_CODE_SUCCESS == code) {
×
1469
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanFillMode, pNode->fillMode);
×
1470
  }
1471
  if (TSDB_CODE_SUCCESS == code) {
×
1472
    code = tjsonAddObject(pJson, jkInterpFuncLogicPlanFillValues, nodeToJson, pNode->pFillValues);
×
1473
  }
1474
  if (TSDB_CODE_SUCCESS == code) {
×
1475
    code = tjsonAddObject(pJson, jkInterpFuncLogicPlanTimeSeries, nodeToJson, pNode->pTimeSeries);
×
1476
  }
1477
  if (TSDB_CODE_SUCCESS == code) {
×
1478
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanRangeInterval, pNode->rangeInterval);
×
1479
  }
1480
  if (TSDB_CODE_SUCCESS == code) {
×
1481
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanRangeIntervalUnit, pNode->rangeIntervalUnit);
×
1482
  }
1483

1484
  return code;
×
1485
}
1486

1487
static int32_t jsonToLogicInterpFuncNode(const SJson* pJson, void* pObj) {
×
1488
  SInterpFuncLogicNode* pNode = (SInterpFuncLogicNode*)pObj;
×
1489

1490
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1491
  if (TSDB_CODE_SUCCESS == code) {
×
1492
    code = jsonToNodeList(pJson, jkInterpFuncLogicPlanFuncs, &pNode->pFuncs);
×
1493
  }
1494
  if (TSDB_CODE_SUCCESS == code) {
×
1495
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanStartTime, &pNode->timeRange.skey);
×
1496
  }
1497
  if (TSDB_CODE_SUCCESS == code) {
×
1498
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanEndTime, &pNode->timeRange.ekey);
×
1499
  }
1500
  if (TSDB_CODE_SUCCESS == code) {
×
1501
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanInterval, &pNode->interval);
×
1502
  }
1503
  if (TSDB_CODE_SUCCESS == code) {
×
1504
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanIntervalUnit, &pNode->intervalUnit);
×
1505
  }
1506
  if (TSDB_CODE_SUCCESS == code) {
×
1507
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanPrecision, &pNode->precision);
×
1508
  }
1509
  if (TSDB_CODE_SUCCESS == code) {
×
1510
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanFillMode, (int8_t*)&pNode->fillMode);
×
1511
  }
1512
  if (TSDB_CODE_SUCCESS == code) {
×
1513
    code = tjsonToObject(pJson, jkInterpFuncLogicPlanFillValues, jsonToNode, pNode->pFillValues);
×
1514
  }
1515
  if (TSDB_CODE_SUCCESS == code) {
×
1516
    code = jsonToNodeObject(pJson, jkInterpFuncLogicPlanTimeSeries, &pNode->pTimeSeries);
×
1517
  }
1518
  if (TSDB_CODE_SUCCESS == code) {
×
1519
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanRangeInterval, &pNode->rangeInterval);
×
1520
  }
1521
  if (TSDB_CODE_SUCCESS == code) {
×
1522
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanRangeIntervalUnit, &pNode->rangeIntervalUnit);
×
1523
  }
1524

1525
  return code;
×
1526
}
1527

1528
static const char* jkForecastFuncLogicPlanFuncs = "Funcs";
1529
static const char* jkImputationFuncLogicPlanFuncs = "Funcs";
1530

1531
static int32_t logicForecastFuncNodeToJson(const void* pObj, SJson* pJson) {
×
1532
  const SForecastFuncLogicNode* pNode = (const SForecastFuncLogicNode*)pObj;
×
1533

1534
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1535
  if (TSDB_CODE_SUCCESS == code) {
×
1536
    code = nodeListToJson(pJson, jkForecastFuncLogicPlanFuncs, pNode->pFuncs);
×
1537
  }
1538

1539
  return code;
×
1540
}
1541

1542
static int32_t jsonToLogicForecastFuncNode(const SJson* pJson, void* pObj) {
×
1543
  SForecastFuncLogicNode* pNode = (SForecastFuncLogicNode*)pObj;
×
1544

1545
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1546
  if (TSDB_CODE_SUCCESS == code) {
×
1547
    code = jsonToNodeList(pJson, jkForecastFuncLogicPlanFuncs, &pNode->pFuncs);
×
1548
  }
1549

1550
  return code;
×
1551
}
1552

1553
static int32_t logicImputationFuncNodeToJson(const void* pObj, SJson* pJson) {
×
1554
  const SGenericAnalysisLogicNode* pNode = (const SGenericAnalysisLogicNode*)pObj;
×
1555

1556
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1557
  if (TSDB_CODE_SUCCESS == code) {
×
1558
    code = nodeListToJson(pJson, jkImputationFuncLogicPlanFuncs, pNode->pFuncs);
×
1559
  }
1560

1561
  return code;
×
1562
}
1563

1564
static int32_t jsonToLogicImputationFuncNode(const SJson* pJson, void* pObj) {
×
1565
  SGenericAnalysisLogicNode* pNode = (SGenericAnalysisLogicNode*)pObj;
×
1566

1567
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1568
  if (TSDB_CODE_SUCCESS == code) {
×
1569
    code = jsonToNodeList(pJson, jkImputationFuncLogicPlanFuncs, &pNode->pFuncs);
×
1570
  }
1571

1572
  return code;
×
1573
}
1574

1575
static const char* jkGroupCacheLogicPlanGrpColsMayBeNull = "GroupColsMayBeNull";
1576
static const char* jkGroupCacheLogicPlanGroupByUid = "GroupByUid";
1577
static const char* jkGroupCacheLogicPlanGlobalGroup = "GlobalGroup";
1578
static const char* jkGroupCacheLogicPlanGroupCols = "GroupCols";
1579

1580
static int32_t logicGroupCacheNodeToJson(const void* pObj, SJson* pJson) {
×
1581
  const SGroupCacheLogicNode* pNode = (const SGroupCacheLogicNode*)pObj;
×
1582

1583
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1584
  if (TSDB_CODE_SUCCESS == code) {
×
1585
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGrpColsMayBeNull, pNode->grpColsMayBeNull);
×
1586
  }
1587
  if (TSDB_CODE_SUCCESS == code) {
×
1588
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGroupByUid, pNode->grpByUid);
×
1589
  }
1590
  if (TSDB_CODE_SUCCESS == code) {
×
1591
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGlobalGroup, pNode->globalGrp);
×
1592
  }
1593
  if (TSDB_CODE_SUCCESS == code) {
×
1594
    code = nodeListToJson(pJson, jkGroupCacheLogicPlanGroupCols, pNode->pGroupCols);
×
1595
  }
1596

1597
  return code;
×
1598
}
1599

1600
static int32_t jsonToLogicGroupCacheNode(const SJson* pJson, void* pObj) {
×
1601
  SGroupCacheLogicNode* pNode = (SGroupCacheLogicNode*)pObj;
×
1602

1603
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1604
  if (TSDB_CODE_SUCCESS == code) {
×
1605
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGrpColsMayBeNull, &pNode->grpColsMayBeNull);
×
1606
  }
1607
  if (TSDB_CODE_SUCCESS == code) {
×
1608
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGroupByUid, &pNode->grpByUid);
×
1609
  }
1610
  if (TSDB_CODE_SUCCESS == code) {
×
1611
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGlobalGroup, &pNode->globalGrp);
×
1612
  }
1613
  if (TSDB_CODE_SUCCESS == code) {
×
1614
    code = jsonToNodeList(pJson, jkGroupCacheLogicPlanGroupCols, &pNode->pGroupCols);
×
1615
  }
1616

1617
  return code;
×
1618
}
1619

1620
static const char* jkDynQueryCtrlLogicPlanQueryType = "QueryType";
1621
static const char* jkDynQueryCtrlLogicPlanStbJoinBatchFetch = "BatchFetch";
1622
static const char* jkDynQueryCtrlLogicPlanStbJoinVgList = "VgroupList";
1623
static const char* jkDynQueryCtrlLogicPlanStbJoinUidList = "UidList";
1624
static const char* jkDynQueryCtrlLogicPlanDynTbname = "DynTbname";
1625

1626
static int32_t logicDynQueryCtrlNodeToJson(const void* pObj, SJson* pJson) {
×
1627
  const SDynQueryCtrlLogicNode* pNode = (const SDynQueryCtrlLogicNode*)pObj;
×
1628

1629
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1630
  if (TSDB_CODE_SUCCESS == code) {
×
1631
    code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlLogicPlanQueryType, pNode->qType);
×
1632
  }
1633
  if (TSDB_CODE_SUCCESS == code) {
×
1634
    code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlLogicPlanStbJoinBatchFetch, pNode->stbJoin.batchFetch);
×
1635
  }
1636
  if (TSDB_CODE_SUCCESS == code) {
×
1637
    code = nodeListToJson(pJson, jkDynQueryCtrlLogicPlanStbJoinVgList, pNode->stbJoin.pVgList);
×
1638
  }
1639
  if (TSDB_CODE_SUCCESS == code) {
×
1640
    code = nodeListToJson(pJson, jkDynQueryCtrlLogicPlanStbJoinUidList, pNode->stbJoin.pUidList);
×
1641
  }
1642
  if (TSDB_CODE_SUCCESS == code) {
×
1643
    code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlLogicPlanDynTbname, pNode->dynTbname);
×
1644
  }
1645

1646
  return code;
×
1647
}
1648

1649
static int32_t jsonToLogicDynQueryCtrlNode(const SJson* pJson, void* pObj) {
×
1650
  SDynQueryCtrlLogicNode* pNode = (SDynQueryCtrlLogicNode*)pObj;
×
1651

1652
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1653
  if (TSDB_CODE_SUCCESS == code) {
×
1654
    tjsonGetNumberValue(pJson, jkDynQueryCtrlLogicPlanQueryType, pNode->qType, code);
×
1655
  }
1656
  if (TSDB_CODE_SUCCESS == code) {
×
1657
    code = tjsonGetBoolValue(pJson, jkDynQueryCtrlLogicPlanStbJoinBatchFetch, &pNode->stbJoin.batchFetch);
×
1658
  }
1659
  if (TSDB_CODE_SUCCESS == code) {
×
1660
    code = jsonToNodeList(pJson, jkDynQueryCtrlLogicPlanStbJoinVgList, &pNode->stbJoin.pVgList);
×
1661
  }
1662
  if (TSDB_CODE_SUCCESS == code) {
×
1663
    code = jsonToNodeList(pJson, jkDynQueryCtrlLogicPlanStbJoinUidList, &pNode->stbJoin.pUidList);
×
1664
  }
1665
  if (TSDB_CODE_SUCCESS == code) {
×
1666
    code = tjsonGetBoolValue(pJson, jkDynQueryCtrlLogicPlanDynTbname, &pNode->dynTbname);
×
1667
  }
1668

1669
  return code;
×
1670
}
1671

1672
static const char* jkSubplanIdQueryId = "QueryId";
1673
static const char* jkSubplanIdGroupId = "GroupId";
1674
static const char* jkSubplanIdSubplanId = "SubplanId";
1675

1676
static int32_t subplanIdToJson(const void* pObj, SJson* pJson) {
830,920,049✔
1677
  const SSubplanId* pNode = (const SSubplanId*)pObj;
830,920,049✔
1678

1679
  int32_t code = tjsonAddIntegerToObject(pJson, jkSubplanIdQueryId, pNode->queryId);
830,920,049✔
1680
  if (TSDB_CODE_SUCCESS == code) {
830,925,411✔
1681
    code = tjsonAddIntegerToObject(pJson, jkSubplanIdGroupId, pNode->groupId);
830,925,738✔
1682
  }
1683
  if (TSDB_CODE_SUCCESS == code) {
830,925,882✔
1684
    code = tjsonAddIntegerToObject(pJson, jkSubplanIdSubplanId, pNode->subplanId);
830,925,882✔
1685
  }
1686

1687
  return code;
830,925,738✔
1688
}
1689

1690
static int32_t jsonToSubplanId(const SJson* pJson, void* pObj) {
2,663,118✔
1691
  SSubplanId* pNode = (SSubplanId*)pObj;
2,663,118✔
1692

1693
  int32_t code = tjsonGetUBigIntValue(pJson, jkSubplanIdQueryId, &pNode->queryId);
2,663,118✔
1694
  if (TSDB_CODE_SUCCESS == code) {
2,663,714✔
1695
    code = tjsonGetIntValue(pJson, jkSubplanIdGroupId, &pNode->groupId);
2,663,714✔
1696
  }
1697
  if (TSDB_CODE_SUCCESS == code) {
2,663,714✔
1698
    code = tjsonGetIntValue(pJson, jkSubplanIdSubplanId, &pNode->subplanId);
2,663,714✔
1699
  }
1700

1701
  return code;
2,663,714✔
1702
}
1703

1704
static const char* jkEndPointFqdn = "Fqdn";
1705
static const char* jkEndPointPort = "Port";
1706

1707
static int32_t epToJson(const void* pObj, SJson* pJson) {
849,061,951✔
1708
  const SEp* pNode = (const SEp*)pObj;
849,061,951✔
1709

1710
  int32_t code = tjsonAddStringToObject(pJson, jkEndPointFqdn, pNode->fqdn);
849,061,951✔
1711
  if (TSDB_CODE_SUCCESS == code) {
849,065,544✔
1712
    code = tjsonAddIntegerToObject(pJson, jkEndPointPort, pNode->port);
849,065,814✔
1713
  }
1714

1715
  return code;
849,067,432✔
1716
}
1717

1718
static int32_t jsonToEp(const SJson* pJson, void* pObj) {
2,884,862✔
1719
  SEp* pNode = (SEp*)pObj;
2,884,862✔
1720

1721
  int32_t code = tjsonGetStringValue(pJson, jkEndPointFqdn, pNode->fqdn);
2,884,862✔
1722
  if (TSDB_CODE_SUCCESS == code) {
2,885,067✔
1723
    code = tjsonGetSmallIntValue(pJson, jkEndPointPort, &pNode->port);
2,885,067✔
1724
  }
1725

1726
  return code;
2,885,067✔
1727
}
1728

1729
static const char* jkEpSetInUse = "InUse";
1730
static const char* jkEpSetNumOfEps = "NumOfEps";
1731
static const char* jkEpSetEps = "Eps";
1732

1733
static int32_t epSetToJson(const void* pObj, SJson* pJson) {
17,770,258✔
1734
  const SEpSet* pNode = (const SEpSet*)pObj;
17,770,258✔
1735

1736
  int32_t code = tjsonAddIntegerToObject(pJson, jkEpSetInUse, pNode->inUse);
17,770,258✔
1737
  if (TSDB_CODE_SUCCESS == code) {
17,770,735✔
1738
    code = tjsonAddIntegerToObject(pJson, jkEpSetNumOfEps, pNode->numOfEps);
17,770,735✔
1739
  }
1740
  if (TSDB_CODE_SUCCESS == code) {
17,770,735✔
1741
    code = tjsonAddArray(pJson, jkEpSetEps, epToJson, pNode->eps, sizeof(SEp), pNode->numOfEps);
17,770,735✔
1742
  }
1743

1744
  return code;
17,770,735✔
1745
}
1746

1747
static int32_t jsonToEpSet(const SJson* pJson, void* pObj) {
749,834✔
1748
  SEpSet* pNode = (SEpSet*)pObj;
749,834✔
1749

1750
  int32_t code = tjsonGetTinyIntValue(pJson, jkEpSetInUse, &pNode->inUse);
749,834✔
1751
  if (TSDB_CODE_SUCCESS == code) {
749,834✔
1752
    code = tjsonGetTinyIntValue(pJson, jkEpSetNumOfEps, &pNode->numOfEps);
749,834✔
1753
  }
1754
  if (TSDB_CODE_SUCCESS == code) {
749,834✔
1755
    code = tjsonToArray(pJson, jkEpSetEps, jsonToEp, pNode->eps, sizeof(SEp));
749,834✔
1756
  }
1757

1758
  return code;
749,834✔
1759
}
1760

1761
static const char* jkVgroupInfoVgId = "VgId";
1762
static const char* jkVgroupInfoHashBegin = "HashBegin";
1763
static const char* jkVgroupInfoHashEnd = "HashEnd";
1764
static const char* jkVgroupInfoEpSet = "EpSet";
1765
static const char* jkVgroupInfoNumOfTable = "NumOfTable";
1766

1767
static int32_t vgroupInfoToJson(const void* pObj, SJson* pJson) {
1,378✔
1768
  const SVgroupInfo* pNode = (const SVgroupInfo*)pObj;
1,378✔
1769

1770
  int32_t code = tjsonAddIntegerToObject(pJson, jkVgroupInfoVgId, pNode->vgId);
1,378✔
1771
  if (TSDB_CODE_SUCCESS == code) {
1,378✔
1772
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoHashBegin, pNode->hashBegin);
1,378✔
1773
  }
1774
  if (TSDB_CODE_SUCCESS == code) {
1,378✔
1775
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoHashEnd, pNode->hashEnd);
1,378✔
1776
  }
1777
  if (TSDB_CODE_SUCCESS == code) {
1,378✔
1778
    code = tjsonAddObject(pJson, jkVgroupInfoEpSet, epSetToJson, &pNode->epSet);
1,378✔
1779
  }
1780
  if (TSDB_CODE_SUCCESS == code) {
1,378✔
1781
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoNumOfTable, pNode->numOfTable);
1,378✔
1782
  }
1783

1784
  return code;
1,378✔
1785
}
1786

1787
static int32_t jsonToVgroupInfo(const SJson* pJson, void* pObj) {
×
1788
  SVgroupInfo* pNode = (SVgroupInfo*)pObj;
×
1789

1790
  int32_t code = tjsonGetIntValue(pJson, jkVgroupInfoVgId, &pNode->vgId);
×
1791
  if (TSDB_CODE_SUCCESS == code) {
×
1792
    code = tjsonGetUIntValue(pJson, jkVgroupInfoHashBegin, &pNode->hashBegin);
×
1793
  }
1794
  if (TSDB_CODE_SUCCESS == code) {
×
1795
    code = tjsonGetUIntValue(pJson, jkVgroupInfoHashEnd, &pNode->hashEnd);
×
1796
  }
1797
  if (TSDB_CODE_SUCCESS == code) {
×
1798
    code = tjsonToObject(pJson, jkVgroupInfoEpSet, jsonToEpSet, &pNode->epSet);
×
1799
  }
1800
  if (TSDB_CODE_SUCCESS == code) {
×
1801
    code = tjsonGetIntValue(pJson, jkVgroupInfoNumOfTable, &pNode->numOfTable);
×
1802
  }
1803

1804
  return code;
×
1805
}
1806

1807
static const char* jkVgroupsInfoNum = "Num";
1808
static const char* jkVgroupsInfoVgroups = "Vgroups";
1809

1810
static int32_t vgroupsInfoToJson(const void* pObj, SJson* pJson) {
689✔
1811
  const SVgroupsInfo* pNode = (const SVgroupsInfo*)pObj;
689✔
1812

1813
  int32_t code = tjsonAddIntegerToObject(pJson, jkVgroupsInfoNum, pNode->numOfVgroups);
689✔
1814
  if (TSDB_CODE_SUCCESS == code) {
689✔
1815
    code = tjsonAddArray(pJson, jkVgroupsInfoVgroups, vgroupInfoToJson, pNode->vgroups, sizeof(SVgroupInfo),
689✔
1816
                         pNode->numOfVgroups);
689✔
1817
  }
1818

1819
  return code;
689✔
1820
}
1821

1822
static int32_t jsonToVgroupsInfo(const SJson* pJson, void* pObj) {
×
1823
  SVgroupsInfo* pNode = (SVgroupsInfo*)pObj;
×
1824

1825
  int32_t code = tjsonGetIntValue(pJson, jkVgroupsInfoNum, &pNode->numOfVgroups);
×
1826
  if (TSDB_CODE_SUCCESS == code) {
×
1827
    code = tjsonToArray(pJson, jkVgroupsInfoVgroups, jsonToVgroupInfo, pNode->vgroups, sizeof(SVgroupInfo));
×
1828
  }
1829

1830
  return code;
×
1831
}
1832

1833
static const char* jkLogicSubplanId = "Id";
1834
static const char* jkLogicSubplanChildren = "Children";
1835
static const char* jkLogicSubplanRootNode = "RootNode";
1836
static const char* jkLogicSubplanType = "SubplanType";
1837
static const char* jkLogicSubplanVgroupsSize = "VgroupsSize";
1838
static const char* jkLogicSubplanVgroups = "Vgroups";
1839
static const char* jkLogicSubplanLevel = "Level";
1840
static const char* jkLogicSubplanSplitFlag = "SplitFlag";
1841
static const char* jkLogicSubplanNumOfComputeNodes = "NumOfComputeNodes";
1842

1843
static int32_t logicSubplanToJson(const void* pObj, SJson* pJson) {
109,500✔
1844
  const SLogicSubplan* pNode = (const SLogicSubplan*)pObj;
109,500✔
1845

1846
  int32_t code = tjsonAddObject(pJson, jkLogicSubplanId, subplanIdToJson, &pNode->id);
109,500✔
1847
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
1848
    code = nodeListToJson(pJson, jkLogicSubplanChildren, pNode->pChildren);
109,500✔
1849
  }
1850
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
1851
    code = tjsonAddObject(pJson, jkLogicSubplanRootNode, nodeToJson, pNode->pNode);
109,500✔
1852
  }
1853
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
1854
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanType, pNode->subplanType);
109,500✔
1855
  }
1856
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
1857
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanVgroupsSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
109,500✔
1858
  }
1859
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
1860
    code = tjsonAddObject(pJson, jkLogicSubplanVgroups, vgroupsInfoToJson, pNode->pVgroupList);
109,500✔
1861
  }
1862
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
1863
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanLevel, pNode->level);
109,500✔
1864
  }
1865
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
1866
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanSplitFlag, pNode->splitFlag);
109,500✔
1867
  }
1868
  if (TSDB_CODE_SUCCESS == code) {
109,500✔
1869
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanNumOfComputeNodes, pNode->numOfComputeNodes);
109,500✔
1870
  }
1871

1872
  return code;
109,500✔
1873
}
1874

1875
static int32_t jsonToLogicSubplan(const SJson* pJson, void* pObj) {
×
1876
  SLogicSubplan* pNode = (SLogicSubplan*)pObj;
×
1877

1878
  int32_t code = tjsonToObject(pJson, jkLogicSubplanId, jsonToSubplanId, &pNode->id);
×
1879
  if (TSDB_CODE_SUCCESS == code) {
×
1880
    code = jsonToNodeList(pJson, jkLogicSubplanChildren, &pNode->pChildren);
×
1881
  }
1882
  if (TSDB_CODE_SUCCESS == code) {
×
1883
    code = jsonToNodeObject(pJson, jkLogicSubplanRootNode, (SNode**)&pNode->pNode);
×
1884
  }
1885
  if (TSDB_CODE_SUCCESS == code) {
×
1886
    tjsonGetNumberValue(pJson, jkLogicSubplanType, pNode->subplanType, code);
×
1887
  }
1888
  int32_t objSize = 0;
×
1889
  if (TSDB_CODE_SUCCESS == code) {
×
1890
    code = tjsonGetIntValue(pJson, jkLogicSubplanVgroupsSize, &objSize);
×
1891
  }
1892
  if (TSDB_CODE_SUCCESS == code) {
×
1893
    code = tjsonMakeObject(pJson, jkLogicSubplanVgroups, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
×
1894
  }
1895
  if (TSDB_CODE_SUCCESS == code) {
×
1896
    code = tjsonGetIntValue(pJson, jkLogicSubplanLevel, &pNode->level);
×
1897
  }
1898
  if (TSDB_CODE_SUCCESS == code) {
×
1899
    code = tjsonGetIntValue(pJson, jkLogicSubplanSplitFlag, &pNode->splitFlag);
×
1900
  }
1901
  if (TSDB_CODE_SUCCESS == code) {
×
1902
    code = tjsonGetIntValue(pJson, jkLogicSubplanNumOfComputeNodes, &pNode->numOfComputeNodes);
×
1903
  }
1904

1905
  return code;
×
1906
}
1907

1908
static const char* jkLogicPlanSubplans = "Subplans";
1909

1910
static int32_t logicPlanToJson(const void* pObj, SJson* pJson) {
×
1911
  const SQueryLogicPlan* pNode = (const SQueryLogicPlan*)pObj;
×
1912
  return tjsonAddObject(pJson, jkLogicPlanSubplans, nodeToJson, nodesListGetNode(pNode->pTopSubplans, 0));
×
1913
}
1914

1915
static int32_t jsonToLogicPlan(const SJson* pJson, void* pObj) {
×
1916
  SQueryLogicPlan* pNode = (SQueryLogicPlan*)pObj;
×
1917
  SNode*           pChild = NULL;
×
1918
  int32_t          code = jsonToNodeObject(pJson, jkLogicPlanSubplans, &pChild);
×
1919
  if (TSDB_CODE_SUCCESS == code) {
×
1920
    code = nodesListMakeStrictAppend(&pNode->pTopSubplans, pChild);
×
1921
  }
1922
  return code;
×
1923
}
1924

1925
static const char* jkJoinLogicPlanJoinType = "JoinType";
1926
static const char* jkJoinLogicPlanJoinAlgo = "JoinAlgo";
1927
static const char* jkJoinLogicPlanOnConditions = "OtherOnCond";
1928
static const char* jkJoinLogicPlanPrimKeyEqCondition = "PrimKeyEqCond";
1929
static const char* jkJoinLogicPlanColEqCondition = "ColumnEqCond";
1930
static const char* jkJoinLogicPlanTagEqCondition = "TagEqCond";
1931

1932
static int32_t logicJoinNodeToJson(const void* pObj, SJson* pJson) {
×
1933
  const SJoinLogicNode* pNode = (const SJoinLogicNode*)pObj;
×
1934

1935
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1936
  if (TSDB_CODE_SUCCESS == code) {
×
1937
    code = tjsonAddIntegerToObject(pJson, jkJoinLogicPlanJoinType, pNode->joinType);
×
1938
  }
1939
  if (TSDB_CODE_SUCCESS == code) {
×
1940
    code = tjsonAddIntegerToObject(pJson, jkJoinLogicPlanJoinAlgo, pNode->joinAlgo);
×
1941
  }
1942
  if (TSDB_CODE_SUCCESS == code) {
×
1943
    code = tjsonAddObject(pJson, jkJoinLogicPlanPrimKeyEqCondition, nodeToJson, pNode->pPrimKeyEqCond);
×
1944
  }
1945
  if (TSDB_CODE_SUCCESS == code) {
×
1946
    code = tjsonAddObject(pJson, jkJoinLogicPlanColEqCondition, nodeToJson, pNode->pColEqCond);
×
1947
  }
1948
  if (TSDB_CODE_SUCCESS == code) {
×
1949
    code = tjsonAddObject(pJson, jkJoinLogicPlanTagEqCondition, nodeToJson, pNode->pTagEqCond);
×
1950
  }
1951
  if (TSDB_CODE_SUCCESS == code) {
×
1952
    code = tjsonAddObject(pJson, jkJoinLogicPlanOnConditions, nodeToJson, pNode->pFullOnCond);
×
1953
  }
1954
  return code;
×
1955
}
1956

1957
static int32_t jsonToLogicJoinNode(const SJson* pJson, void* pObj) {
×
1958
  SJoinLogicNode* pNode = (SJoinLogicNode*)pObj;
×
1959

1960
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1961
  if (TSDB_CODE_SUCCESS == code) {
×
1962
    tjsonGetNumberValue(pJson, jkJoinLogicPlanJoinType, pNode->joinType, code);
×
1963
  }
1964
  if (TSDB_CODE_SUCCESS == code) {
×
1965
    tjsonGetNumberValue(pJson, jkJoinLogicPlanJoinAlgo, pNode->joinAlgo, code);
×
1966
  }
1967
  if (TSDB_CODE_SUCCESS == code) {
×
1968
    code = jsonToNodeObject(pJson, jkJoinLogicPlanPrimKeyEqCondition, &pNode->pPrimKeyEqCond);
×
1969
  }
1970
  if (TSDB_CODE_SUCCESS == code) {
×
1971
    code = jsonToNodeObject(pJson, jkJoinLogicPlanColEqCondition, &pNode->pColEqCond);
×
1972
  }
1973
  if (TSDB_CODE_SUCCESS == code) {
×
1974
    code = jsonToNodeObject(pJson, jkJoinLogicPlanTagEqCondition, &pNode->pTagEqCond);
×
1975
  }
1976
  if (TSDB_CODE_SUCCESS == code) {
×
1977
    code = jsonToNodeObject(pJson, jkJoinLogicPlanOnConditions, &pNode->pFullOnCond);
×
1978
  }
1979

1980
  return code;
×
1981
}
1982

1983
static const char* jkVirtualTableScanLogicPlanScanCols = "ScanCols";
1984
static const char* jkVirtualTableScanLogicPlanScanPseudoCols = "ScanPseudoCols";
1985
static const char* jkVirtualTableScanLogicPlanTableType = "TableType";
1986
static const char* jkVirtualTableScanLogicPlanTableId = "TableId";
1987
static const char* jkVirtualTableScanLogicPlanStableId = "StableId";
1988
static const char* jkVirtualTableScanLogicPlanScanType = "ScanType";
1989
static const char* jkVirtualTableScanLogicPlanscanAllCols = "scanAllCols";
1990

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

1994
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1995
  if (TSDB_CODE_SUCCESS == code) {
×
1996
    code = tjsonAddBoolToObject(pJson, jkVirtualTableScanLogicPlanscanAllCols, pNode->scanAllCols);
×
1997
  }
1998
  if (TSDB_CODE_SUCCESS == code) {
×
1999
    code = nodeListToJson(pJson, jkVirtualTableScanLogicPlanScanCols, pNode->pScanCols);
×
2000
  }
2001
  if (TSDB_CODE_SUCCESS == code) {
×
2002
    code = nodeListToJson(pJson, jkVirtualTableScanLogicPlanScanPseudoCols, pNode->pScanPseudoCols);
×
2003
  }
2004
  if (TSDB_CODE_SUCCESS == code) {
×
2005
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableScanLogicPlanTableType, pNode->tableType);
×
2006
  }
2007
  if (TSDB_CODE_SUCCESS == code) {
×
2008
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableScanLogicPlanTableId, pNode->tableId);
×
2009
  }
2010
  if (TSDB_CODE_SUCCESS == code) {
×
2011
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableScanLogicPlanStableId, pNode->stableId);
×
2012
  }
2013
  if (TSDB_CODE_SUCCESS == code) {
×
2014
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableScanLogicPlanScanType, pNode->scanType);
×
2015
  }
2016
  return code;
×
2017
}
2018

2019
static int32_t jsonToLogicVirtualTableScanNode(const SJson* pJson, void* pObj) {
×
2020
  SVirtualScanLogicNode* pNode = (SVirtualScanLogicNode *)pObj;
×
2021

2022
  int32_t objSize = 0;
×
2023
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
2024
  if (TSDB_CODE_SUCCESS == code) {
×
2025
    code = tjsonGetBoolValue(pJson, jkVirtualTableScanLogicPlanscanAllCols, &pNode->scanAllCols);
×
2026
  }
2027
  if (TSDB_CODE_SUCCESS == code) {
×
2028
    code = jsonToNodeList(pJson, jkVirtualTableScanLogicPlanScanCols, &pNode->pScanCols);
×
2029
  }
2030
  if (TSDB_CODE_SUCCESS == code) {
×
2031
    code = jsonToNodeList(pJson, jkVirtualTableScanLogicPlanScanPseudoCols, &pNode->pScanPseudoCols);
×
2032
  }
2033
  if (TSDB_CODE_SUCCESS == code) {
×
2034
    code = tjsonGetTinyIntValue(pJson, jkVirtualTableScanLogicPlanTableType, &pNode->tableType);
×
2035
  }
2036
  if (TSDB_CODE_SUCCESS == code) {
×
2037
    code = tjsonGetUBigIntValue(pJson, jkVirtualTableScanLogicPlanTableId, &pNode->tableId);
×
2038
  }
2039
  if (TSDB_CODE_SUCCESS == code) {
×
2040
    code = tjsonGetUBigIntValue(pJson, jkVirtualTableScanLogicPlanStableId, &pNode->stableId);
×
2041
  }
2042
  if (TSDB_CODE_SUCCESS == code) {
×
2043
    tjsonGetNumberValue(pJson, jkVirtualTableScanLogicPlanScanType, pNode->scanType, code);
×
2044
  }
2045
  return code;
×
2046
}
2047

2048

2049
static const char* jkPhysiPlanOutputDataBlockDesc = "OutputDataBlockDesc";
2050
static const char* jkPhysiPlanConditions = "Conditions";
2051
static const char* jkPhysiPlanChildren = "Children";
2052
static const char* jkPhysiPlanLimit = "Limit";
2053
static const char* jkPhysiPlanSlimit = "SLimit";
2054
static const char* jkPhysiPlanInputTsOrder = "InputOrder";
2055
static const char* jkPhysiPlanOutputTsOrder = "OutputOrder";
2056
static const char* jkPhysiPlanDynamicOp = "DynamicOp";
2057
static const char* jkPhysiPlanForceCreateNonBlockingOptr = "ForceCreateNonBlockingOptr";
2058

2059

2060
static int32_t physicPlanNodeToJson(const void* pObj, SJson* pJson) {
610,179,941✔
2061
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
610,179,941✔
2062

2063
  int32_t code = tjsonAddObject(pJson, jkPhysiPlanOutputDataBlockDesc, nodeToJson, pNode->pOutputDataBlockDesc);
610,179,941✔
2064
  if (TSDB_CODE_SUCCESS == code) {
610,184,535✔
2065
    code = tjsonAddObject(pJson, jkPhysiPlanConditions, nodeToJson, pNode->pConditions);
610,184,535✔
2066
  }
2067
  if (TSDB_CODE_SUCCESS == code) {
610,184,058✔
2068
    code = nodeListToJson(pJson, jkPhysiPlanChildren, pNode->pChildren);
610,184,058✔
2069
  }
2070
  if (TSDB_CODE_SUCCESS == code) {
610,184,058✔
2071
    code = tjsonAddObject(pJson, jkPhysiPlanLimit, nodeToJson, pNode->pLimit);
610,184,058✔
2072
  }
2073
  if (TSDB_CODE_SUCCESS == code) {
610,183,104✔
2074
    code = tjsonAddObject(pJson, jkPhysiPlanSlimit, nodeToJson, pNode->pSlimit);
610,183,104✔
2075
  }
2076
  if (TSDB_CODE_SUCCESS == code) {
610,184,058✔
2077
    code = tjsonAddIntegerToObject(pJson, jkPhysiPlanInputTsOrder, pNode->inputTsOrder);
610,184,058✔
2078
  }
2079
  if (TSDB_CODE_SUCCESS == code) {
610,183,581✔
2080
    code = tjsonAddIntegerToObject(pJson, jkPhysiPlanOutputTsOrder, pNode->outputTsOrder);
610,183,581✔
2081
  }
2082
  if (TSDB_CODE_SUCCESS == code) {
610,182,627✔
2083
    code = tjsonAddBoolToObject(pJson, jkPhysiPlanDynamicOp, pNode->dynamicOp);
610,182,627✔
2084
  }
2085
  if (TSDB_CODE_SUCCESS == code) {
610,183,679✔
2086
    code = tjsonAddBoolToObject(pJson, jkPhysiPlanForceCreateNonBlockingOptr, pNode->forceCreateNonBlockingOptr);
610,183,679✔
2087
  }
2088

2089
  return code;
610,182,725✔
2090
}
2091

2092
static int32_t jsonToPhysicPlanNode(const SJson* pJson, void* pObj) {
4,982,398✔
2093
  SPhysiNode* pNode = (SPhysiNode*)pObj;
4,982,398✔
2094

2095
  int32_t code = jsonToNodeObject(pJson, jkPhysiPlanOutputDataBlockDesc, (SNode**)&pNode->pOutputDataBlockDesc);
4,982,398✔
2096
  if (TSDB_CODE_SUCCESS == code) {
4,983,486✔
2097
    code = jsonToNodeObject(pJson, jkPhysiPlanConditions, &pNode->pConditions);
4,983,486✔
2098
  }
2099
  if (TSDB_CODE_SUCCESS == code) {
4,983,153✔
2100
    code = jsonToNodeList(pJson, jkPhysiPlanChildren, &pNode->pChildren);
4,983,153✔
2101
  }
2102
  if (TSDB_CODE_SUCCESS == code) {
4,983,358✔
2103
    code = jsonToNodeObject(pJson, jkPhysiPlanLimit, &pNode->pLimit);
4,983,358✔
2104
  }
2105
  if (TSDB_CODE_SUCCESS == code) {
4,983,780✔
2106
    code = jsonToNodeObject(pJson, jkPhysiPlanSlimit, &pNode->pSlimit);
4,983,780✔
2107
  }
2108
  if (TSDB_CODE_SUCCESS == code) {
4,983,486✔
2109
    tjsonGetNumberValue(pJson, jkPhysiPlanInputTsOrder, pNode->inputTsOrder, code);
4,983,486✔
2110
  }
2111
  if (TSDB_CODE_SUCCESS == code) {
4,983,447✔
2112
    tjsonGetNumberValue(pJson, jkPhysiPlanOutputTsOrder, pNode->outputTsOrder, code);
4,983,447✔
2113
  }
2114
  if (TSDB_CODE_SUCCESS == code) {
4,983,447✔
2115
    code = tjsonGetBoolValue(pJson, jkPhysiPlanDynamicOp, &pNode->dynamicOp);
4,983,447✔
2116
  }
2117
  if (TSDB_CODE_SUCCESS == code) {
4,983,780✔
2118
    code = tjsonGetBoolValue(pJson, jkPhysiPlanForceCreateNonBlockingOptr, &pNode->forceCreateNonBlockingOptr);
4,983,780✔
2119
  }
2120

2121
  return code;
4,983,522✔
2122
}
2123

2124
static const char* jkNameType = "NameType";
2125
static const char* jkNameAcctId = "AcctId";
2126
static const char* jkNameDbName = "DbName";
2127
static const char* jkNameTableName = "TableName";
2128

2129
static int32_t nameToJson(const void* pObj, SJson* pJson) {
224,338,861✔
2130
  const SName* pNode = (const SName*)pObj;
224,338,861✔
2131

2132
  int32_t code = tjsonAddIntegerToObject(pJson, jkNameType, pNode->type);
224,338,861✔
2133
  if (TSDB_CODE_SUCCESS == code) {
224,340,292✔
2134
    code = tjsonAddIntegerToObject(pJson, jkNameAcctId, pNode->acctId);
224,340,292✔
2135
  }
2136
  if (TSDB_CODE_SUCCESS == code) {
224,339,815✔
2137
    code = tjsonAddStringToObject(pJson, jkNameDbName, pNode->dbname);
224,339,815✔
2138
  }
2139
  if (TSDB_CODE_SUCCESS == code) {
224,339,815✔
2140
    code = tjsonAddStringToObject(pJson, jkNameTableName, pNode->tname);
224,339,815✔
2141
  }
2142

2143
  return code;
224,339,815✔
2144
}
2145

2146
static int32_t jsonToName(const SJson* pJson, void* pObj) {
2,014,786✔
2147
  SName* pNode = (SName*)pObj;
2,014,786✔
2148

2149
  int32_t code = tjsonGetUTinyIntValue(pJson, jkNameType, &pNode->type);
2,014,786✔
2150
  if (TSDB_CODE_SUCCESS == code) {
2,014,786✔
2151
    code = tjsonGetIntValue(pJson, jkNameAcctId, &pNode->acctId);
2,014,786✔
2152
  }
2153
  if (TSDB_CODE_SUCCESS == code) {
2,014,786✔
2154
    code = tjsonGetStringValue(pJson, jkNameDbName, pNode->dbname);
2,014,786✔
2155
  }
2156
  if (TSDB_CODE_SUCCESS == code) {
2,014,786✔
2157
    code = tjsonGetStringValue(pJson, jkNameTableName, pNode->tname);
2,014,786✔
2158
  }
2159

2160
  return code;
2,014,786✔
2161
}
2162

2163
static const char* jkScanPhysiPlanScanCols = "ScanCols";
2164
static const char* jkScanPhysiPlanScanPseudoCols = "ScanPseudoCols";
2165
static const char* jkScanPhysiPlanTableId = "TableId";
2166
static const char* jkScanPhysiPlanSTableId = "STableId";
2167
static const char* jkScanPhysiPlanTableType = "TableType";
2168
static const char* jkScanPhysiPlanTableName = "TableName";
2169
static const char* jkScanPhysiPlanGroupOrderScan = "GroupOrderScan";
2170
static const char* jkScanPhysiPlanVirtualStableScan = "VirtualStableScan";
2171

2172
static int32_t physiScanNodeToJson(const void* pObj, SJson* pJson) {
224,337,528✔
2173
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
224,337,528✔
2174

2175
  int32_t code = physicPlanNodeToJson(pObj, pJson);
224,337,528✔
2176
  if (TSDB_CODE_SUCCESS == code) {
224,338,384✔
2177
    code = nodeListToJson(pJson, jkScanPhysiPlanScanCols, pNode->pScanCols);
224,338,384✔
2178
  }
2179
  if (TSDB_CODE_SUCCESS == code) {
224,339,815✔
2180
    code = nodeListToJson(pJson, jkScanPhysiPlanScanPseudoCols, pNode->pScanPseudoCols);
224,339,815✔
2181
  }
2182
  if (TSDB_CODE_SUCCESS == code) {
224,339,338✔
2183
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanTableId, pNode->uid);
224,339,338✔
2184
  }
2185
  if (TSDB_CODE_SUCCESS == code) {
224,340,292✔
2186
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanSTableId, pNode->suid);
224,340,292✔
2187
  }
2188
  if (TSDB_CODE_SUCCESS == code) {
224,340,292✔
2189
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanTableType, pNode->tableType);
224,340,292✔
2190
  }
2191
  if (TSDB_CODE_SUCCESS == code) {
224,339,815✔
2192
    code = tjsonAddObject(pJson, jkScanPhysiPlanTableName, nameToJson, &pNode->tableName);
224,339,815✔
2193
  }
2194
  if (TSDB_CODE_SUCCESS == code) {
224,339,815✔
2195
    code = tjsonAddBoolToObject(pJson, jkScanPhysiPlanGroupOrderScan, pNode->groupOrderScan);
224,339,815✔
2196
  }
2197
  if (TSDB_CODE_SUCCESS == code) {
224,339,338✔
2198
    code = tjsonAddBoolToObject(pJson, jkScanPhysiPlanVirtualStableScan, pNode->virtualStableScan);
224,339,338✔
2199
  }
2200

2201
  return code;
224,340,292✔
2202
}
2203

2204
static int32_t jsonToPhysiScanNode(const SJson* pJson, void* pObj) {
2,013,897✔
2205
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
2,013,897✔
2206

2207
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
2,013,897✔
2208
  if (TSDB_CODE_SUCCESS == code) {
2,014,786✔
2209
    code = jsonToNodeList(pJson, jkScanPhysiPlanScanCols, &pNode->pScanCols);
2,014,786✔
2210
  }
2211
  if (TSDB_CODE_SUCCESS == code) {
2,014,786✔
2212
    code = jsonToNodeList(pJson, jkScanPhysiPlanScanPseudoCols, &pNode->pScanPseudoCols);
2,014,786✔
2213
  }
2214
  if (TSDB_CODE_SUCCESS == code) {
2,014,786✔
2215
    code = tjsonGetUBigIntValue(pJson, jkScanPhysiPlanTableId, &pNode->uid);
2,014,786✔
2216
  }
2217
  if (TSDB_CODE_SUCCESS == code) {
2,014,786✔
2218
    code = tjsonGetUBigIntValue(pJson, jkScanPhysiPlanSTableId, &pNode->suid);
2,014,786✔
2219
  }
2220
  if (TSDB_CODE_SUCCESS == code) {
2,014,786✔
2221
    code = tjsonGetTinyIntValue(pJson, jkScanPhysiPlanTableType, &pNode->tableType);
2,014,786✔
2222
  }
2223
  if (TSDB_CODE_SUCCESS == code) {
2,014,786✔
2224
    code = tjsonToObject(pJson, jkScanPhysiPlanTableName, jsonToName, &pNode->tableName);
2,014,786✔
2225
  }
2226
  if (TSDB_CODE_SUCCESS == code) {
2,014,786✔
2227
    code = tjsonGetBoolValue(pJson, jkScanPhysiPlanGroupOrderScan, &pNode->groupOrderScan);
2,014,786✔
2228
  }
2229
  if (TSDB_CODE_SUCCESS == code) {
2,014,786✔
2230
    code = tjsonGetBoolValue(pJson, jkScanPhysiPlanVirtualStableScan, &pNode->virtualStableScan);
2,014,786✔
2231
  }
2232

2233
  return code;
2,014,786✔
2234
}
2235

2236
static const char* jkTagScanPhysiOnlyMetaCtbIdx = "OnlyMetaCtbIdx";
2237

2238
static int32_t physiTagScanNodeToJson(const void* pObj, SJson* pJson) {
10,627,135✔
2239
  const STagScanPhysiNode* pNode = (const STagScanPhysiNode*)pObj;
10,627,135✔
2240

2241
  int32_t code = physiScanNodeToJson(pObj, pJson);
10,627,135✔
2242

2243
  if (TSDB_CODE_SUCCESS == code) {
10,627,135✔
2244
    code = tjsonAddBoolToObject(pJson, jkTagScanPhysiOnlyMetaCtbIdx, pNode->onlyMetaCtbIdx);
10,627,135✔
2245
  }
2246
  return code;
10,627,135✔
2247
}
2248

2249
static int32_t jsonToPhysiTagScanNode(const SJson* pJson, void* pObj) {
10,436✔
2250
  STagScanPhysiNode* pNode = (STagScanPhysiNode*)pObj;
10,436✔
2251

2252
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
10,436✔
2253

2254
  if (TSDB_CODE_SUCCESS == code) {
10,436✔
2255
    code = tjsonGetBoolValue(pJson, jkTagScanPhysiOnlyMetaCtbIdx, &pNode->onlyMetaCtbIdx);
10,436✔
2256
  }
2257
  return code;
10,436✔
2258
}
2259

2260
static const char* jkLastRowScanPhysiPlanGroupTags = "GroupTags";
2261
static const char* jkLastRowScanPhysiPlanGroupSort = "GroupSort";
2262
static const char* jkLastRowScanPhysiPlanTargets = "Targets";
2263
static const char* jkLastRowScanPhysiPlanFuncType = "FuncType";
2264
static const char* jkLastRowScanPhysiPlanFuncTypes = "FuncTypes";
2265
static const char* jkLastRowScanPhysiPlanIgnoreNull = "IgnoreNull";
2266

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

2270
  int32_t code = tjsonAddIntegerToObject(pJson, jkLastRowScanPhysiPlanFuncType, *pNode);
×
2271
  return code;
×
2272
}
2273

2274
static int32_t jsonToFuncType(const SJson* pJson, void* pObj) {
×
2275
  int32_t* pNode = (int32_t*)pObj;
×
2276

2277
  int32_t code = tjsonGetIntValue(pJson, jkLastRowScanPhysiPlanFuncType, pNode);
×
2278
  return code;
×
2279
}
2280

2281
static int32_t physiLastRowScanNodeToJson(const void* pObj, SJson* pJson) {
535,791✔
2282
  const SLastRowScanPhysiNode* pNode = (const SLastRowScanPhysiNode*)pObj;
535,791✔
2283

2284
  int32_t code = physiScanNodeToJson(pObj, pJson);
535,791✔
2285
  if (TSDB_CODE_SUCCESS == code) {
535,791✔
2286
    code = nodeListToJson(pJson, jkLastRowScanPhysiPlanGroupTags, pNode->pGroupTags);
535,791✔
2287
  }
2288
  if (TSDB_CODE_SUCCESS == code) {
535,791✔
2289
    code = tjsonAddBoolToObject(pJson, jkLastRowScanPhysiPlanGroupSort, pNode->groupSort);
535,791✔
2290
  }
2291
  if (TSDB_CODE_SUCCESS == code) {
535,791✔
2292
    code = nodeListToJson(pJson, jkLastRowScanPhysiPlanTargets, pNode->pTargets);
535,791✔
2293
  }
2294
  if (TSDB_CODE_SUCCESS == code) {
535,791✔
2295
    code = tjsonAddTArray(pJson, jkLastRowScanPhysiPlanFuncTypes, funcTypeToJson, pNode->pFuncTypes);
535,791✔
2296
  }
2297
  if (TSDB_CODE_SUCCESS == code) {
535,791✔
2298
    code = tjsonAddBoolToObject(pJson, jkLastRowScanPhysiPlanIgnoreNull, pNode->ignoreNull);
535,791✔
2299
  }
2300

2301
  return code;
535,791✔
2302
}
2303

2304
static int32_t jsonToPhysiLastRowScanNode(const SJson* pJson, void* pObj) {
×
2305
  SLastRowScanPhysiNode* pNode = (SLastRowScanPhysiNode*)pObj;
×
2306

2307
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
×
2308
  if (TSDB_CODE_SUCCESS == code) {
×
2309
    code = jsonToNodeList(pJson, jkLastRowScanPhysiPlanGroupTags, &pNode->pGroupTags);
×
2310
  }
2311
  if (TSDB_CODE_SUCCESS == code) {
×
2312
    code = tjsonGetBoolValue(pJson, jkLastRowScanPhysiPlanGroupSort, &pNode->groupSort);
×
2313
  }
2314
  if (TSDB_CODE_SUCCESS == code) {
×
2315
    code = jsonToNodeList(pJson, jkLastRowScanPhysiPlanTargets, &pNode->pTargets);
×
2316
  }
2317
  if (TSDB_CODE_SUCCESS == code) {
×
2318
    code = tjsonToTArray(pJson, jkLastRowScanPhysiPlanFuncTypes, jsonToFuncType, &pNode->pFuncTypes, sizeof(int32_t));
×
2319
  }
2320
  if (TSDB_CODE_SUCCESS == code) {
×
2321
    code = tjsonGetBoolValue(pJson, jkLastRowScanPhysiPlanIgnoreNull, &pNode->ignoreNull);
×
2322
  }
2323

2324
  return code;
×
2325
}
2326

2327
static const char* jkTableScanPhysiPlanScanCount = "ScanCount";
2328
static const char* jkTableScanPhysiPlanReverseScanCount = "ReverseScanCount";
2329
static const char* jkTableScanPhysiPlanStartKey = "StartKey";
2330
static const char* jkTableScanPhysiPlanEndKey = "EndKey";
2331
static const char* jkTableScanPhysiPlanExtStartKey = "ExtStartKey";
2332
static const char* jkTableScanPhysiPlanExtEndKey = "ExtEndKey";
2333
static const char* jkTableScanPhysiPlanTimeRangeExpr = "TimeRangeExpr";
2334
static const char* jkTableScanPhysiPlanExtTimeRangeExpr = "ExtTimeRangeExpr";
2335
static const char* jkTableScanPhysiPlanPrimCondExpr = "PrimCondExpr";
2336
static const char* jkTableScanPhysiPlanRatio = "Ratio";
2337
static const char* jkTableScanPhysiPlanDataRequired = "DataRequired";
2338
static const char* jkTableScanPhysiPlanDynamicScanFuncs = "DynamicScanFuncs";
2339
static const char* jkTableScanPhysiPlanInterval = "Interval";
2340
static const char* jkTableScanPhysiPlanOffset = "Offset";
2341
static const char* jkTableScanPhysiPlanSliding = "Sliding";
2342
static const char* jkTableScanPhysiPlanIntervalUnit = "IntervalUnit";
2343
static const char* jkTableScanPhysiPlanSlidingUnit = "SlidingUnit";
2344
static const char* jkTableScanPhysiPlanTriggerType = "TriggerType";
2345
static const char* jkTableScanPhysiPlanWatermark = "Watermark";
2346
static const char* jkTableScanPhysiPlanIgnoreExpired = "IgnoreExpired";
2347
static const char* jkTableScanPhysiPlanGroupTags = "GroupTags";
2348
static const char* jkTableScanPhysiPlanGroupSort = "GroupSort";
2349
static const char* jkTableScanPhysiPlanTags = "Tags";
2350
static const char* jkTableScanPhysiPlanSubtable = "Subtable";
2351
static const char* jkTableScanPhysiPlanAssignBlockUid = "AssignBlockUid";
2352
static const char* jkTableScanPhysiPlanIgnoreUpdate = "IgnoreUpdate";
2353
static const char* jkTableScanPhysiPlanFilesetDelimited = "FilesetDelimited";
2354
static const char* jkTableScanPhysiPlanNeedCountEmptyTable = "NeedCountEmptyTable";
2355
static const char* jkTableScanPhysiPlanParaTablesSort = "ParaTablesSort";
2356
static const char* jkTableScanPhysiPlanSmallDataTsSort = "SmallDataTsSort";
2357

2358
static int32_t physiTableScanNodeToJson(const void* pObj, SJson* pJson) {
194,532,349✔
2359
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
194,532,349✔
2360

2361
  int32_t code = physiScanNodeToJson(pObj, pJson);
194,532,349✔
2362
  if (TSDB_CODE_SUCCESS == code) {
194,534,636✔
2363
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanScanCount, pNode->scanSeq[0]);
194,534,636✔
2364
  }
2365
  if (TSDB_CODE_SUCCESS == code) {
194,534,636✔
2366
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanReverseScanCount, pNode->scanSeq[1]);
194,534,636✔
2367
  }
2368
  if (TSDB_CODE_SUCCESS == code) {
194,535,113✔
2369
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanStartKey, pNode->scanRange.skey);
194,535,113✔
2370
  }
2371
  if (TSDB_CODE_SUCCESS == code) {
194,534,259✔
2372
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanEndKey, pNode->scanRange.ekey);
194,534,259✔
2373
  }
2374
  if (TSDB_CODE_SUCCESS == code && pNode->pExtScanRange) {
194,534,636✔
2375
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanExtStartKey, pNode->pExtScanRange->skey);
2,997,131✔
2376
  }
2377
  if (TSDB_CODE_SUCCESS == code && pNode->pExtScanRange) {
194,533,792✔
2378
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanExtEndKey, pNode->pExtScanRange->ekey);
2,997,131✔
2379
  }
2380
  if (TSDB_CODE_SUCCESS == code) {
194,533,315✔
2381
    code = tjsonAddObject(pJson, jkTableScanPhysiPlanTimeRangeExpr, nodeToJson, pNode->pTimeRange);
194,533,315✔
2382
  }
2383
  if (TSDB_CODE_SUCCESS == code) {
194,533,315✔
2384
    code = tjsonAddObject(pJson, jkTableScanPhysiPlanExtTimeRangeExpr, nodeToJson, pNode->pExtTimeRange);
194,533,315✔
2385
  }
2386
  if (TSDB_CODE_SUCCESS == code) {
194,533,782✔
2387
    code = tjsonAddObject(pJson, jkTableScanPhysiPlanPrimCondExpr, nodeToJson, pNode->pPrimaryCond);
194,533,782✔
2388
  }
2389
  if (TSDB_CODE_SUCCESS == code) {
194,532,828✔
2390
    code = tjsonAddDoubleToObject(pJson, jkTableScanPhysiPlanRatio, pNode->ratio);
194,532,828✔
2391
  }
2392
  if (TSDB_CODE_SUCCESS == code) {
194,534,149✔
2393
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanDataRequired, pNode->dataRequired);
194,534,149✔
2394
  }
2395
  if (TSDB_CODE_SUCCESS == code) {
194,534,636✔
2396
    code = nodeListToJson(pJson, jkTableScanPhysiPlanDynamicScanFuncs, pNode->pDynamicScanFuncs);
194,534,636✔
2397
  }
2398
  if (TSDB_CODE_SUCCESS == code) {
194,534,159✔
2399
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanInterval, pNode->interval);
194,534,159✔
2400
  }
2401
  if (TSDB_CODE_SUCCESS == code) {
194,534,149✔
2402
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanOffset, pNode->offset);
194,534,149✔
2403
  }
2404
  if (TSDB_CODE_SUCCESS == code) {
194,534,149✔
2405
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanSliding, pNode->sliding);
194,534,149✔
2406
  }
2407
  if (TSDB_CODE_SUCCESS == code) {
194,534,636✔
2408
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanIntervalUnit, pNode->intervalUnit);
194,534,636✔
2409
  }
2410
  if (TSDB_CODE_SUCCESS == code) {
194,535,113✔
2411
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanSlidingUnit, pNode->slidingUnit);
194,535,113✔
2412
  }
2413
  if (TSDB_CODE_SUCCESS == code) {
194,533,672✔
2414
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanTriggerType, pNode->triggerType);
194,533,672✔
2415
  }
2416
  if (TSDB_CODE_SUCCESS == code) {
194,533,672✔
2417
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanWatermark, pNode->watermark);
194,533,672✔
2418
  }
2419
  if (TSDB_CODE_SUCCESS == code) {
194,534,636✔
2420
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanIgnoreExpired, pNode->igExpired);
194,534,636✔
2421
  }
2422
  if (TSDB_CODE_SUCCESS == code) {
194,535,113✔
2423
    code = nodeListToJson(pJson, jkTableScanPhysiPlanGroupTags, pNode->pGroupTags);
194,535,113✔
2424
  }
2425
  if (TSDB_CODE_SUCCESS == code) {
194,534,636✔
2426
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanGroupSort, pNode->groupSort);
194,534,636✔
2427
  }
2428
  if (TSDB_CODE_SUCCESS == code) {
194,535,113✔
2429
    code = nodeListToJson(pJson, jkTableScanPhysiPlanTags, pNode->pTags);
194,535,113✔
2430
  }
2431
  if (TSDB_CODE_SUCCESS == code) {
194,534,636✔
2432
    code = tjsonAddObject(pJson, jkTableScanPhysiPlanSubtable, nodeToJson, pNode->pSubtable);
194,534,636✔
2433
  }
2434
  if (TSDB_CODE_SUCCESS == code) {
194,534,636✔
2435
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanAssignBlockUid, pNode->assignBlockUid);
194,534,636✔
2436
  }
2437
  if (TSDB_CODE_SUCCESS == code) {
194,535,113✔
2438
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanIgnoreUpdate, pNode->igCheckUpdate);
194,535,113✔
2439
  }
2440
  if (TSDB_CODE_SUCCESS == code) {
194,534,636✔
2441
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanFilesetDelimited, pNode->filesetDelimited);
194,534,636✔
2442
  }
2443
  if (TSDB_CODE_SUCCESS == code) {
194,535,113✔
2444
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanNeedCountEmptyTable, pNode->needCountEmptyTable);
194,535,113✔
2445
  }
2446
  if (TSDB_CODE_SUCCESS == code) {
194,534,159✔
2447
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanParaTablesSort, pNode->paraTablesSort);
194,534,159✔
2448
  }
2449
  if (TSDB_CODE_SUCCESS == code) {
194,535,113✔
2450
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanSmallDataTsSort, pNode->smallDataTsSort);
194,535,113✔
2451
  }
2452
  return code;
194,535,113✔
2453
}
2454

2455
static int32_t jsonToExtTimeWindow(const SJson* pJson, STimeWindow** pWin) {
1,254,516✔
2456
  int64_t skey = 0;
1,254,516✔
2457
  if (NULL == tjsonGetObjectItem(pJson, jkTableScanPhysiPlanExtStartKey)) {
1,254,516✔
2458
    return TSDB_CODE_SUCCESS;
1,254,264✔
2459
  }
2460
  *pWin = taosMemoryMalloc(sizeof(**pWin));
×
2461
  if (NULL == *pWin) {
×
2462
    return terrno;
×
2463
  }
2464
  int32_t code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanExtStartKey, &(*pWin)->skey);
×
2465
  if (TSDB_CODE_SUCCESS == code) {
×
2466
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanExtEndKey, &(*pWin)->ekey);
×
2467
  }
2468
  return code;
×
2469
}
2470

2471
static int32_t jsonToPhysiTableScanNode(const SJson* pJson, void* pObj) {
1,253,627✔
2472
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
1,253,627✔
2473

2474
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
1,253,627✔
2475
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2476
    code = tjsonGetUTinyIntValue(pJson, jkTableScanPhysiPlanScanCount, &pNode->scanSeq[0]);
1,254,516✔
2477
  }
2478
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2479
    code = tjsonGetUTinyIntValue(pJson, jkTableScanPhysiPlanReverseScanCount, &pNode->scanSeq[1]);
1,254,516✔
2480
  }
2481
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2482
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanStartKey, &pNode->scanRange.skey);
1,254,516✔
2483
  }
2484
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2485
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanEndKey, &pNode->scanRange.ekey);
1,254,516✔
2486
  }
2487
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2488
    code = jsonToExtTimeWindow(pJson, &pNode->pExtScanRange);
1,254,516✔
2489
  }
2490
  if (TSDB_CODE_SUCCESS == code) {
1,254,264✔
2491
    code = jsonToNodeObject(pJson, jkTableScanPhysiPlanTimeRangeExpr, &pNode->pTimeRange);
1,254,264✔
2492
  }
2493
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2494
    code = jsonToNodeObject(pJson, jkTableScanPhysiPlanExtTimeRangeExpr, &pNode->pExtTimeRange);
1,254,516✔
2495
  }
2496
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2497
    code = jsonToNodeObject(pJson, jkTableScanPhysiPlanPrimCondExpr, &pNode->pPrimaryCond);
1,254,516✔
2498
  }
2499
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2500
    code = tjsonGetDoubleValue(pJson, jkTableScanPhysiPlanRatio, &pNode->ratio);
1,254,516✔
2501
  }
2502
  if (TSDB_CODE_SUCCESS == code) {
1,254,258✔
2503
    code = tjsonGetIntValue(pJson, jkTableScanPhysiPlanDataRequired, &pNode->dataRequired);
1,254,258✔
2504
  }
2505
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2506
    code = jsonToNodeList(pJson, jkTableScanPhysiPlanDynamicScanFuncs, &pNode->pDynamicScanFuncs);
1,254,516✔
2507
  }
2508
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2509
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanInterval, &pNode->interval);
1,254,516✔
2510
  }
2511
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2512
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanOffset, &pNode->offset);
1,254,516✔
2513
  }
2514
  if (TSDB_CODE_SUCCESS == code) {
1,254,205✔
2515
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanSliding, &pNode->sliding);
1,254,205✔
2516
  }
2517
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2518
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanIntervalUnit, &pNode->intervalUnit);
1,254,516✔
2519
  }
2520
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2521
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanSlidingUnit, &pNode->slidingUnit);
1,254,516✔
2522
  }
2523
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2524
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanTriggerType, &pNode->triggerType);
1,254,516✔
2525
  }
2526
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2527
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanWatermark, &pNode->watermark);
1,254,516✔
2528
  }
2529
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2530
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanIgnoreExpired, &pNode->igExpired);
1,254,516✔
2531
  }
2532
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2533
    code = jsonToNodeList(pJson, jkTableScanPhysiPlanGroupTags, &pNode->pGroupTags);
1,254,516✔
2534
  }
2535
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2536
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanGroupSort, &pNode->groupSort);
1,254,516✔
2537
  }
2538
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2539
    code = jsonToNodeList(pJson, jkTableScanPhysiPlanTags, &pNode->pTags);
1,254,516✔
2540
  }
2541
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2542
    code = jsonToNodeObject(pJson, jkTableScanPhysiPlanSubtable, &pNode->pSubtable);
1,254,516✔
2543
  }
2544
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2545
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanAssignBlockUid, &pNode->assignBlockUid);
1,254,516✔
2546
  }
2547
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2548
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanIgnoreUpdate, &pNode->igCheckUpdate);
1,254,516✔
2549
  }
2550
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2551
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanFilesetDelimited, &pNode->filesetDelimited);
1,254,516✔
2552
  }
2553
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2554
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanNeedCountEmptyTable, &pNode->needCountEmptyTable);
1,254,516✔
2555
  }
2556
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2557
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanParaTablesSort, &pNode->paraTablesSort);
1,254,516✔
2558
  }
2559
  if (TSDB_CODE_SUCCESS == code) {
1,254,516✔
2560
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanSmallDataTsSort, &pNode->smallDataTsSort);
1,254,516✔
2561
  }
2562
  return code;
1,254,516✔
2563
}
2564
static const char* jkVirtualTableScanPhysiPlanGroupTags = "GroupTags";
2565
static const char* jkVirtualTableScanPhysiPlanGroupSort = "GroupSort";
2566
static const char* jkVirtualTableScanPhysiPlanscanAllCols= "scanAllCols";
2567
static const char* jkVirtualTableScanPhysiPlanTargets = "Targets";
2568
static const char* jkVirtualTableScanPhysiPlanTags = "Tags";
2569
static const char* jkVirtualTableScanPhysiPlanSubtable = "Subtable";
2570
static const char* jkVirtualTableScanPhysiPlanIgExpired = "IgExpired";
2571
static const char* jkVirtualTableScanPhysiPlanIgCheckUpdate = "IgCheckUpdate";
2572

2573
static int32_t physiVirtualTableScanNodeToJson(const void* pObj, SJson* pJson) {
3,037,245✔
2574
  const SVirtualScanPhysiNode* pNode = (const SVirtualScanPhysiNode*)pObj;
3,037,245✔
2575

2576
  int32_t code = physiScanNodeToJson(pObj, pJson);
3,037,245✔
2577

2578
  if (TSDB_CODE_SUCCESS == code) {
3,037,245✔
2579
    code = nodeListToJson(pJson, jkVirtualTableScanPhysiPlanGroupTags, pNode->pGroupTags);
3,037,245✔
2580
  }
2581

2582
  if (TSDB_CODE_SUCCESS == code) {
3,037,245✔
2583
    code = tjsonAddBoolToObject(pJson, jkVirtualTableScanPhysiPlanGroupSort, pNode->groupSort);
3,037,245✔
2584
  }
2585

2586
  if (TSDB_CODE_SUCCESS == code) {
3,037,245✔
2587
    code = tjsonAddBoolToObject(pJson, jkVirtualTableScanPhysiPlanscanAllCols, pNode->scanAllCols);
3,037,245✔
2588
  }
2589

2590
  if (TSDB_CODE_SUCCESS == code) {
3,037,245✔
2591
    code = nodeListToJson(pJson, jkVirtualTableScanPhysiPlanTargets, pNode->pTargets);
3,037,245✔
2592
  }
2593

2594
  if (TSDB_CODE_SUCCESS == code) {
3,037,245✔
2595
    code = nodeListToJson(pJson, jkVirtualTableScanPhysiPlanTags, pNode->pTags);
3,037,245✔
2596
  }
2597

2598
  if (TSDB_CODE_SUCCESS == code) {
3,037,245✔
2599
    code = tjsonAddObject(pJson, jkVirtualTableScanPhysiPlanSubtable, nodeToJson, pNode->pSubtable);
3,037,245✔
2600
  }
2601

2602
  if (TSDB_CODE_SUCCESS == code) {
3,037,245✔
2603
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableScanPhysiPlanIgExpired, pNode->igExpired);
3,037,245✔
2604
  }
2605

2606
  if (TSDB_CODE_SUCCESS == code) {
3,037,245✔
2607
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableScanPhysiPlanIgCheckUpdate, pNode->igCheckUpdate);
3,037,245✔
2608
  }
2609

2610
  return code;
3,037,245✔
2611
}
2612

2613
static int32_t jsonToPhysiVirtualTableScanNode(const SJson* pJson, void* pObj) {
127,117✔
2614
  SVirtualScanPhysiNode* pNode = (SVirtualScanPhysiNode*)pObj;
127,117✔
2615

2616
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
127,117✔
2617
  if (TSDB_CODE_SUCCESS == code) {
127,117✔
2618
    code = jsonToNodeList(pJson, jkVirtualTableScanPhysiPlanGroupTags, &pNode->pGroupTags);
127,117✔
2619
  }
2620
  if (TSDB_CODE_SUCCESS == code) {
127,117✔
2621
    code = tjsonGetBoolValue(pJson, jkVirtualTableScanPhysiPlanGroupSort, &pNode->groupSort);
127,117✔
2622
  }
2623
  if (TSDB_CODE_SUCCESS == code) {
127,117✔
2624
    code = tjsonGetBoolValue(pJson, jkVirtualTableScanPhysiPlanscanAllCols, &pNode->scanAllCols);
127,117✔
2625
  }
2626
  if (TSDB_CODE_SUCCESS == code) {
127,117✔
2627
    code = jsonToNodeList(pJson, jkVirtualTableScanPhysiPlanTargets, &pNode->pTargets);
127,117✔
2628
  }
2629

2630
  if (TSDB_CODE_SUCCESS == code) {
127,117✔
2631
    code = jsonToNodeList(pJson, jkVirtualTableScanPhysiPlanTags, &pNode->pTags);
127,117✔
2632
  }
2633

2634
  if (TSDB_CODE_SUCCESS == code) {
127,117✔
2635
    code = jsonToNodeObject(pJson, jkVirtualTableScanPhysiPlanSubtable, &pNode->pSubtable);
127,117✔
2636
  }
2637

2638
  if (TSDB_CODE_SUCCESS == code) {
127,117✔
2639
    code = tjsonGetTinyIntValue(pJson, jkVirtualTableScanPhysiPlanIgExpired, &pNode->igExpired);
127,117✔
2640
  }
2641

2642
  if (TSDB_CODE_SUCCESS == code) {
127,117✔
2643
    code = tjsonGetTinyIntValue(pJson, jkVirtualTableScanPhysiPlanIgCheckUpdate, &pNode->igCheckUpdate);
127,117✔
2644
  }
2645

2646
  return code;
127,117✔
2647
}
2648

2649
static const char* jkSysTableScanPhysiPlanMnodeEpSet = "MnodeEpSet";
2650
static const char* jkSysTableScanPhysiPlanShowRewrite = "ShowRewrite";
2651
static const char* jkSysTableScanPhysiPlanAccountId = "AccountId";
2652
static const char* jkSysTableScanPhysiPlanSysInfo = "SysInfo";
2653

2654
static int32_t physiSysTableScanNodeToJson(const void* pObj, SJson* pJson) {
15,600,052✔
2655
  const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
15,600,052✔
2656

2657
  int32_t code = physiScanNodeToJson(pObj, pJson);
15,600,052✔
2658
  if (TSDB_CODE_SUCCESS == code) {
15,599,575✔
2659
    code = tjsonAddObject(pJson, jkSysTableScanPhysiPlanMnodeEpSet, epSetToJson, &pNode->mgmtEpSet);
15,599,575✔
2660
  }
2661
  if (TSDB_CODE_SUCCESS == code) {
15,600,052✔
2662
    code = tjsonAddBoolToObject(pJson, jkSysTableScanPhysiPlanShowRewrite, pNode->showRewrite);
15,600,052✔
2663
  }
2664
  if (TSDB_CODE_SUCCESS == code) {
15,599,098✔
2665
    code = tjsonAddIntegerToObject(pJson, jkSysTableScanPhysiPlanAccountId, pNode->accountId);
15,599,098✔
2666
  }
2667
  if (TSDB_CODE_SUCCESS == code) {
15,600,052✔
2668
    code = tjsonAddBoolToObject(pJson, jkSysTableScanPhysiPlanSysInfo, pNode->sysInfo);
15,600,052✔
2669
  }
2670

2671
  return code;
15,600,052✔
2672
}
2673

2674
static int32_t jsonToPhysiSysTableScanNode(const SJson* pJson, void* pObj) {
622,717✔
2675
  SSystemTableScanPhysiNode* pNode = (SSystemTableScanPhysiNode*)pObj;
622,717✔
2676

2677
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
622,717✔
2678
  if (TSDB_CODE_SUCCESS == code) {
622,717✔
2679
    code = tjsonToObject(pJson, jkSysTableScanPhysiPlanMnodeEpSet, jsonToEpSet, &pNode->mgmtEpSet);
622,717✔
2680
  }
2681
  if (TSDB_CODE_SUCCESS == code) {
622,717✔
2682
    code = tjsonGetBoolValue(pJson, jkSysTableScanPhysiPlanShowRewrite, &pNode->showRewrite);
622,717✔
2683
  }
2684
  if (TSDB_CODE_SUCCESS == code) {
622,717✔
2685
    tjsonGetNumberValue(pJson, jkSysTableScanPhysiPlanAccountId, pNode->accountId, code);
622,717✔
2686
  }
2687
  if (TSDB_CODE_SUCCESS == code) {
622,717✔
2688
    code = tjsonGetBoolValue(pJson, jkSysTableScanPhysiPlanSysInfo, &pNode->sysInfo);
622,717✔
2689
  }
2690

2691
  return code;
622,717✔
2692
}
2693

2694
static const char* jkProjectPhysiPlanProjections = "Projections";
2695
static const char* jkProjectPhysiPlanMergeDataBlock = "MergeDataBlock";
2696
static const char* jkProjectPhysiPlanIgnoreGroupId = "IgnoreGroupId";
2697
static const char* jkProjectPhysiPlanInputIgnoreGroup = "InputIgnoreGroup";
2698

2699
static int32_t physiProjectNodeToJson(const void* pObj, SJson* pJson) {
87,692,328✔
2700
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
87,692,328✔
2701

2702
  int32_t code = physicPlanNodeToJson(pObj, pJson);
87,692,328✔
2703
  if (TSDB_CODE_SUCCESS == code) {
87,692,328✔
2704
    code = nodeListToJson(pJson, jkProjectPhysiPlanProjections, pNode->pProjections);
87,692,328✔
2705
  }
2706
  if (TSDB_CODE_SUCCESS == code) {
87,692,328✔
2707
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
87,692,328✔
2708
  }
2709
  if (TSDB_CODE_SUCCESS == code) {
87,692,328✔
2710
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanIgnoreGroupId, pNode->ignoreGroupId);
87,692,328✔
2711
  }
2712
  if (TSDB_CODE_SUCCESS == code) {
87,692,328✔
2713
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanInputIgnoreGroup, pNode->inputIgnoreGroup);
87,692,328✔
2714
  }
2715
  return code;
87,692,328✔
2716
}
2717

2718
static int32_t jsonToPhysiProjectNode(const SJson* pJson, void* pObj) {
1,053,168✔
2719
  SProjectPhysiNode* pNode = (SProjectPhysiNode*)pObj;
1,053,168✔
2720

2721
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
1,053,168✔
2722
  if (TSDB_CODE_SUCCESS == code) {
1,053,243✔
2723
    code = jsonToNodeList(pJson, jkProjectPhysiPlanProjections, &pNode->pProjections);
1,053,243✔
2724
  }
2725
  if (TSDB_CODE_SUCCESS == code) {
1,053,501✔
2726
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
1,053,501✔
2727
  }
2728
  if (TSDB_CODE_SUCCESS == code) {
1,053,501✔
2729
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanIgnoreGroupId, &pNode->ignoreGroupId);
1,053,501✔
2730
  }
2731
  if (TSDB_CODE_SUCCESS == code) {
1,053,501✔
2732
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanInputIgnoreGroup, &pNode->inputIgnoreGroup);
1,053,501✔
2733
  }
2734
  return code;
1,053,190✔
2735
}
2736

2737
static const char* jkJoinPhysiPlanJoinType = "JoinType";
2738
static const char* jkJoinPhysiPlanSubType = "SubType";
2739
static const char* jkJoinPhysiPlanWinOffset = "WindowOffset";
2740
static const char* jkJoinPhysiPlanJoinLimit = "JoinLimit";
2741
static const char* jkJoinPhysiPlanAsofOp = "AsofOp";
2742
static const char* jkJoinPhysiPlanLeftPrimExpr = "LeftPrimExpr";
2743
static const char* jkJoinPhysiPlanRightPrimExpr = "RightPrimExpr";
2744
static const char* jkJoinPhysiPlanLeftPrimSlotId = "LeftPrimSlotId";
2745
static const char* jkJoinPhysiPlanRightPrimSlotId = "RightPrimSlotId";
2746
static const char* jkJoinPhysiPlanLeftEqCols = "LeftEqCols";
2747
static const char* jkJoinPhysiPlanRightEqCols = "RightEqCols";
2748
static const char* jkJoinPhysiPlanInputTsOrder = "InputTsOrder";
2749
static const char* jkJoinPhysiPlanOnLeftCols = "OnLeftColumns";
2750
static const char* jkJoinPhysiPlanOnRightCols = "OnRightColumns";
2751
static const char* jkJoinPhysiPlanPrimKeyCondition = "PrimKeyCondition";
2752
static const char* jkJoinPhysiPlanOnConditions = "OnConditions";
2753
static const char* jkJoinPhysiPlanTargets = "Targets";
2754
static const char* jkJoinPhysiPlanColOnConditions = "ColumnOnConditions";
2755
static const char* jkJoinPhysiPlanLeftInputRowNum = "LeftInputRowNum";
2756
static const char* jkJoinPhysiPlanRightInputRowNum = "RightInputRowNum";
2757
static const char* jkJoinPhysiPlanLeftInputRowSize = "LeftInputRowSize";
2758
static const char* jkJoinPhysiPlanRightInputRowSize = "RightInputRowSize";
2759
static const char* jkJoinPhysiPlanSeqWinGroup = "SeqWinGroup";
2760
static const char* jkJoinPhysiPlanGroupJoin = "GroupJoin";
2761
static const char* jkJoinPhysiPlanLeftOnCond = "LeftOnCond";
2762
static const char* jkJoinPhysiPlanRightOnCond = "RightOnCond";
2763
static const char* jkJoinPhysiPlanTimeRangeSKey = "TimeRangeSKey";
2764
static const char* jkJoinPhysiPlanTimeRangeEKey = "TimeRangeEKey";
2765
static const char* jkJoinPhysiPlanTimeRangeTarget = "TimeRangeTarget";
2766

2767
static int32_t physiMergeJoinNodeToJson(const void* pObj, SJson* pJson) {
13,608,488✔
2768
  const SSortMergeJoinPhysiNode* pNode = (const SSortMergeJoinPhysiNode*)pObj;
13,608,488✔
2769

2770
  int32_t code = physicPlanNodeToJson(pObj, pJson);
13,608,488✔
2771
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2772
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanJoinType, pNode->joinType);
13,608,488✔
2773
  }
2774
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2775
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanSubType, pNode->subType);
13,608,488✔
2776
  }
2777
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2778
    code = tjsonAddObject(pJson, jkJoinPhysiPlanWinOffset, nodeToJson, pNode->pWindowOffset);
13,608,488✔
2779
  }
2780
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2781
    code = tjsonAddObject(pJson, jkJoinPhysiPlanJoinLimit, nodeToJson, pNode->pJLimit);
13,608,488✔
2782
  }
2783
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2784
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanAsofOp, pNode->asofOpType);
13,608,488✔
2785
  }
2786
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2787
    code = tjsonAddObject(pJson, jkJoinPhysiPlanLeftPrimExpr, nodeToJson, pNode->leftPrimExpr);
13,608,488✔
2788
  }
2789
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2790
    code = tjsonAddObject(pJson, jkJoinPhysiPlanRightPrimExpr, nodeToJson, pNode->rightPrimExpr);
13,608,488✔
2791
  }
2792
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2793
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId);
13,608,488✔
2794
  }
2795
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2796
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId);
13,608,488✔
2797
  }
2798
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2799
    code = nodeListToJson(pJson, jkJoinPhysiPlanLeftEqCols, pNode->pEqLeft);
13,608,488✔
2800
  }
2801
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2802
    code = nodeListToJson(pJson, jkJoinPhysiPlanRightEqCols, pNode->pEqRight);
13,608,488✔
2803
  }
2804
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2805
    code = tjsonAddObject(pJson, jkJoinPhysiPlanOnConditions, nodeToJson, pNode->pFullOnCond);
13,608,488✔
2806
  }
2807
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2808
    code = nodeListToJson(pJson, jkJoinPhysiPlanTargets, pNode->pTargets);
13,608,488✔
2809
  }
2810
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2811
    code = tjsonAddObject(pJson, jkJoinPhysiPlanColOnConditions, nodeToJson, pNode->pColOnCond);
13,608,488✔
2812
  }
2813
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2814
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum);
13,608,488✔
2815
  }
2816
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2817
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize);
13,608,488✔
2818
  }
2819
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2820
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum);
13,608,488✔
2821
  }
2822
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2823
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize);
13,608,488✔
2824
  }
2825
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2826
    code = tjsonAddBoolToObject(pJson, jkJoinPhysiPlanSeqWinGroup, pNode->seqWinGroup);
13,608,488✔
2827
  }
2828
  if (TSDB_CODE_SUCCESS == code) {
13,608,488✔
2829
    code = tjsonAddBoolToObject(pJson, jkJoinPhysiPlanGroupJoin, pNode->grpJoin);
13,608,488✔
2830
  }
2831

2832
  return code;
13,608,488✔
2833
}
2834

2835
static int32_t jsonToPhysiMergeJoinNode(const SJson* pJson, void* pObj) {
1,180✔
2836
  SSortMergeJoinPhysiNode* pNode = (SSortMergeJoinPhysiNode*)pObj;
1,180✔
2837

2838
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
1,180✔
2839
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2840
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanJoinType, pNode->joinType, code);
1,180✔
2841
  }
2842
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2843
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanSubType, pNode->subType, code);
1,180✔
2844
  }
2845
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2846
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanWinOffset, &pNode->pWindowOffset);
1,180✔
2847
  }
2848
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2849
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanJoinLimit, &pNode->pJLimit);
1,180✔
2850
  }
2851
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2852
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanAsofOp, pNode->asofOpType, code);
1,180✔
2853
  }
2854
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2855
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanLeftPrimExpr, &pNode->leftPrimExpr);
1,180✔
2856
  }
2857
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2858
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanRightPrimExpr, &pNode->rightPrimExpr);
1,180✔
2859
  }
2860
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2861
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId, code);
1,180✔
2862
  }
2863
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2864
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId, code);
1,180✔
2865
  }
2866
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2867
    code = jsonToNodeList(pJson, jkJoinPhysiPlanLeftEqCols, &pNode->pEqLeft);
1,180✔
2868
  }
2869
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2870
    code = jsonToNodeList(pJson, jkJoinPhysiPlanRightEqCols, &pNode->pEqRight);
1,180✔
2871
  }
2872
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2873
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanOnConditions, &pNode->pFullOnCond);
1,180✔
2874
  }
2875
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2876
    code = jsonToNodeList(pJson, jkJoinPhysiPlanTargets, &pNode->pTargets);
1,180✔
2877
  }
2878
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2879
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanColOnConditions, &pNode->pColOnCond);
1,180✔
2880
  }
2881
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2882
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum, code);
1,180✔
2883
  }
2884
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2885
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize, code);
1,180✔
2886
  }
2887
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2888
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum, code);
1,180✔
2889
  }
2890
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2891
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize, code);
1,180✔
2892
  }
2893
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2894
    code = tjsonGetBoolValue(pJson, jkJoinPhysiPlanSeqWinGroup, &pNode->seqWinGroup);
1,180✔
2895
  }
2896
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2897
    code = tjsonGetBoolValue(pJson, jkJoinPhysiPlanGroupJoin, &pNode->grpJoin);
1,180✔
2898
  }
2899

2900
  return code;
1,180✔
2901
}
2902

2903
static int32_t physiHashJoinNodeToJson(const void* pObj, SJson* pJson) {
1,794,619✔
2904
  const SHashJoinPhysiNode* pNode = (const SHashJoinPhysiNode*)pObj;
1,794,619✔
2905

2906
  int32_t code = physicPlanNodeToJson(pObj, pJson);
1,794,619✔
2907
  if (TSDB_CODE_SUCCESS == code) {
1,794,619✔
2908
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanJoinType, pNode->joinType);
1,794,619✔
2909
  }
2910
  if (TSDB_CODE_SUCCESS == code) {
1,794,619✔
2911
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanSubType, pNode->subType);
1,794,619✔
2912
  }
2913
  if (TSDB_CODE_SUCCESS == code) {
1,794,619✔
2914
    code = nodeListToJson(pJson, jkJoinPhysiPlanOnLeftCols, pNode->pOnLeft);
1,794,619✔
2915
  }
2916
  if (TSDB_CODE_SUCCESS == code) {
1,794,619✔
2917
    code = nodeListToJson(pJson, jkJoinPhysiPlanOnRightCols, pNode->pOnRight);
1,794,619✔
2918
  }
2919
  if (TSDB_CODE_SUCCESS == code) {
1,794,619✔
2920
    code = tjsonAddObject(pJson, jkJoinPhysiPlanLeftPrimExpr, nodeToJson, pNode->leftPrimExpr);
1,794,619✔
2921
  }
2922
  if (TSDB_CODE_SUCCESS == code) {
1,794,619✔
2923
    code = tjsonAddObject(pJson, jkJoinPhysiPlanRightPrimExpr, nodeToJson, pNode->rightPrimExpr);
1,794,619✔
2924
  }
2925
  if (TSDB_CODE_SUCCESS == code) {
1,794,619✔
2926
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId);
1,794,619✔
2927
  }
2928
  if (TSDB_CODE_SUCCESS == code) {
1,794,619✔
2929
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId);
1,794,619✔
2930
  }
2931
  if (TSDB_CODE_SUCCESS == code) {
1,794,619✔
2932
    code = tjsonAddObject(pJson, jkJoinPhysiPlanOnConditions, nodeToJson, pNode->pFullOnCond);
1,794,619✔
2933
  }
2934
  if (TSDB_CODE_SUCCESS == code) {
1,794,619✔
2935
    code = nodeListToJson(pJson, jkJoinPhysiPlanTargets, pNode->pTargets);
1,794,619✔
2936
  }
2937
  if (TSDB_CODE_SUCCESS == code) {
1,794,619✔
2938
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum);
1,794,619✔
2939
  }
2940
  if (TSDB_CODE_SUCCESS == code) {
1,794,619✔
2941
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize);
1,794,619✔
2942
  }
2943
  if (TSDB_CODE_SUCCESS == code) {
1,794,619✔
2944
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum);
1,794,619✔
2945
  }
2946
  if (TSDB_CODE_SUCCESS == code) {
1,794,619✔
2947
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize);
1,794,619✔
2948
  }
2949
  if (TSDB_CODE_SUCCESS == code) {
1,794,619✔
2950
    code = tjsonAddObject(pJson, jkJoinPhysiPlanLeftOnCond, nodeToJson, pNode->pLeftOnCond);
1,794,619✔
2951
  }
2952
  if (TSDB_CODE_SUCCESS == code) {
1,794,619✔
2953
    code = tjsonAddObject(pJson, jkJoinPhysiPlanRightOnCond, nodeToJson, pNode->pRightOnCond);
1,794,619✔
2954
  }
2955
  if (TSDB_CODE_SUCCESS == code) {
1,794,619✔
2956
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanTimeRangeTarget, pNode->timeRangeTarget);
1,794,619✔
2957
  }
2958
  if (TSDB_CODE_SUCCESS == code) {
1,794,619✔
2959
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanTimeRangeSKey, pNode->timeRange.skey);
1,794,619✔
2960
  }
2961
  if (TSDB_CODE_SUCCESS == code) {
1,794,619✔
2962
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanTimeRangeEKey, pNode->timeRange.ekey);
1,794,619✔
2963
  }
2964

2965
  return code;
1,794,619✔
2966
}
2967

2968
static int32_t jsonToPhysiHashJoinNode(const SJson* pJson, void* pObj) {
1,180✔
2969
  SHashJoinPhysiNode* pNode = (SHashJoinPhysiNode*)pObj;
1,180✔
2970

2971
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
1,180✔
2972
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2973
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanJoinType, pNode->joinType, code);
1,180✔
2974
  }
2975
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2976
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanSubType, pNode->subType, code);
1,180✔
2977
  }
2978
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2979
    code = jsonToNodeList(pJson, jkJoinPhysiPlanOnLeftCols, &pNode->pOnLeft);
1,180✔
2980
  }
2981
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2982
    code = jsonToNodeList(pJson, jkJoinPhysiPlanOnRightCols, &pNode->pOnRight);
1,180✔
2983
  }
2984
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2985
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanLeftPrimExpr, &pNode->leftPrimExpr);
1,180✔
2986
  }
2987
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2988
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanRightPrimExpr, &pNode->rightPrimExpr);
1,180✔
2989
  }
2990
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2991
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId, code);
1,180✔
2992
  }
2993
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2994
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId, code);
1,180✔
2995
  }
2996
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
2997
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanOnConditions, &pNode->pFullOnCond);
1,180✔
2998
  }
2999
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
3000
    code = jsonToNodeList(pJson, jkJoinPhysiPlanTargets, &pNode->pTargets);
1,180✔
3001
  }
3002
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
3003
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum, code);
1,180✔
3004
  }
3005
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
3006
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize, code);
1,180✔
3007
  }
3008
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
3009
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum, code);
1,180✔
3010
  }
3011
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
3012
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize, code);
1,180✔
3013
  }
3014
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
3015
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanLeftOnCond, &pNode->pLeftOnCond);
1,180✔
3016
  }
3017
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
3018
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanRightOnCond, &pNode->pRightOnCond);
1,180✔
3019
  }
3020
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
3021
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanTimeRangeTarget, pNode->timeRangeTarget, code);
1,180✔
3022
  }
3023
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
3024
    code = tjsonGetBigIntValue(pJson, jkJoinPhysiPlanTimeRangeSKey, &pNode->timeRange.skey);
1,180✔
3025
  }
3026
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
3027
    code = tjsonGetBigIntValue(pJson, jkJoinPhysiPlanTimeRangeEKey, &pNode->timeRange.ekey);
1,180✔
3028
  }
3029

3030
  return code;
1,180✔
3031
}
3032

3033
static const char* jkAggPhysiPlanExprs = "Exprs";
3034
static const char* jkAggPhysiPlanGroupKeys = "GroupKeys";
3035
static const char* jkAggPhysiPlanAggFuncs = "AggFuncs";
3036
static const char* jkAggPhysiPlanMergeDataBlock = "MergeDataBlock";
3037
static const char* jkAggPhysiPlanGroupKeyOptimized = "GroupKeyOptimized";
3038
static const char* jkAggPhysiPlanHasCountLikeFunc = "HasCountFunc";
3039

3040
static int32_t physiAggNodeToJson(const void* pObj, SJson* pJson) {
104,689,403✔
3041
  const SAggPhysiNode* pNode = (const SAggPhysiNode*)pObj;
104,689,403✔
3042

3043
  int32_t code = physicPlanNodeToJson(pObj, pJson);
104,689,403✔
3044
  if (TSDB_CODE_SUCCESS == code) {
104,688,449✔
3045
    code = nodeListToJson(pJson, jkAggPhysiPlanExprs, pNode->pExprs);
104,688,449✔
3046
  }
3047
  if (TSDB_CODE_SUCCESS == code) {
104,688,926✔
3048
    code = nodeListToJson(pJson, jkAggPhysiPlanGroupKeys, pNode->pGroupKeys);
104,688,926✔
3049
  }
3050
  if (TSDB_CODE_SUCCESS == code) {
104,689,403✔
3051
    code = nodeListToJson(pJson, jkAggPhysiPlanAggFuncs, pNode->pAggFuncs);
104,689,403✔
3052
  }
3053
  if (TSDB_CODE_SUCCESS == code) {
104,689,403✔
3054
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
104,689,403✔
3055
  }
3056
  if (TSDB_CODE_SUCCESS == code) {
104,689,880✔
3057
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanGroupKeyOptimized, pNode->groupKeyOptimized);
104,689,880✔
3058
  }
3059
  if (TSDB_CODE_SUCCESS == code) {
104,689,880✔
3060
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanHasCountLikeFunc, pNode->hasCountLikeFunc);
104,689,880✔
3061
  }
3062

3063
  return code;
104,689,880✔
3064
}
3065

3066
static int32_t jsonToPhysiAggNode(const SJson* pJson, void* pObj) {
418,298✔
3067
  SAggPhysiNode* pNode = (SAggPhysiNode*)pObj;
418,298✔
3068

3069
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
418,298✔
3070
  if (TSDB_CODE_SUCCESS == code) {
418,298✔
3071
    code = jsonToNodeList(pJson, jkAggPhysiPlanExprs, &pNode->pExprs);
418,298✔
3072
  }
3073
  if (TSDB_CODE_SUCCESS == code) {
418,298✔
3074
    code = jsonToNodeList(pJson, jkAggPhysiPlanGroupKeys, &pNode->pGroupKeys);
418,298✔
3075
  }
3076
  if (TSDB_CODE_SUCCESS == code) {
418,298✔
3077
    code = jsonToNodeList(pJson, jkAggPhysiPlanAggFuncs, &pNode->pAggFuncs);
418,298✔
3078
  }
3079
  if (TSDB_CODE_SUCCESS == code) {
418,298✔
3080
    code = tjsonGetBoolValue(pJson, jkAggPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
418,298✔
3081
  }
3082
  if (TSDB_CODE_SUCCESS == code) {
418,298✔
3083
    code = tjsonGetBoolValue(pJson, jkAggPhysiPlanGroupKeyOptimized, &pNode->groupKeyOptimized);
418,298✔
3084
  }
3085
  if (TSDB_CODE_SUCCESS == code) {
418,298✔
3086
    code = tjsonGetBoolValue(pJson, jkAggPhysiPlanHasCountLikeFunc, &pNode->hasCountLikeFunc);
418,298✔
3087
  }
3088

3089
  return code;
418,298✔
3090
}
3091

3092
static const char* jkExchangePhysiPlanSrcStartGroupId = "SrcStartGroupId";
3093
static const char* jkExchangePhysiPlanSrcEndGroupId = "SrcEndGroupId";
3094
static const char* jkExchangePhysiPlanSrcEndPoints = "SrcEndPoints";
3095
static const char* jkExchangePhysiPlanSeqRecvData = "SeqRecvData";
3096
static const char* jkExchangePhysiPlanDynTbname = "DynTbname";
3097
static const char* jkExchangePhysiPlanSingleChannel = "SingleChannel";
3098

3099
static int32_t physiExchangeNodeToJson(const void* pObj, SJson* pJson) {
107,108,773✔
3100
  const SExchangePhysiNode* pNode = (const SExchangePhysiNode*)pObj;
107,108,773✔
3101

3102
  int32_t code = physicPlanNodeToJson(pObj, pJson);
107,108,773✔
3103
  if (TSDB_CODE_SUCCESS == code) {
107,108,773✔
3104
    code = tjsonAddIntegerToObject(pJson, jkExchangePhysiPlanSrcStartGroupId, pNode->srcStartGroupId);
107,108,773✔
3105
  }
3106
  if (TSDB_CODE_SUCCESS == code) {
107,108,773✔
3107
    code = tjsonAddIntegerToObject(pJson, jkExchangePhysiPlanSrcEndGroupId, pNode->srcEndGroupId);
107,108,773✔
3108
  }
3109
  if (TSDB_CODE_SUCCESS == code) {
107,108,773✔
3110
    code = nodeListToJson(pJson, jkExchangePhysiPlanSrcEndPoints, pNode->pSrcEndPoints);
107,108,773✔
3111
  }
3112
  if (TSDB_CODE_SUCCESS == code) {
107,108,773✔
3113
    code = tjsonAddBoolToObject(pJson, jkExchangePhysiPlanSeqRecvData, pNode->seqRecvData);
107,108,773✔
3114
  }
3115
  if (TSDB_CODE_SUCCESS == code) {
107,108,773✔
3116
    code = tjsonAddBoolToObject(pJson, jkExchangePhysiPlanDynTbname, pNode->dynTbname);
107,108,773✔
3117
  }
3118
  if (TSDB_CODE_SUCCESS == code) {
107,108,773✔
3119
    code = tjsonAddBoolToObject(pJson, jkExchangePhysiPlanSingleChannel, pNode->singleChannel);
107,108,773✔
3120
  }
3121

3122
  return code;
107,108,773✔
3123
}
3124

3125
static int32_t jsonToPhysiExchangeNode(const SJson* pJson, void* pObj) {
921,287✔
3126
  SExchangePhysiNode* pNode = (SExchangePhysiNode*)pObj;
921,287✔
3127

3128
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
921,287✔
3129
  if (TSDB_CODE_SUCCESS == code) {
921,447✔
3130
    code = tjsonGetIntValue(pJson, jkExchangePhysiPlanSrcStartGroupId, &pNode->srcStartGroupId);
921,447✔
3131
  }
3132
  if (TSDB_CODE_SUCCESS == code) {
921,447✔
3133
    code = tjsonGetIntValue(pJson, jkExchangePhysiPlanSrcEndGroupId, &pNode->srcEndGroupId);
921,447✔
3134
  }
3135
  if (TSDB_CODE_SUCCESS == code) {
921,447✔
3136
    code = jsonToNodeList(pJson, jkExchangePhysiPlanSrcEndPoints, &pNode->pSrcEndPoints);
921,447✔
3137
  }
3138
  if (TSDB_CODE_SUCCESS == code) {
921,447✔
3139
    code = tjsonGetBoolValue(pJson, jkExchangePhysiPlanSeqRecvData, &pNode->seqRecvData);
921,447✔
3140
  }
3141
  if (TSDB_CODE_SUCCESS == code) {
921,447✔
3142
    code = tjsonGetBoolValue(pJson, jkExchangePhysiPlanDynTbname, &pNode->dynTbname);
921,447✔
3143
  }
3144
  if (TSDB_CODE_SUCCESS == code) {
921,447✔
3145
    code = tjsonGetBoolValue(pJson, jkExchangePhysiPlanSingleChannel, &pNode->singleChannel);
921,447✔
3146
  }
3147

3148
  return code;
921,447✔
3149
}
3150

3151
static const char* jkMergePhysiPlanMergeKeys = "MergeKeys";
3152
static const char* jkMergePhysiPlanTargets = "Targets";
3153
static const char* jkMergePhysiPlanNumOfChannels = "NumOfChannels";
3154
static const char* jkMergePhysiPlanSrcGroupId = "SrcGroupId";
3155
static const char* jkMergePhysiPlanSrcEndGroupId = "SrcEndGroupId";
3156
static const char* jkMergePhysiPlanGroupSort = "GroupSort";
3157
static const char* jkMergePhysiPlanIgnoreGroupID = "IgnoreGroupID";
3158
static const char* jkMergePhysiPlanInputWithGroupId = "InputWithGroupId";
3159
static const char* jkMergePhysiPlanType = "Type";
3160

3161
static int32_t physiMergeNodeToJson(const void* pObj, SJson* pJson) {
15,528,445✔
3162
  const SMergePhysiNode* pNode = (const SMergePhysiNode*)pObj;
15,528,445✔
3163

3164
  int32_t code = physicPlanNodeToJson(pObj, pJson);
15,528,445✔
3165
  if (TSDB_CODE_SUCCESS == code) {
15,528,445✔
3166
    code = nodeListToJson(pJson, jkMergePhysiPlanMergeKeys, pNode->pMergeKeys);
15,528,445✔
3167
  }
3168
  if (TSDB_CODE_SUCCESS == code) {
15,528,445✔
3169
    code = nodeListToJson(pJson, jkMergePhysiPlanTargets, pNode->pTargets);
15,528,445✔
3170
  }
3171
  if (TSDB_CODE_SUCCESS == code) {
15,528,445✔
3172
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanNumOfChannels, pNode->numOfChannels);
15,528,445✔
3173
  }
3174
  if (TSDB_CODE_SUCCESS == code) {
15,528,445✔
3175
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanSrcGroupId, pNode->srcGroupId);
15,528,445✔
3176
  }
3177
  if (TSDB_CODE_SUCCESS == code) {
15,528,445✔
3178
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanSrcEndGroupId, pNode->srcEndGroupId);
15,528,445✔
3179
  }
3180
  if (TSDB_CODE_SUCCESS == code) {
15,528,445✔
3181
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanGroupSort, pNode->groupSort);
15,528,445✔
3182
  }
3183
  if (TSDB_CODE_SUCCESS == code) {
15,528,445✔
3184
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanIgnoreGroupID, pNode->ignoreGroupId);
15,528,445✔
3185
  }
3186
  if (TSDB_CODE_SUCCESS == code) {
15,528,445✔
3187
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanInputWithGroupId, pNode->inputWithGroupId);
15,528,445✔
3188
  }
3189
  if (TSDB_CODE_SUCCESS == code) {
15,528,445✔
3190
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanType, pNode->type);
15,528,445✔
3191
  }
3192

3193
  return code;
15,528,445✔
3194
}
3195

3196
static int32_t jsonToPhysiMergeNode(const SJson* pJson, void* pObj) {
12,285✔
3197
  SMergePhysiNode* pNode = (SMergePhysiNode*)pObj;
12,285✔
3198

3199
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
12,285✔
3200
  if (TSDB_CODE_SUCCESS == code) {
12,285✔
3201
    code = jsonToNodeList(pJson, jkMergePhysiPlanMergeKeys, &pNode->pMergeKeys);
12,285✔
3202
  }
3203
  if (TSDB_CODE_SUCCESS == code) {
12,285✔
3204
    code = jsonToNodeList(pJson, jkMergePhysiPlanTargets, &pNode->pTargets);
12,285✔
3205
  }
3206
  if (TSDB_CODE_SUCCESS == code) {
12,285✔
3207
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanNumOfChannels, &pNode->numOfChannels);
12,285✔
3208
  }
3209
  if (TSDB_CODE_SUCCESS == code) {
12,285✔
3210
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanSrcGroupId, &pNode->srcGroupId);
12,285✔
3211
  }
3212
  if (TSDB_CODE_SUCCESS == code) {
12,285✔
3213
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanSrcEndGroupId, &pNode->srcEndGroupId);
12,285✔
3214
  }
3215
  if (TSDB_CODE_SUCCESS == code) {
12,285✔
3216
    code = tjsonGetBoolValue(pJson, jkMergePhysiPlanGroupSort, &pNode->groupSort);
12,285✔
3217
  }
3218
  if (TSDB_CODE_SUCCESS == code) {
12,285✔
3219
    code = tjsonGetBoolValue(pJson, jkMergePhysiPlanIgnoreGroupID, &pNode->ignoreGroupId);
12,285✔
3220
  }
3221
  if (TSDB_CODE_SUCCESS == code) {
12,285✔
3222
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanType, (int32_t*)&pNode->type);
12,285✔
3223
  }
3224

3225
  return code;
12,285✔
3226
}
3227

3228
static const char* jkSortPhysiPlanExprs = "Exprs";
3229
static const char* jkSortPhysiPlanSortKeys = "SortKeys";
3230
static const char* jkSortPhysiPlanTargets = "Targets";
3231
static const char* jkSortPhysiPlanCalcGroupIds = "CalcGroupIds";
3232
static const char* jkSortPhysiPlanExcludePKCol = "ExcludePKCol";
3233

3234
static int32_t physiSortNodeToJson(const void* pObj, SJson* pJson) {
32,220,662✔
3235
  const SSortPhysiNode* pNode = (const SSortPhysiNode*)pObj;
32,220,662✔
3236

3237
  int32_t code = physicPlanNodeToJson(pObj, pJson);
32,220,662✔
3238
  if (TSDB_CODE_SUCCESS == code) {
32,220,662✔
3239
    code = nodeListToJson(pJson, jkSortPhysiPlanExprs, pNode->pExprs);
32,220,662✔
3240
  }
3241
  if (TSDB_CODE_SUCCESS == code) {
32,220,662✔
3242
    code = nodeListToJson(pJson, jkSortPhysiPlanSortKeys, pNode->pSortKeys);
32,220,662✔
3243
  }
3244
  if (TSDB_CODE_SUCCESS == code) {
32,220,662✔
3245
    code = nodeListToJson(pJson, jkSortPhysiPlanTargets, pNode->pTargets);
32,220,662✔
3246
  }
3247
  if (TSDB_CODE_SUCCESS == code) {
32,220,662✔
3248
    code = tjsonAddBoolToObject(pJson, jkSortPhysiPlanCalcGroupIds, pNode->calcGroupId);
32,220,662✔
3249
  }
3250
  if (TSDB_CODE_SUCCESS == code) {
32,220,662✔
3251
    code = tjsonAddBoolToObject(pJson, jkSortPhysiPlanExcludePKCol, pNode->excludePkCol);
32,220,662✔
3252
  }
3253

3254
  return code;
32,220,662✔
3255
}
3256

3257
static int32_t jsonToPhysiSortNode(const SJson* pJson, void* pObj) {
120,457✔
3258
  SSortPhysiNode* pNode = (SSortPhysiNode*)pObj;
120,457✔
3259

3260
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
120,457✔
3261
  if (TSDB_CODE_SUCCESS == code) {
120,457✔
3262
    code = jsonToNodeList(pJson, jkSortPhysiPlanExprs, &pNode->pExprs);
120,457✔
3263
  }
3264
  if (TSDB_CODE_SUCCESS == code) {
120,457✔
3265
    code = jsonToNodeList(pJson, jkSortPhysiPlanSortKeys, &pNode->pSortKeys);
120,457✔
3266
  }
3267
  if (TSDB_CODE_SUCCESS == code) {
120,457✔
3268
    code = jsonToNodeList(pJson, jkSortPhysiPlanTargets, &pNode->pTargets);
120,457✔
3269
  }
3270
  if (TSDB_CODE_SUCCESS == code) {
120,457✔
3271
    code = tjsonGetBoolValue(pJson, jkSortPhysiPlanCalcGroupIds, &pNode->calcGroupId);
120,457✔
3272
  }
3273
  if (TSDB_CODE_SUCCESS == code) {
120,457✔
3274
    code = tjsonGetBoolValue(pJson, jkSortPhysiPlanExcludePKCol, &pNode->excludePkCol);
120,457✔
3275
  }
3276

3277
  return code;
120,457✔
3278
}
3279

3280
static const char* jkWindowPhysiPlanExprs = "Exprs";
3281
static const char* jkWindowPhysiPlanFuncs = "Funcs";
3282
static const char* jkWindowPhysiPlanProjs = "Projs";
3283
static const char* jkWindowPhysiPlanTsPk = "TsPk";
3284
static const char* jkWindowPhysiPlanTsEnd = "TsEnd";
3285
static const char* jkWindowPhysiPlanTriggerType = "TriggerType";
3286
static const char* jkWindowPhysiPlanWatermark = "Watermark";
3287
static const char* jkWindowPhysiPlanDeleteMark = "DeleteMark";
3288
static const char* jkWindowPhysiPlanIgnoreExpired = "IgnoreExpired";
3289
static const char* jkWindowPhysiPlanInputTsOrder = "InputTsOrder";
3290
static const char* jkWindowPhysiPlanMergeDataBlock = "MergeDataBlock";
3291
static const char* jkWindowPhysiPlanDestHasPrimaryKey = "DestHasPrimaryKey";
3292
static const char* jkWindowPhysiPlanRecalculateInterval = "RecalculateInterval";
3293
static const char* jkWindowPhysiPlanIndefRowsFunc = "IndefRowsFunc";
3294

3295
static int32_t physiWindowNodeToJson(const void* pObj, SJson* pJson) {
8,050,689✔
3296
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
8,050,689✔
3297

3298
  int32_t code = physicPlanNodeToJson(pObj, pJson);
8,050,689✔
3299
  if (TSDB_CODE_SUCCESS == code) {
8,050,322✔
3300
    code = nodeListToJson(pJson, jkWindowPhysiPlanExprs, pNode->pExprs);
8,050,689✔
3301
  }
3302
  if (TSDB_CODE_SUCCESS == code) {
8,050,689✔
3303
    code = nodeListToJson(pJson, jkWindowPhysiPlanFuncs, pNode->pFuncs);
8,050,689✔
3304
  }
3305
  if (TSDB_CODE_SUCCESS == code) {
8,050,689✔
3306
    code = nodeListToJson(pJson, jkWindowPhysiPlanProjs, pNode->pProjs);
8,050,689✔
3307
  }
3308
  if (TSDB_CODE_SUCCESS == code) {
8,050,322✔
3309
    code = tjsonAddObject(pJson, jkWindowPhysiPlanTsPk, nodeToJson, pNode->pTspk);
8,050,322✔
3310
  }
3311
  if (TSDB_CODE_SUCCESS == code) {
8,050,689✔
3312
    code = tjsonAddObject(pJson, jkWindowPhysiPlanTsEnd, nodeToJson, pNode->pTsEnd);
8,050,689✔
3313
  }
3314
  if (TSDB_CODE_SUCCESS == code) {
8,050,322✔
3315
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanTriggerType, pNode->unusedParam1);
8,050,322✔
3316
  }
3317
  if (TSDB_CODE_SUCCESS == code) {
8,050,689✔
3318
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanWatermark, pNode->unusedParam2);
8,050,689✔
3319
  }
3320
  if (TSDB_CODE_SUCCESS == code) {
8,050,689✔
3321
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanDeleteMark, pNode->unusedParam3);
8,050,689✔
3322
  }
3323
  if (TSDB_CODE_SUCCESS == code) {
8,050,689✔
3324
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanIgnoreExpired, pNode->unusedParam4);
8,050,689✔
3325
  }
3326
  if (TSDB_CODE_SUCCESS == code) {
8,050,322✔
3327
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanIndefRowsFunc, pNode->indefRowsFunc);
8,050,322✔
3328
  }
3329
  if (TSDB_CODE_SUCCESS == code) {
8,050,689✔
3330
    code = tjsonAddBoolToObject(pJson, jkWindowPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
8,050,689✔
3331
  }
3332
  if (TSDB_CODE_SUCCESS == code) {
8,050,689✔
3333
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanRecalculateInterval, pNode->unusedParam5);
8,050,689✔
3334
  }
3335

3336
  return code;
8,050,689✔
3337
}
3338

3339
static int32_t jsonToPhysiWindowNode(const SJson* pJson, void* pObj) {
311,169✔
3340
  SWindowPhysiNode* pNode = (SWindowPhysiNode*)pObj;
311,169✔
3341

3342
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
311,169✔
3343
  if (TSDB_CODE_SUCCESS == code) {
311,169✔
3344
    code = jsonToNodeList(pJson, jkWindowPhysiPlanExprs, &pNode->pExprs);
311,169✔
3345
  }
3346
  if (TSDB_CODE_SUCCESS == code) {
311,169✔
3347
    code = jsonToNodeList(pJson, jkWindowPhysiPlanFuncs, &pNode->pFuncs);
311,169✔
3348
  }
3349
  if (TSDB_CODE_SUCCESS == code) {
311,169✔
3350
    code = jsonToNodeList(pJson, jkWindowPhysiPlanProjs, &pNode->pProjs);
311,169✔
3351
  }
3352
  if (TSDB_CODE_SUCCESS == code) {
311,169✔
3353
    code = jsonToNodeObject(pJson, jkWindowPhysiPlanTsPk, (SNode**)&pNode->pTspk);
311,169✔
3354
  }
3355
  if (TSDB_CODE_SUCCESS == code) {
311,169✔
3356
    code = jsonToNodeObject(pJson, jkWindowPhysiPlanTsEnd, (SNode**)&pNode->pTsEnd);
311,169✔
3357
  }
3358
  if (TSDB_CODE_SUCCESS == code) {
311,009✔
3359
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanTriggerType, &pNode->unusedParam1);
311,009✔
3360
  }
3361
  if (TSDB_CODE_SUCCESS == code) {
311,169✔
3362
    code = tjsonGetBigIntValue(pJson, jkWindowPhysiPlanWatermark, &pNode->unusedParam2);
311,169✔
3363
  }
3364
  if (TSDB_CODE_SUCCESS == code) {
311,169✔
3365
    code = tjsonGetBigIntValue(pJson, jkWindowPhysiPlanDeleteMark, &pNode->unusedParam3);
311,169✔
3366
  }
3367
  if (TSDB_CODE_SUCCESS == code) {
311,169✔
3368
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanIgnoreExpired, &pNode->unusedParam4);
311,169✔
3369
  }
3370
  if (TSDB_CODE_SUCCESS == code) {
311,169✔
3371
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanIndefRowsFunc, &pNode->indefRowsFunc);
311,169✔
3372
  }
3373
  if (TSDB_CODE_SUCCESS == code) {
311,169✔
3374
    code = tjsonGetBoolValue(pJson, jkWindowPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
311,169✔
3375
  }
3376
  if (TSDB_CODE_SUCCESS == code) {
311,169✔
3377
    code = tjsonGetBigIntValue(pJson, jkWindowPhysiPlanRecalculateInterval, &pNode->unusedParam5);
311,169✔
3378
  }
3379

3380
  return code;
311,169✔
3381
}
3382

3383
static const char* jkIntervalPhysiPlanInterval = "Interval";
3384
static const char* jkIntervalPhysiPlanOffset = "Offset";
3385
static const char* jkIntervalPhysiPlanSliding = "Sliding";
3386
static const char* jkIntervalPhysiPlanIntervalUnit = "intervalUnit";
3387
static const char* jkIntervalPhysiPlanSlidingUnit = "slidingUnit";
3388
static const char* jkIntervalPhysiPlanStartTime = "StartTime";
3389
static const char* jkIntervalPhysiPlanEndTime = "EndTime";
3390

3391
static int32_t physiIntervalNodeToJson(const void* pObj, SJson* pJson) {
5,624,179✔
3392
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
5,624,179✔
3393

3394
  int32_t code = physiWindowNodeToJson(pObj, pJson);
5,624,179✔
3395
  if (TSDB_CODE_SUCCESS == code) {
5,624,179✔
3396
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanInterval, pNode->interval);
5,624,179✔
3397
  }
3398
  if (TSDB_CODE_SUCCESS == code) {
5,624,179✔
3399
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanOffset, pNode->offset);
5,624,179✔
3400
  }
3401
  if (TSDB_CODE_SUCCESS == code) {
5,624,179✔
3402
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanSliding, pNode->sliding);
5,624,179✔
3403
  }
3404
  if (TSDB_CODE_SUCCESS == code) {
5,624,179✔
3405
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanIntervalUnit, pNode->intervalUnit);
5,624,179✔
3406
  }
3407
  if (TSDB_CODE_SUCCESS == code) {
5,624,179✔
3408
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanSlidingUnit, pNode->slidingUnit);
5,624,179✔
3409
  }
3410
  if (TSDB_CODE_SUCCESS == code) {
5,624,179✔
3411
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanStartTime, pNode->timeRange.skey);
5,624,179✔
3412
  }
3413
  if (TSDB_CODE_SUCCESS == code) {
5,624,179✔
3414
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanEndTime, pNode->timeRange.ekey);
5,624,179✔
3415
  }
3416

3417
  return code;
5,624,179✔
3418
}
3419

3420
static int32_t jsonToPhysiIntervalNode(const SJson* pJson, void* pObj) {
2,340✔
3421
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
2,340✔
3422

3423
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
2,340✔
3424
  if (TSDB_CODE_SUCCESS == code) {
2,340✔
3425
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanInterval, &pNode->interval);
2,340✔
3426
  }
3427
  if (TSDB_CODE_SUCCESS == code) {
2,340✔
3428
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanOffset, &pNode->offset);
2,340✔
3429
  }
3430
  if (TSDB_CODE_SUCCESS == code) {
2,340✔
3431
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanSliding, &pNode->sliding);
2,340✔
3432
  }
3433
  if (TSDB_CODE_SUCCESS == code) {
2,340✔
3434
    code = tjsonGetTinyIntValue(pJson, jkIntervalPhysiPlanIntervalUnit, &pNode->intervalUnit);
2,340✔
3435
  }
3436
  if (TSDB_CODE_SUCCESS == code) {
2,340✔
3437
    code = tjsonGetTinyIntValue(pJson, jkIntervalPhysiPlanSlidingUnit, &pNode->slidingUnit);
2,340✔
3438
  }
3439
  if (TSDB_CODE_SUCCESS == code) {
2,340✔
3440
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanStartTime, &pNode->timeRange.skey);
2,340✔
3441
  }
3442
  if (TSDB_CODE_SUCCESS == code) {
2,340✔
3443
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanEndTime, &pNode->timeRange.ekey);
2,340✔
3444
  }
3445

3446
  return code;
2,340✔
3447
}
3448

3449
static const char* jkExternalPhysiPlanStartTime = "StartTime";
3450
static const char* jkExternalPhysiPlanEndTime = "EndTime";
3451
static const char* jkExternalPhysiPlanTimeRangeExpr = "TimeRangeExpr";
3452
static const char* jkExternalPhysiPlanIsSingleTable = "IsSingleTable";
3453
static const char* jkExternalPhysiPlanInputHasOrder = "InputHasOrder";
3454
static const char* jkExternalPhysiPlanOrgTableUid = "OrgTableUid";
3455
static const char* jkExternalPhysiPlanOrgTableVgId = "OrgTableVgId";
3456

3457
static int32_t physiExternalNodeToJson(const void* pObj, SJson* pJson) {
329,900✔
3458
  const SExternalWindowPhysiNode* pNode = (const SExternalWindowPhysiNode*)pObj;
329,900✔
3459

3460
  int32_t code = physiWindowNodeToJson(pObj, pJson);
329,900✔
3461
  if (TSDB_CODE_SUCCESS == code) {
329,900✔
3462
    code = tjsonAddIntegerToObject(pJson, jkExternalPhysiPlanStartTime, pNode->timeRange.skey);
329,900✔
3463
  }
3464
  if (TSDB_CODE_SUCCESS == code) {
329,900✔
3465
    code = tjsonAddIntegerToObject(pJson, jkExternalPhysiPlanEndTime, pNode->timeRange.ekey);
329,900✔
3466
  }
3467
  if (TSDB_CODE_SUCCESS == code) {
329,900✔
3468
    code = tjsonAddObject(pJson, jkExternalPhysiPlanTimeRangeExpr, nodeToJson, pNode->pTimeRange);
329,900✔
3469
  }
3470
  if (TSDB_CODE_SUCCESS == code) {
329,900✔
3471
    code = tjsonAddBoolToObject(pJson, jkExternalPhysiPlanIsSingleTable, pNode->isSingleTable);
329,900✔
3472
  }
3473
  if (TSDB_CODE_SUCCESS == code) {
329,900✔
3474
    code = tjsonAddBoolToObject(pJson, jkExternalPhysiPlanInputHasOrder, pNode->inputHasOrder);
329,900✔
3475
  }
3476
  if (TSDB_CODE_SUCCESS == code) {
329,900✔
3477
    code = tjsonAddIntegerToObject(pJson, jkExternalPhysiPlanOrgTableUid, pNode->orgTableUid);
329,900✔
3478
  }
3479
  if (TSDB_CODE_SUCCESS == code) {
329,900✔
3480
    code = tjsonAddIntegerToObject(pJson, jkExternalPhysiPlanOrgTableVgId, pNode->orgTableVgId);
329,900✔
3481
  }
3482

3483
  return code;
329,900✔
3484
}
3485

3486
static int32_t jsonToPhysiExternalNode(const SJson* pJson, void* pObj) {
288,669✔
3487
  SExternalWindowPhysiNode* pNode = (SExternalWindowPhysiNode*)pObj;
288,669✔
3488

3489
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
288,669✔
3490
  if (TSDB_CODE_SUCCESS == code) {
288,509✔
3491
    code = tjsonGetBigIntValue(pJson, jkExternalPhysiPlanStartTime, &pNode->timeRange.skey);
288,509✔
3492
  }
3493
  if (TSDB_CODE_SUCCESS == code) {
288,669✔
3494
    code = tjsonGetBigIntValue(pJson, jkExternalPhysiPlanEndTime, &pNode->timeRange.ekey);
288,669✔
3495
  }
3496
  if (TSDB_CODE_SUCCESS == code) {
288,669✔
3497
    code = jsonToNodeObject(pJson, jkExternalPhysiPlanTimeRangeExpr, &pNode->pTimeRange);
288,669✔
3498
  }
3499
  if (TSDB_CODE_SUCCESS == code) {
288,669✔
3500
    code = tjsonGetBoolValue(pJson, jkExternalPhysiPlanIsSingleTable, &pNode->isSingleTable);
288,669✔
3501
  }
3502
  if (TSDB_CODE_SUCCESS == code) {
288,669✔
3503
    code = tjsonGetBoolValue(pJson, jkExternalPhysiPlanInputHasOrder, &pNode->inputHasOrder);
288,669✔
3504
  }
3505
  if (TSDB_CODE_SUCCESS == code) {
288,669✔
3506
    code = tjsonGetBigIntValue(pJson, jkExternalPhysiPlanOrgTableUid, &pNode->orgTableUid);
288,669✔
3507
  }
3508
  if (TSDB_CODE_SUCCESS == code) {
288,669✔
3509
    code = tjsonGetIntValue(pJson, jkExternalPhysiPlanOrgTableVgId, &pNode->orgTableVgId);
288,669✔
3510
  }
3511

3512
  return code;
288,669✔
3513
}
3514

3515
static const char* jkFillPhysiPlanMode = "Mode";
3516
static const char* jkFillPhysiPlanFillExprs = "FillExprs";
3517
static const char* jkFillPhysiPlanNotFillExprs = "NotFillExprs";
3518
static const char* jkFillPhysiPlanWStartTs = "WStartTs";
3519
static const char* jkFillPhysiPlanValues = "Values";
3520
static const char* jkFillPhysiPlanStartTime = "StartTime";
3521
static const char* jkFillPhysiPlanEndTime = "EndTime";
3522
static const char* jkFillPhysiPlanFillNullExprs = "FillNullExprs";
3523
static const char* jkFillPhysiPlanFillTimeRangeExpr = "TimeRangeExpr";
3524

3525
static int32_t physiFillNodeToJson(const void* pObj, SJson* pJson) {
406,998✔
3526
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
406,998✔
3527

3528
  int32_t code = physicPlanNodeToJson(pObj, pJson);
406,998✔
3529
  if (TSDB_CODE_SUCCESS == code) {
406,998✔
3530
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanMode, pNode->mode);
406,998✔
3531
  }
3532
  if (TSDB_CODE_SUCCESS == code) {
406,998✔
3533
    code = nodeListToJson(pJson, jkFillPhysiPlanFillExprs, pNode->pFillExprs);
406,998✔
3534
  }
3535
  if (TSDB_CODE_SUCCESS == code) {
406,998✔
3536
    code = nodeListToJson(pJson, jkFillPhysiPlanNotFillExprs, pNode->pNotFillExprs);
406,998✔
3537
  }
3538
  if (TSDB_CODE_SUCCESS == code) {
406,998✔
3539
    code = tjsonAddObject(pJson, jkFillPhysiPlanWStartTs, nodeToJson, pNode->pWStartTs);
406,998✔
3540
  }
3541
  if (TSDB_CODE_SUCCESS == code) {
406,998✔
3542
    code = tjsonAddObject(pJson, jkFillPhysiPlanValues, nodeToJson, pNode->pValues);
406,998✔
3543
  }
3544
  if (TSDB_CODE_SUCCESS == code) {
406,998✔
3545
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanStartTime, pNode->timeRange.skey);
406,998✔
3546
  }
3547
  if (TSDB_CODE_SUCCESS == code) {
406,998✔
3548
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanEndTime, pNode->timeRange.ekey);
406,998✔
3549
  }
3550
  if (TSDB_CODE_SUCCESS == code) {
406,998✔
3551
    code = nodeListToJson(pJson, jkFillPhysiPlanFillNullExprs, pNode->pFillNullExprs);
406,998✔
3552
  }
3553
  if (TSDB_CODE_SUCCESS == code) {
406,998✔
3554
    code = tjsonAddObject(pJson, jkFillPhysiPlanFillTimeRangeExpr, nodeToJson, pNode->pTimeRange);
406,998✔
3555
  }
3556

3557
  return code;
406,998✔
3558
}
3559

3560
static int32_t jsonToPhysiFillNode(const SJson* pJson, void* pObj) {
×
3561
  SFillPhysiNode* pNode = (SFillPhysiNode*)pObj;
×
3562

3563
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3564
  if (TSDB_CODE_SUCCESS == code) {
×
3565
    tjsonGetNumberValue(pJson, jkFillPhysiPlanMode, pNode->mode, code);
×
3566
  }
3567
  if (TSDB_CODE_SUCCESS == code) {
×
3568
    code = jsonToNodeList(pJson, jkFillPhysiPlanFillExprs, &pNode->pFillExprs);
×
3569
  }
3570
  if (TSDB_CODE_SUCCESS == code) {
×
3571
    code = jsonToNodeList(pJson, jkFillPhysiPlanNotFillExprs, &pNode->pNotFillExprs);
×
3572
  }
3573
  if (TSDB_CODE_SUCCESS == code) {
×
3574
    code = jsonToNodeObject(pJson, jkFillPhysiPlanWStartTs, &pNode->pWStartTs);
×
3575
  }
3576
  if (TSDB_CODE_SUCCESS == code) {
×
3577
    code = jsonToNodeObject(pJson, jkFillPhysiPlanValues, &pNode->pValues);
×
3578
  }
3579
  if (TSDB_CODE_SUCCESS == code) {
×
3580
    code = tjsonGetBigIntValue(pJson, jkFillPhysiPlanStartTime, &pNode->timeRange.skey);
×
3581
  }
3582
  if (TSDB_CODE_SUCCESS == code) {
×
3583
    code = tjsonGetBigIntValue(pJson, jkFillPhysiPlanEndTime, &pNode->timeRange.ekey);
×
3584
  }
3585
  if (TSDB_CODE_SUCCESS == code) {
×
3586
    code = jsonToNodeList(pJson, jkFillPhysiPlanFillNullExprs, &pNode->pFillNullExprs);
×
3587
  }
3588
  if (TSDB_CODE_SUCCESS == code) {
×
3589
    code = jsonToNodeObject(pJson, jkFillPhysiPlanFillTimeRangeExpr, &pNode->pTimeRange);
×
3590
  }
3591

3592
  return code;
×
3593
}
3594

3595
static const char* jkSessionWindowPhysiPlanGap = "Gap";
3596

3597
static int32_t physiSessionWindowNodeToJson(const void* pObj, SJson* pJson) {
605,216✔
3598
  const SSessionWinodwPhysiNode* pNode = (const SSessionWinodwPhysiNode*)pObj;
605,216✔
3599

3600
  int32_t code = physiWindowNodeToJson(pObj, pJson);
605,216✔
3601
  if (TSDB_CODE_SUCCESS == code) {
605,216✔
3602
    code = tjsonAddIntegerToObject(pJson, jkSessionWindowPhysiPlanGap, pNode->gap);
605,216✔
3603
  }
3604

3605
  return code;
605,216✔
3606
}
3607

3608
static int32_t jsonToPhysiSessionWindowNode(const SJson* pJson, void* pObj) {
2,340✔
3609
  SSessionWinodwPhysiNode* pNode = (SSessionWinodwPhysiNode*)pObj;
2,340✔
3610

3611
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
2,340✔
3612
  if (TSDB_CODE_SUCCESS == code) {
2,340✔
3613
    tjsonGetNumberValue(pJson, jkSessionWindowPhysiPlanGap, pNode->gap, code);
2,340✔
3614
  }
3615

3616
  return code;
2,340✔
3617
}
3618

3619
static const char* jkStateWindowPhysiPlanStateKey = "StateKey";
3620
static const char* jkStateWindowPhysiPlanTrueForLimit = "TrueForLimit";
3621
static const char* jkStateWindowPhysiPlanExtendOption = "ExtendOption";
3622

3623
static int32_t physiStateWindowNodeToJson(const void* pObj, SJson* pJson) {
725,396✔
3624
  const SStateWindowPhysiNode* pNode = (const SStateWindowPhysiNode*)pObj;
725,396✔
3625

3626
  int32_t code = physiWindowNodeToJson(pObj, pJson);
725,396✔
3627
  if (TSDB_CODE_SUCCESS == code) {
725,396✔
3628
    code = tjsonAddObject(pJson, jkStateWindowPhysiPlanStateKey, nodeToJson, pNode->pStateKey);
725,396✔
3629
  }
3630
  if (TSDB_CODE_SUCCESS == code) {
725,396✔
3631
    code = tjsonAddIntegerToObject(pJson, jkStateWindowPhysiPlanTrueForLimit, pNode->trueForLimit);
725,396✔
3632
  }
3633
  if (TSDB_CODE_SUCCESS == code) {
725,396✔
3634
    code = tjsonAddIntegerToObject(pJson, jkStateWindowPhysiPlanExtendOption, pNode->extendOption);
725,396✔
3635
  }
3636

3637
  return code;
725,396✔
3638
}
3639

3640
static int32_t jsonToPhysiStateWindowNode(const SJson* pJson, void* pObj) {
13,140✔
3641
  SStateWindowPhysiNode* pNode = (SStateWindowPhysiNode*)pObj;
13,140✔
3642

3643
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
13,140✔
3644
  if (TSDB_CODE_SUCCESS == code) {
13,140✔
3645
    code = jsonToNodeObject(pJson, jkStateWindowPhysiPlanStateKey, &pNode->pStateKey);
13,140✔
3646
  }
3647
  if (TSDB_CODE_SUCCESS == code) {
13,140✔
3648
    code = tjsonGetBigIntValue(pJson, jkStateWindowPhysiPlanTrueForLimit, &pNode->trueForLimit);
13,140✔
3649
  }
3650
  if (TSDB_CODE_SUCCESS == code) {
13,140✔
3651
    code = tjsonGetIntValue(pJson, jkStateWindowPhysiPlanExtendOption, (int32_t*)&pNode->extendOption);
13,140✔
3652
  }
3653

3654
  return code;
13,140✔
3655
}
3656

3657
static const char* jkEventWindowPhysiPlanStartCond = "StartCond";
3658
static const char* jkEventWindowPhysiPlanEndCond = "EndCond";
3659
static const char* jkEventWindowPhysiPlanTrueForLimit = "TrueForLimit";
3660

3661
static int32_t physiEventWindowNodeToJson(const void* pObj, SJson* pJson) {
387,924✔
3662
  const SEventWinodwPhysiNode* pNode = (const SEventWinodwPhysiNode*)pObj;
387,924✔
3663

3664
  int32_t code = physiWindowNodeToJson(pObj, pJson);
387,924✔
3665
  if (TSDB_CODE_SUCCESS == code) {
387,924✔
3666
    code = tjsonAddObject(pJson, jkEventWindowPhysiPlanStartCond, nodeToJson, pNode->pStartCond);
387,924✔
3667
  }
3668
  if (TSDB_CODE_SUCCESS == code) {
387,924✔
3669
    code = tjsonAddObject(pJson, jkEventWindowPhysiPlanEndCond, nodeToJson, pNode->pEndCond);
387,924✔
3670
  }
3671
  if (TSDB_CODE_SUCCESS == code) {
387,924✔
3672
    code = tjsonAddIntegerToObject(pJson, jkEventWindowPhysiPlanTrueForLimit, pNode->trueForLimit);
387,924✔
3673
  }
3674

3675
  return code;
387,924✔
3676
}
3677

3678
static int32_t jsonToPhysiEventWindowNode(const SJson* pJson, void* pObj) {
2,340✔
3679
  SEventWinodwPhysiNode* pNode = (SEventWinodwPhysiNode*)pObj;
2,340✔
3680

3681
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
2,340✔
3682
  if (TSDB_CODE_SUCCESS == code) {
2,340✔
3683
    code = jsonToNodeObject(pJson, jkEventWindowPhysiPlanStartCond, &pNode->pStartCond);
2,340✔
3684
  }
3685
  if (TSDB_CODE_SUCCESS == code) {
2,340✔
3686
    code = jsonToNodeObject(pJson, jkEventWindowPhysiPlanEndCond, &pNode->pEndCond);
2,340✔
3687
  }
3688
  if (TSDB_CODE_SUCCESS == code) {
2,340✔
3689
    code = tjsonGetBigIntValue(pJson, jkEventWindowPhysiPlanTrueForLimit, &pNode->trueForLimit);
2,340✔
3690
  }
3691

3692
  return code;
2,340✔
3693
}
3694

3695
static const char* jkCountWindowPhysiPlanWindowCount = "WindowCount";
3696
static const char* jkCountWindowPhysiPlanWindowSliding = "WindowSliding";
3697

3698
static int32_t physiCountWindowNodeToJson(const void* pObj, SJson* pJson) {
378,074✔
3699
  const SCountWindowPhysiNode* pNode = (const SCountWindowPhysiNode*)pObj;
378,074✔
3700

3701
  int32_t code = physiWindowNodeToJson(pObj, pJson);
378,074✔
3702
  if (TSDB_CODE_SUCCESS == code) {
378,074✔
3703
    code = tjsonAddIntegerToObject(pJson, jkCountWindowPhysiPlanWindowCount, pNode->windowCount);
378,074✔
3704
  }
3705
  if (TSDB_CODE_SUCCESS == code) {
378,074✔
3706
    code = tjsonAddIntegerToObject(pJson, jkCountWindowPhysiPlanWindowSliding, pNode->windowSliding);
378,074✔
3707
  }
3708
  return code;
378,074✔
3709
}
3710

3711
static int32_t jsonToPhysiCountWindowNode(const SJson* pJson, void* pObj) {
2,340✔
3712
  SCountWindowPhysiNode* pNode = (SCountWindowPhysiNode*)pObj;
2,340✔
3713

3714
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
2,340✔
3715
  if (TSDB_CODE_SUCCESS == code) {
2,340✔
3716
    code = tjsonGetBigIntValue(pJson, jkCountWindowPhysiPlanWindowCount, &pNode->windowCount);
2,340✔
3717
  }
3718
  if (TSDB_CODE_SUCCESS == code) {
2,340✔
3719
    code = tjsonGetBigIntValue(pJson, jkCountWindowPhysiPlanWindowSliding, &pNode->windowSliding);
2,340✔
3720
  }
3721

3722
  return code;
2,340✔
3723
}
3724

3725
static const char* jkAnomalyWindowPhysiPlanAnomalyKey = "AnomalyKey";
3726
static const char* jkAnomalyWindowPhysiPlanAnomalyOption = "AnomalyOpt";
3727

3728
static int32_t physiAnomalyWindowNodeToJson(const void* pObj, SJson* pJson) {
×
3729
  const SAnomalyWindowPhysiNode* pNode = (const SAnomalyWindowPhysiNode*)pObj;
×
3730

3731
  int32_t code = physiWindowNodeToJson(pObj, pJson);
×
3732
  if (TSDB_CODE_SUCCESS == code) {
×
3733
    code = tjsonAddObject(pJson, jkAnomalyWindowPhysiPlanAnomalyKey, nodeToJson, pNode->pAnomalyKey);
×
3734
  }
3735
  if (TSDB_CODE_SUCCESS == code) {
×
3736
    code = tjsonAddStringToObject(pJson, jkAnomalyWindowPhysiPlanAnomalyOption, pNode->anomalyOpt);
×
3737
  }
3738
  return code;
×
3739
}
3740

3741
static int32_t jsonToPhysiAnomalyWindowNode(const SJson* pJson, void* pObj) {
×
3742
  SAnomalyWindowPhysiNode* pNode = (SAnomalyWindowPhysiNode*)pObj;
×
3743

3744
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
×
3745
  if (TSDB_CODE_SUCCESS == code) {
×
3746
    code = jsonToNodeObject(pJson, jkAnomalyWindowPhysiPlanAnomalyKey, &pNode->pAnomalyKey);
×
3747
  }
3748
  if (TSDB_CODE_SUCCESS == code) {
×
3749
    code = tjsonGetStringValue(pJson, jkAnomalyWindowPhysiPlanAnomalyOption, pNode->anomalyOpt);
×
3750
  }
3751

3752
  return code;
×
3753
}
3754

3755
static const char* jkPartitionPhysiPlanExprs = "Exprs";
3756
static const char* jkPartitionPhysiPlanPartitionKeys = "PartitionKeys";
3757
static const char* jkPartitionPhysiPlanTargets = "Targets";
3758
static const char* jkPartitionPhysiPlanNeedBlockOutputTsOrder = "NeedBlockOutputTsOrder";
3759
static const char* jkPartitionPhysiPlanTsSlotId = "tsSlotId";
3760

3761
static int32_t physiPartitionNodeToJson(const void* pObj, SJson* pJson) {
3,141,929✔
3762
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
3,141,929✔
3763

3764
  int32_t code = physicPlanNodeToJson(pObj, pJson);
3,141,929✔
3765
  if (TSDB_CODE_SUCCESS == code) {
3,141,929✔
3766
    code = nodeListToJson(pJson, jkPartitionPhysiPlanExprs, pNode->pExprs);
3,141,929✔
3767
  }
3768
  if (TSDB_CODE_SUCCESS == code) {
3,141,929✔
3769
    code = nodeListToJson(pJson, jkPartitionPhysiPlanPartitionKeys, pNode->pPartitionKeys);
3,141,929✔
3770
  }
3771
  if (TSDB_CODE_SUCCESS == code) {
3,141,929✔
3772
    code = nodeListToJson(pJson, jkPartitionPhysiPlanTargets, pNode->pTargets);
3,141,929✔
3773
  }
3774
  if (TSDB_CODE_SUCCESS == code) {
3,141,929✔
3775
    code = tjsonAddBoolToObject(pJson, jkPartitionPhysiPlanNeedBlockOutputTsOrder, pNode->needBlockOutputTsOrder);
3,141,929✔
3776
  }
3777
  if (TSDB_CODE_SUCCESS == code) {
3,141,929✔
3778
    code = tjsonAddIntegerToObject(pJson, jkPartitionPhysiPlanTsSlotId, pNode->tsSlotId);
3,141,929✔
3779
  }
3780

3781
  return code;
3,141,929✔
3782
}
3783

3784
static int32_t jsonToPhysiPartitionNode(const SJson* pJson, void* pObj) {
×
3785
  SPartitionPhysiNode* pNode = (SPartitionPhysiNode*)pObj;
×
3786

3787
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3788
  if (TSDB_CODE_SUCCESS == code) {
×
3789
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanExprs, &pNode->pExprs);
×
3790
  }
3791
  if (TSDB_CODE_SUCCESS == code) {
×
3792
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanPartitionKeys, &pNode->pPartitionKeys);
×
3793
  }
3794
  if (TSDB_CODE_SUCCESS == code) {
×
3795
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanTargets, &pNode->pTargets);
×
3796
  }
3797
  if (TSDB_CODE_SUCCESS == code) {
×
3798
    code = tjsonGetBoolValue(pJson, jkPartitionPhysiPlanNeedBlockOutputTsOrder, &pNode->needBlockOutputTsOrder);
×
3799
  }
3800
  if (TSDB_CODE_SUCCESS == code) {
×
3801
    code = tjsonGetIntValue(pJson, jkPartitionPhysiPlanTsSlotId, &pNode->tsSlotId);
×
3802
  }
3803

3804
  return code;
×
3805
}
3806

3807
static const char* jkIndefRowsFuncPhysiPlanExprs = "Exprs";
3808
static const char* jkIndefRowsFuncPhysiPlanFuncs = "Funcs";
3809

3810
static int32_t physiIndefRowsFuncNodeToJson(const void* pObj, SJson* pJson) {
3,790,964✔
3811
  const SIndefRowsFuncPhysiNode* pNode = (const SIndefRowsFuncPhysiNode*)pObj;
3,790,964✔
3812

3813
  int32_t code = physicPlanNodeToJson(pObj, pJson);
3,790,964✔
3814
  if (TSDB_CODE_SUCCESS == code) {
3,790,964✔
3815
    code = nodeListToJson(pJson, jkIndefRowsFuncPhysiPlanExprs, pNode->pExprs);
3,790,964✔
3816
  }
3817
  if (TSDB_CODE_SUCCESS == code) {
3,790,964✔
3818
    code = nodeListToJson(pJson, jkIndefRowsFuncPhysiPlanFuncs, pNode->pFuncs);
3,790,964✔
3819
  }
3820

3821
  return code;
3,790,964✔
3822
}
3823

3824
static int32_t jsonToPhysiIndefRowsFuncNode(const SJson* pJson, void* pObj) {
×
3825
  SIndefRowsFuncPhysiNode* pNode = (SIndefRowsFuncPhysiNode*)pObj;
×
3826

3827
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3828
  if (TSDB_CODE_SUCCESS == code) {
×
3829
    code = jsonToNodeList(pJson, jkIndefRowsFuncPhysiPlanExprs, &pNode->pExprs);
×
3830
  }
3831
  if (TSDB_CODE_SUCCESS == code) {
×
3832
    code = jsonToNodeList(pJson, jkIndefRowsFuncPhysiPlanFuncs, &pNode->pFuncs);
×
3833
  }
3834

3835
  return code;
×
3836
}
3837

3838
static const char* jkInterpFuncPhysiPlanExprs = "Exprs";
3839
static const char* jkInterpFuncPhysiPlanFuncs = "Funcs";
3840
static const char* jkInterpFuncPhysiPlanStartTime = "StartTime";
3841
static const char* jkInterpFuncPhysiPlanEndTime = "EndTime";
3842
static const char* jkInterpFuncPhysiPlanRangeExpr = "RangeExpr";
3843
static const char* jkInterpFuncPhysiPlanInterval = "Interval";
3844
static const char* jkInterpFuncPhysiPlanIntervalUnit = "intervalUnit";
3845
static const char* jkInterpFuncPhysiPlanPrecision = "precision";
3846
static const char* jkInterpFuncPhysiPlanFillMode = "FillMode";
3847
static const char* jkInterpFuncPhysiPlanFillValues = "FillValues";
3848
static const char* jkInterpFuncPhysiPlanTimeSeries = "TimeSeries";
3849
static const char* jkInterpFuncPhysiPlanRangeInterval = "RangeInterval";
3850
static const char* jkInterpFuncPhysiPlanRangeIntervalUnit = "RangeIntervalUnit";
3851

3852
static int32_t physiInterpFuncNodeToJson(const void* pObj, SJson* pJson) {
2,228,021✔
3853
  const SInterpFuncPhysiNode* pNode = (const SInterpFuncPhysiNode*)pObj;
2,228,021✔
3854

3855
  int32_t code = physicPlanNodeToJson(pObj, pJson);
2,228,021✔
3856
  if (TSDB_CODE_SUCCESS == code) {
2,228,995✔
3857
    code = nodeListToJson(pJson, jkInterpFuncPhysiPlanExprs, pNode->pExprs);
2,228,995✔
3858
  }
3859
  if (TSDB_CODE_SUCCESS == code) {
2,229,374✔
3860
    code = nodeListToJson(pJson, jkInterpFuncPhysiPlanFuncs, pNode->pFuncs);
2,229,374✔
3861
  }
3862
  if (TSDB_CODE_SUCCESS == code) {
2,229,374✔
3863
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanStartTime, pNode->timeRange.skey);
2,229,374✔
3864
  }
3865
  if (TSDB_CODE_SUCCESS == code) {
2,229,374✔
3866
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanEndTime, pNode->timeRange.ekey);
2,229,374✔
3867
  }
3868
  if (TSDB_CODE_SUCCESS == code) {
2,228,887✔
3869
    code = tjsonAddObject(pJson, jkInterpFuncPhysiPlanRangeExpr, nodeToJson, pNode->pTimeRange);
2,228,887✔
3870
  }
3871
  if (TSDB_CODE_SUCCESS == code) {
2,229,374✔
3872
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanInterval, pNode->interval);
2,229,374✔
3873
  }
3874
  if (TSDB_CODE_SUCCESS == code) {
2,229,374✔
3875
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanIntervalUnit, pNode->intervalUnit);
2,229,374✔
3876
  }
3877
  if (TSDB_CODE_SUCCESS == code) {
2,229,374✔
3878
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanPrecision, pNode->precision);
2,229,374✔
3879
  }
3880
  if (TSDB_CODE_SUCCESS == code) {
2,229,374✔
3881
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanFillMode, pNode->fillMode);
2,229,374✔
3882
  }
3883
  if (TSDB_CODE_SUCCESS == code) {
2,229,374✔
3884
    code = tjsonAddObject(pJson, jkInterpFuncPhysiPlanFillValues, nodeToJson, pNode->pFillValues);
2,229,374✔
3885
  }
3886
  if (TSDB_CODE_SUCCESS == code) {
2,229,374✔
3887
    code = tjsonAddObject(pJson, jkInterpFuncPhysiPlanTimeSeries, nodeToJson, pNode->pTimeSeries);
2,229,374✔
3888
  }
3889
  if (TSDB_CODE_SUCCESS == code) {
2,229,374✔
3890
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanRangeInterval, pNode->rangeInterval);
2,229,374✔
3891
  }
3892
  if (TSDB_CODE_SUCCESS == code) {
2,229,374✔
3893
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanRangeIntervalUnit, pNode->rangeIntervalUnit);
2,229,374✔
3894
  }
3895

3896
  return code;
2,229,374✔
3897
}
3898

3899
static int32_t jsonToPhysiInterpFuncNode(const SJson* pJson, void* pObj) {
×
3900
  SInterpFuncPhysiNode* pNode = (SInterpFuncPhysiNode*)pObj;
×
3901

3902
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3903
  if (TSDB_CODE_SUCCESS == code) {
×
3904
    code = jsonToNodeList(pJson, jkInterpFuncPhysiPlanExprs, &pNode->pExprs);
×
3905
  }
3906
  if (TSDB_CODE_SUCCESS == code) {
×
3907
    code = jsonToNodeList(pJson, jkInterpFuncPhysiPlanFuncs, &pNode->pFuncs);
×
3908
  }
3909
  if (TSDB_CODE_SUCCESS == code) {
×
3910
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanStartTime, &pNode->timeRange.skey);
×
3911
  }
3912
  if (TSDB_CODE_SUCCESS == code) {
×
3913
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanEndTime, &pNode->timeRange.ekey);
×
3914
  }
3915
  if (TSDB_CODE_SUCCESS == code) {
×
3916
    code = jsonToNodeObject(pJson, jkInterpFuncPhysiPlanRangeExpr, &pNode->pTimeRange);
×
3917
  }
3918
  if (TSDB_CODE_SUCCESS == code) {
×
3919
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanInterval, &pNode->interval);
×
3920
  }
3921
  if (TSDB_CODE_SUCCESS == code) {
×
3922
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncPhysiPlanIntervalUnit, &pNode->intervalUnit);
×
3923
  }
3924
  if (TSDB_CODE_SUCCESS == code) {
×
3925
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncPhysiPlanPrecision, &pNode->precision);
×
3926
  }
3927
  if (TSDB_CODE_SUCCESS == code) {
×
3928
    tjsonGetNumberValue(pJson, jkInterpFuncPhysiPlanFillMode, pNode->fillMode, code);
×
3929
  }
3930
  if (TSDB_CODE_SUCCESS == code) {
×
3931
    code = jsonToNodeObject(pJson, jkInterpFuncPhysiPlanFillValues, &pNode->pFillValues);
×
3932
  }
3933
  if (TSDB_CODE_SUCCESS == code) {
×
3934
    code = jsonToNodeObject(pJson, jkInterpFuncPhysiPlanTimeSeries, &pNode->pTimeSeries);
×
3935
  }
3936
  if (TSDB_CODE_SUCCESS == code) {
×
3937
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanRangeInterval, &pNode->rangeInterval);
×
3938
  }
3939
  if (TSDB_CODE_SUCCESS == code) {
×
3940
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncPhysiPlanRangeIntervalUnit, &pNode->rangeIntervalUnit);
×
3941
  }
3942

3943
  return code;
×
3944
}
3945

3946
static const char* jkForecastFuncPhysiPlanExprs = "Exprs";
3947
static const char* jkForecastFuncPhysiPlanFuncs = "Funcs";
3948

3949
static int32_t physiForecastFuncNodeToJson(const void* pObj, SJson* pJson) {
×
3950
  const SForecastFuncPhysiNode* pNode = (const SForecastFuncPhysiNode*)pObj;
×
3951

3952
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3953
  if (TSDB_CODE_SUCCESS == code) {
×
3954
    code = nodeListToJson(pJson, jkForecastFuncPhysiPlanExprs, pNode->pExprs);
×
3955
  }
3956
  if (TSDB_CODE_SUCCESS == code) {
×
3957
    code = nodeListToJson(pJson, jkForecastFuncPhysiPlanFuncs, pNode->pFuncs);
×
3958
  }
3959

3960
  return code;
×
3961
}
3962

3963
static int32_t jsonToPhysiForecastFuncNode(const SJson* pJson, void* pObj) {
×
3964
  SForecastFuncPhysiNode* pNode = (SForecastFuncPhysiNode*)pObj;
×
3965

3966
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3967
  if (TSDB_CODE_SUCCESS == code) {
×
3968
    code = jsonToNodeList(pJson, jkForecastFuncPhysiPlanExprs, &pNode->pExprs);
×
3969
  }
3970
  if (TSDB_CODE_SUCCESS == code) {
×
3971
    code = jsonToNodeList(pJson, jkForecastFuncPhysiPlanFuncs, &pNode->pFuncs);
×
3972
  }
3973

3974
  return code;
×
3975
}
3976

3977
static const char* jkDataSinkInputDataBlockDesc = "InputDataBlockDesc";
3978

3979
static int32_t physicDataSinkNodeToJson(const void* pObj, SJson* pJson) {
281,562,324✔
3980
  const SDataSinkNode* pNode = (const SDataSinkNode*)pObj;
281,562,324✔
3981
  return tjsonAddObject(pJson, jkDataSinkInputDataBlockDesc, nodeToJson, pNode->pInputDataBlockDesc);
281,562,324✔
3982
}
3983

3984
static int32_t jsonToPhysicDataSinkNode(const SJson* pJson, void* pObj) {
2,345,617✔
3985
  SDataSinkNode* pNode = (SDataSinkNode*)pObj;
2,345,617✔
3986
  return jsonToNodeObject(pJson, jkDataSinkInputDataBlockDesc, (SNode**)&pNode->pInputDataBlockDesc);
2,345,617✔
3987
}
3988

3989
static int32_t physiDispatchNodeToJson(const void* pObj, SJson* pJson) { return physicDataSinkNodeToJson(pObj, pJson); }
279,712,425✔
3990

3991
static int32_t jsonToPhysiDispatchNode(const SJson* pJson, void* pObj) { return jsonToPhysicDataSinkNode(pJson, pObj); }
2,345,617✔
3992

3993
static const char* jkQueryInsertPhysiPlanInsertCols = "InsertCols";
3994
static const char* jkQueryInsertPhysiPlanStableId = "StableId";
3995
static const char* jkQueryInsertPhysiPlanTableId = "TableId";
3996
static const char* jkQueryInsertPhysiPlanTableType = "TableType";
3997
static const char* jkQueryInsertPhysiPlanTableFName = "TableFName";
3998
static const char* jkQueryInsertPhysiPlanVgId = "VgId";
3999
static const char* jkQueryInsertPhysiPlanEpSet = "EpSet";
4000
static const char* jkQueryInsertPhysiPlanExplain = "Explain";
4001

4002
static int32_t physiQueryInsertNodeToJson(const void* pObj, SJson* pJson) {
200,020✔
4003
  const SQueryInserterNode* pNode = (const SQueryInserterNode*)pObj;
200,020✔
4004

4005
  int32_t code = physicDataSinkNodeToJson(pObj, pJson);
200,020✔
4006
  if (TSDB_CODE_SUCCESS == code) {
200,020✔
4007
    code = nodeListToJson(pJson, jkQueryInsertPhysiPlanInsertCols, pNode->pCols);
200,020✔
4008
  }
4009
  if (TSDB_CODE_SUCCESS == code) {
200,020✔
4010
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanStableId, pNode->stableId);
200,020✔
4011
  }
4012
  if (TSDB_CODE_SUCCESS == code) {
200,020✔
4013
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanTableId, pNode->tableId);
200,020✔
4014
  }
4015
  if (TSDB_CODE_SUCCESS == code) {
200,020✔
4016
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanTableType, pNode->tableType);
200,020✔
4017
  }
4018
  if (TSDB_CODE_SUCCESS == code) {
200,020✔
4019
    code = tjsonAddStringToObject(pJson, jkQueryInsertPhysiPlanTableFName, pNode->tableName);
200,020✔
4020
  }
4021
  if (TSDB_CODE_SUCCESS == code) {
200,020✔
4022
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanVgId, pNode->vgId);
200,020✔
4023
  }
4024
  if (TSDB_CODE_SUCCESS == code) {
200,020✔
4025
    code = tjsonAddObject(pJson, jkQueryInsertPhysiPlanEpSet, epSetToJson, &pNode->epSet);
200,020✔
4026
  }
4027
  if (TSDB_CODE_SUCCESS == code) {
200,020✔
4028
    code = tjsonAddBoolToObject(pJson, jkQueryInsertPhysiPlanExplain, pNode->explain);
200,020✔
4029
  }
4030

4031
  return code;
200,020✔
4032
}
4033

4034
static int32_t jsonToPhysiQueryInsertNode(const SJson* pJson, void* pObj) {
×
4035
  SQueryInserterNode* pNode = (SQueryInserterNode*)pObj;
×
4036

4037
  int32_t code = jsonToPhysicDataSinkNode(pJson, pObj);
×
4038
  if (TSDB_CODE_SUCCESS == code) {
×
4039
    code = jsonToNodeList(pJson, jkQueryInsertPhysiPlanInsertCols, &pNode->pCols);
×
4040
  }
4041
  if (TSDB_CODE_SUCCESS == code) {
×
4042
    code = tjsonGetUBigIntValue(pJson, jkQueryInsertPhysiPlanStableId, &pNode->stableId);
×
4043
  }
4044
  if (TSDB_CODE_SUCCESS == code) {
×
4045
    code = tjsonGetUBigIntValue(pJson, jkQueryInsertPhysiPlanTableId, &pNode->tableId);
×
4046
  }
4047
  if (TSDB_CODE_SUCCESS == code) {
×
4048
    code = tjsonGetTinyIntValue(pJson, jkQueryInsertPhysiPlanTableType, &pNode->tableType);
×
4049
  }
4050
  if (TSDB_CODE_SUCCESS == code) {
×
4051
    code = tjsonGetStringValue(pJson, jkQueryInsertPhysiPlanTableFName, pNode->tableName);
×
4052
  }
4053
  if (TSDB_CODE_SUCCESS == code) {
×
4054
    code = tjsonGetIntValue(pJson, jkQueryInsertPhysiPlanVgId, &pNode->vgId);
×
4055
  }
4056
  if (TSDB_CODE_SUCCESS == code) {
×
4057
    code = tjsonToObject(pJson, jkQueryInsertPhysiPlanEpSet, jsonToEpSet, &pNode->epSet);
×
4058
  }
4059
  if (TSDB_CODE_SUCCESS == code) {
×
4060
    code = tjsonGetBoolValue(pJson, jkQueryInsertPhysiPlanExplain, &pNode->explain);
×
4061
  }
4062

4063
  return code;
×
4064
}
4065

4066
static const char* jkDeletePhysiPlanTableId = "TableId";
4067
static const char* jkDeletePhysiPlanTableType = "TableType";
4068
static const char* jkDeletePhysiPlanTableFName = "TableFName";
4069
static const char* jkDeletePhysiPlanTsColName = "TsColName";
4070
static const char* jkDeletePhysiPlanDeleteTimeRangeStartKey = "DeleteTimeRangeStartKey";
4071
static const char* jkDeletePhysiPlanDeleteTimeRangeEndKey = "DeleteTimeRangeEndKey";
4072
static const char* jkDeletePhysiPlanAffectedRows = "AffectedRows";
4073
static const char* jkDeletePhysiPlanStartTs = "StartTs";
4074
static const char* jkDeletePhysiPlanEndTs = "EndTs";
4075

4076
static int32_t physiDeleteNodeToJson(const void* pObj, SJson* pJson) {
1,649,879✔
4077
  const SDataDeleterNode* pNode = (const SDataDeleterNode*)pObj;
1,649,879✔
4078

4079
  int32_t code = physicDataSinkNodeToJson(pObj, pJson);
1,649,879✔
4080
  if (TSDB_CODE_SUCCESS == code) {
1,649,879✔
4081
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanTableId, pNode->tableId);
1,649,879✔
4082
  }
4083
  if (TSDB_CODE_SUCCESS == code) {
1,649,879✔
4084
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanTableType, pNode->tableType);
1,649,879✔
4085
  }
4086
  if (TSDB_CODE_SUCCESS == code) {
1,649,879✔
4087
    code = tjsonAddStringToObject(pJson, jkDeletePhysiPlanTableFName, pNode->tableFName);
1,649,879✔
4088
  }
4089
  if (TSDB_CODE_SUCCESS == code) {
1,649,879✔
4090
    code = tjsonAddStringToObject(pJson, jkDeletePhysiPlanTsColName, pNode->tsColName);
1,649,879✔
4091
  }
4092
  if (TSDB_CODE_SUCCESS == code) {
1,649,879✔
4093
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanDeleteTimeRangeStartKey, pNode->deleteTimeRange.skey);
1,649,879✔
4094
  }
4095
  if (TSDB_CODE_SUCCESS == code) {
1,649,879✔
4096
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanDeleteTimeRangeEndKey, pNode->deleteTimeRange.ekey);
1,649,879✔
4097
  }
4098
  if (TSDB_CODE_SUCCESS == code) {
1,649,879✔
4099
    code = tjsonAddObject(pJson, jkDeletePhysiPlanAffectedRows, nodeToJson, pNode->pAffectedRows);
1,649,879✔
4100
  }
4101
  if (TSDB_CODE_SUCCESS == code) {
1,649,879✔
4102
    code = tjsonAddObject(pJson, jkDeletePhysiPlanStartTs, nodeToJson, pNode->pStartTs);
1,649,879✔
4103
  }
4104
  if (TSDB_CODE_SUCCESS == code) {
1,649,879✔
4105
    code = tjsonAddObject(pJson, jkDeletePhysiPlanEndTs, nodeToJson, pNode->pEndTs);
1,649,879✔
4106
  }
4107

4108
  return code;
1,649,879✔
4109
}
4110

4111
static int32_t jsonToPhysiDeleteNode(const SJson* pJson, void* pObj) {
×
4112
  SDataDeleterNode* pNode = (SDataDeleterNode*)pObj;
×
4113

4114
  int32_t code = jsonToPhysicDataSinkNode(pJson, pObj);
×
4115
  if (TSDB_CODE_SUCCESS == code) {
×
4116
    code = tjsonGetUBigIntValue(pJson, jkDeletePhysiPlanTableId, &pNode->tableId);
×
4117
  }
4118
  if (TSDB_CODE_SUCCESS == code) {
×
4119
    code = tjsonGetTinyIntValue(pJson, jkDeletePhysiPlanTableType, &pNode->tableType);
×
4120
  }
4121
  if (TSDB_CODE_SUCCESS == code) {
×
4122
    code = tjsonGetStringValue(pJson, jkDeletePhysiPlanTableFName, pNode->tableFName);
×
4123
  }
4124
  if (TSDB_CODE_SUCCESS == code) {
×
4125
    code = tjsonGetStringValue(pJson, jkDeletePhysiPlanTsColName, pNode->tsColName);
×
4126
  }
4127
  if (TSDB_CODE_SUCCESS == code) {
×
4128
    code = tjsonGetBigIntValue(pJson, jkDeletePhysiPlanDeleteTimeRangeStartKey, &pNode->deleteTimeRange.skey);
×
4129
  }
4130
  if (TSDB_CODE_SUCCESS == code) {
×
4131
    code = tjsonGetBigIntValue(pJson, jkDeletePhysiPlanDeleteTimeRangeEndKey, &pNode->deleteTimeRange.ekey);
×
4132
  }
4133
  if (TSDB_CODE_SUCCESS == code) {
×
4134
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanAffectedRows, &pNode->pAffectedRows);
×
4135
  }
4136
  if (TSDB_CODE_SUCCESS == code) {
×
4137
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanStartTs, &pNode->pStartTs);
×
4138
  }
4139
  if (TSDB_CODE_SUCCESS == code) {
×
4140
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanEndTs, &pNode->pEndTs);
×
4141
  }
4142

4143
  return code;
×
4144
}
4145

4146
static const char* jkGroupCachePhysiPlanGroupCols = "GroupColumns";
4147
static const char* jkGroupCachePhysiPlanGrpColsMayBeNull = "GroupColumnsMayBeNull";
4148
static const char* jkGroupCachePhysiPlanGroupByUid = "GroupByUid";
4149
static const char* jkGroupCachePhysiPlanGlobalGroup = "GlobalGroup";
4150
static const char* jkGroupCachePhysiPlanBatchFetch = "BatchFetch";
4151

4152
static int32_t physiGroupCacheNodeToJson(const void* pObj, SJson* pJson) {
1,793,899✔
4153
  const SGroupCachePhysiNode* pNode = (const SGroupCachePhysiNode*)pObj;
1,793,899✔
4154

4155
  int32_t code = physicPlanNodeToJson(pObj, pJson);
1,793,899✔
4156
  if (TSDB_CODE_SUCCESS == code) {
1,793,899✔
4157
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGrpColsMayBeNull, pNode->grpColsMayBeNull);
1,793,899✔
4158
  }
4159
  if (TSDB_CODE_SUCCESS == code) {
1,793,899✔
4160
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGroupByUid, pNode->grpByUid);
1,793,899✔
4161
  }
4162
  if (TSDB_CODE_SUCCESS == code) {
1,793,899✔
4163
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGlobalGroup, pNode->globalGrp);
1,793,899✔
4164
  }
4165
  if (TSDB_CODE_SUCCESS == code) {
1,793,899✔
4166
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanBatchFetch, pNode->batchFetch);
1,793,899✔
4167
  }
4168
  if (TSDB_CODE_SUCCESS == code) {
1,793,899✔
4169
    code = nodeListToJson(pJson, jkGroupCachePhysiPlanGroupCols, pNode->pGroupCols);
1,793,899✔
4170
  }
4171
  return code;
1,793,899✔
4172
}
4173

4174
static int32_t jsonToPhysiGroupCacheNode(const SJson* pJson, void* pObj) {
1,180✔
4175
  SGroupCachePhysiNode* pNode = (SGroupCachePhysiNode*)pObj;
1,180✔
4176

4177
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
1,180✔
4178
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
4179
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGrpColsMayBeNull, &pNode->grpColsMayBeNull);
1,180✔
4180
  }
4181
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
4182
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGroupByUid, &pNode->grpByUid);
1,180✔
4183
  }
4184
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
4185
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGlobalGroup, &pNode->globalGrp);
1,180✔
4186
  }
4187
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
4188
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanBatchFetch, &pNode->batchFetch);
1,180✔
4189
  }
4190
  if (TSDB_CODE_SUCCESS == code) {
1,180✔
4191
    code = jsonToNodeList(pJson, jkGroupCachePhysiPlanGroupCols, &pNode->pGroupCols);
1,180✔
4192
  }
4193
  return code;
1,180✔
4194
}
4195

4196
static const char* jkDynQueryCtrlPhysiPlanQueryType = "QueryType";
4197
static const char* jkDynQueryCtrlPhysiPlanBatchFetch = "BatchFetch";
4198
static const char* jkDynQueryCtrlPhysiPlanVgSlot0 = "VgSlot[0]";
4199
static const char* jkDynQueryCtrlPhysiPlanVgSlot1 = "VgSlot[1]";
4200
static const char* jkDynQueryCtrlPhysiPlanUidSlot0 = "UidSlot[0]";
4201
static const char* jkDynQueryCtrlPhysiPlanUidSlot1 = "UidSlot[1]";
4202
static const char* jkDynQueryCtrlPhysiPlanSrcScan0 = "SrcScan[0]";
4203
static const char* jkDynQueryCtrlPhysiPlanSrcScan1 = "SrcScan[1]";
4204
static const char* jkDynQueryCtrlPhysiPlanDynTbname = "DynTbname";
4205
static const char* jkDynQueryCtrlPhysiPlanBatchProcessChild = "BatchProcessChild";
4206
static const char* jkDynQueryCtrlPhysiPlanHasPartition = "HasPartition";
4207
static const char* jkDynQueryCtrlPhysiPlanScanAllCols = "ScanAllCols";
4208
static const char* jkDynQueryCtrlPhysiPlanIsSuperTable = "IsSuperTable";
4209
static const char* jkDynQueryCtrlPhysiPlanDbName= "DbName";
4210
static const char* jkDynQueryCtrlPhysiPlanStbName= "StbName";
4211
static const char* jkDynQueryCtrlPhysiPlanSuid= "Suid";
4212
static const char* jkDynQueryCtrlPhysiPlanUid= "Uid";
4213
static const char* jkDynQueryCtrlPhysiPlanAccountId= "AccountId";
4214
static const char* jkDynQueryCtrlPhysiPlanEpSet = "EpSet";
4215
static const char* jkDynQueryCtrlPhysiPlanScanCols = "ScanCols";
4216
static const char* jkDynQueryCtrlPhysiPlanRVersion = "RVersion";
4217
static const char* jkDynQueryCtrlPhysiPlanOrgVgIds = "OrgVgIds";
4218
static const char* jkDynQueryCtrlPhysiPlanWstartSlotId = "WstartSlotId";
4219
static const char* jkDynQueryCtrlPhysiPlanWendSlotId = "WendSlotId";
4220
static const char* jkDynQueryCtrlPhysiPlanWdurationSlotId = "WdurationSlotId";
4221
static const char* jkDynQueryCtrlPhysiPlanTargets = "Targets";
4222
static const char* jkDynQueryCtrlPhysiPlanIsVstb = "IsVstb";
4223
static const char* jkDynQueryCtrlPhysiPlanStateExtendOption = "StateExtendOption";
4224
static const char* jkDynQueryCtrlPhysiPlansingleWinMode = "singleWinMode";
4225

4226

4227
static int32_t physiDynQueryCtrlNodeToJson(const void* pObj, SJson* pJson) {
3,787,195✔
4228
  const SDynQueryCtrlPhysiNode* pNode = (const SDynQueryCtrlPhysiNode*)pObj;
3,787,195✔
4229

4230
  int32_t code = physicPlanNodeToJson(pObj, pJson);
3,787,195✔
4231
  if (TSDB_CODE_SUCCESS == code) {
3,787,195✔
4232
    code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType);
3,787,195✔
4233
  }
4234
  if (TSDB_CODE_SUCCESS == code) {
3,787,195✔
4235
    switch (pNode->qType) {
3,787,195✔
4236
      case DYN_QTYPE_STB_HASH: {
1,793,899✔
4237
        code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanBatchFetch, pNode->stbJoin.batchFetch);
1,793,899✔
4238
        if (TSDB_CODE_SUCCESS == code) {
1,793,899✔
4239
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanVgSlot0, pNode->stbJoin.vgSlot[0]);
1,793,899✔
4240
        }
4241
        if (TSDB_CODE_SUCCESS == code) {
1,793,899✔
4242
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanVgSlot1, pNode->stbJoin.vgSlot[1]);
1,793,899✔
4243
        }
4244
        if (TSDB_CODE_SUCCESS == code) {
1,793,899✔
4245
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanUidSlot0, pNode->stbJoin.uidSlot[0]);
1,793,899✔
4246
        }
4247
        if (TSDB_CODE_SUCCESS == code) {
1,793,899✔
4248
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanUidSlot1, pNode->stbJoin.uidSlot[1]);
1,793,899✔
4249
        }
4250
        if (TSDB_CODE_SUCCESS == code) {
1,793,899✔
4251
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanSrcScan0, pNode->stbJoin.srcScan[0]);
1,793,899✔
4252
        }
4253
        if (TSDB_CODE_SUCCESS == code) {
1,793,899✔
4254
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanSrcScan1, pNode->stbJoin.srcScan[1]);
1,793,899✔
4255
        }
4256
        break;
1,793,899✔
4257
      }
4258
      case DYN_QTYPE_VTB_AGG:
1,969,762✔
4259
      case DYN_QTYPE_VTB_SCAN: {
4260
        code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanBatchProcessChild, pNode->vtbScan.batchProcessChild);
1,969,762✔
4261
        if (TSDB_CODE_SUCCESS == code) {
1,969,762✔
4262
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanScanAllCols, pNode->vtbScan.scanAllCols);
1,969,762✔
4263
        }
4264
        if (TSDB_CODE_SUCCESS == code) {
1,969,762✔
4265
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanIsSuperTable, pNode->vtbScan.isSuperTable);
1,969,762✔
4266
        }
4267
        if (TSDB_CODE_SUCCESS == code) {
1,969,762✔
4268
          code = tjsonAddStringToObject(pJson, jkDynQueryCtrlPhysiPlanDbName, pNode->vtbScan.dbName);
1,969,762✔
4269
        }
4270
        if (TSDB_CODE_SUCCESS == code) {
1,969,762✔
4271
          code = tjsonAddStringToObject(pJson, jkDynQueryCtrlPhysiPlanStbName, pNode->vtbScan.tbName);
1,969,762✔
4272
        }
4273
        if (TSDB_CODE_SUCCESS == code) {
1,969,762✔
4274
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanSuid, pNode->vtbScan.suid);
1,969,762✔
4275
        }
4276
        if (TSDB_CODE_SUCCESS == code) {
1,969,762✔
4277
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanUid, pNode->vtbScan.uid);
1,969,762✔
4278
        }
4279
        if (TSDB_CODE_SUCCESS == code) {
1,969,762✔
4280
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanRVersion, pNode->vtbScan.rversion);
1,969,762✔
4281
        }
4282
        if (TSDB_CODE_SUCCESS == code) {
1,969,762✔
4283
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanAccountId, pNode->vtbScan.accountId);
1,969,762✔
4284
        }
4285
        if (TSDB_CODE_SUCCESS == code) {
1,969,762✔
4286
          code = tjsonAddObject(pJson, jkDynQueryCtrlPhysiPlanEpSet, epSetToJson, &pNode->vtbScan.mgmtEpSet);
1,969,762✔
4287
        }
4288
        if (TSDB_CODE_SUCCESS == code) {
1,969,762✔
4289
          code = nodeListToJson(pJson, jkDynQueryCtrlPhysiPlanScanCols, pNode->vtbScan.pScanCols);
1,969,762✔
4290
        }
4291
        if (TSDB_CODE_SUCCESS == code) {
1,969,762✔
4292
          code = nodeListToJson(pJson, jkDynQueryCtrlPhysiPlanOrgVgIds, pNode->vtbScan.pOrgVgIds);
1,969,762✔
4293
        }
4294
        if (TSDB_CODE_SUCCESS == code) {
1,969,762✔
4295
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanHasPartition, pNode->vtbScan.hasPartition);
1,969,762✔
4296
        }
4297
        break;
1,969,762✔
4298
      }
4299
      case DYN_QTYPE_VTB_WINDOW: {
23,534✔
4300
        code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanWstartSlotId, pNode->vtbWindow.wstartSlotId);
23,534✔
4301
        if (TSDB_CODE_SUCCESS == code) {
23,534✔
4302
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanWendSlotId, pNode->vtbWindow.wendSlotId);
23,534✔
4303
        }
4304
        if (TSDB_CODE_SUCCESS == code) {
23,534✔
4305
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanWdurationSlotId, pNode->vtbWindow.wdurationSlotId);
23,534✔
4306
        }
4307
        if (TSDB_CODE_SUCCESS == code) {
23,534✔
4308
          code = nodeListToJson(pJson, jkDynQueryCtrlPhysiPlanTargets, pNode->vtbWindow.pTargets);
23,534✔
4309
        }
4310
        if (TSDB_CODE_SUCCESS == code) {
23,534✔
4311
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanIsVstb, pNode->vtbWindow.isVstb);
23,534✔
4312
        }
4313
        if (TSDB_CODE_SUCCESS == code) {
23,534✔
4314
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanStateExtendOption, pNode->vtbWindow.extendOption);
23,534✔
4315
        }
4316
        if (TSDB_CODE_SUCCESS == code) {
23,534✔
4317
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlansingleWinMode, pNode->vtbWindow.singleWinMode);
23,534✔
4318
        }
4319
        break;
23,534✔
4320
      }
4321
      default:
×
4322
        return TSDB_CODE_INVALID_PARA;
×
4323
    }
4324
  }
4325
  if (TSDB_CODE_SUCCESS == code) {
3,787,195✔
4326
    code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanDynTbname, pNode->dynTbname);
3,787,195✔
4327
  }
4328
  return code;
3,787,195✔
4329
}
4330

4331
static int32_t jsonToPhysiDynQueryCtrlNode(const SJson* pJson, void* pObj) {
128,297✔
4332
  SDynQueryCtrlPhysiNode* pNode = (SDynQueryCtrlPhysiNode*)pObj;
128,297✔
4333

4334
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
128,297✔
4335
  if (TSDB_CODE_SUCCESS == code) {
128,297✔
4336
    tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType, code);
128,297✔
4337
  }
4338
  if (TSDB_CODE_SUCCESS == code) {
128,297✔
4339
    switch (pNode->qType) {
128,297✔
4340
      case DYN_QTYPE_STB_HASH: {
1,180✔
4341
        tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType, code);
1,180✔
4342
        if (TSDB_CODE_SUCCESS == code) {
1,180✔
4343
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanBatchFetch, &pNode->stbJoin.batchFetch);
1,180✔
4344
        }
4345
        if (TSDB_CODE_SUCCESS == code) {
1,180✔
4346
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanVgSlot0, pNode->stbJoin.vgSlot[0], code);
1,180✔
4347
        }
4348
        if (TSDB_CODE_SUCCESS == code) {
1,180✔
4349
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanVgSlot1, pNode->stbJoin.vgSlot[1], code);
1,180✔
4350
        }
4351
        if (TSDB_CODE_SUCCESS == code) {
1,180✔
4352
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanUidSlot0, pNode->stbJoin.uidSlot[0], code);
1,180✔
4353
        }
4354
        if (TSDB_CODE_SUCCESS == code) {
1,180✔
4355
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanUidSlot1, pNode->stbJoin.uidSlot[1], code);
1,180✔
4356
        }
4357
        if (TSDB_CODE_SUCCESS == code) {
1,180✔
4358
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanSrcScan0, &pNode->stbJoin.srcScan[0]);
1,180✔
4359
        }
4360
        if (TSDB_CODE_SUCCESS == code) {
1,180✔
4361
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanSrcScan1, &pNode->stbJoin.srcScan[1]);
1,180✔
4362
        }
4363
        break;
1,180✔
4364
      }
4365
      case DYN_QTYPE_VTB_AGG:
127,117✔
4366
      case DYN_QTYPE_VTB_SCAN: {
4367
        code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanBatchProcessChild, &pNode->vtbScan.batchProcessChild);
127,117✔
4368
        if (TSDB_CODE_SUCCESS == code) {
127,117✔
4369
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanScanAllCols, &pNode->vtbScan.scanAllCols);
127,117✔
4370
        }
4371
        if (TSDB_CODE_SUCCESS == code) {
127,117✔
4372
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanIsSuperTable, &pNode->vtbScan.isSuperTable);
127,117✔
4373
        }
4374
        if (TSDB_CODE_SUCCESS == code) {
127,117✔
4375
          code = tjsonGetStringValue(pJson, jkDynQueryCtrlPhysiPlanDbName, pNode->vtbScan.dbName);
127,117✔
4376
        }
4377
        if (TSDB_CODE_SUCCESS == code) {
127,117✔
4378
          code = tjsonGetStringValue(pJson, jkDynQueryCtrlPhysiPlanStbName, pNode->vtbScan.tbName);
127,117✔
4379
        }
4380
        if (TSDB_CODE_SUCCESS == code) {
127,117✔
4381
          code = tjsonGetUBigIntValue(pJson, jkDynQueryCtrlPhysiPlanSuid, &pNode->vtbScan.suid);
127,117✔
4382
        }
4383
        if (TSDB_CODE_SUCCESS == code) {
127,117✔
4384
          code = tjsonGetUBigIntValue(pJson, jkDynQueryCtrlPhysiPlanUid, &pNode->vtbScan.uid);
127,117✔
4385
        }
4386
        if (TSDB_CODE_SUCCESS == code) {
127,117✔
4387
          code = tjsonGetIntValue(pJson, jkDynQueryCtrlPhysiPlanRVersion, &pNode->vtbScan.rversion);
127,117✔
4388
        }
4389
        if (TSDB_CODE_SUCCESS == code) {
127,117✔
4390
          code = tjsonGetIntValue(pJson, jkDynQueryCtrlPhysiPlanAccountId, &pNode->vtbScan.accountId);
127,117✔
4391
        }
4392
        if (TSDB_CODE_SUCCESS == code) {
127,117✔
4393
          code = tjsonToObject(pJson, jkDynQueryCtrlPhysiPlanEpSet, jsonToEpSet, &pNode->vtbScan.mgmtEpSet);
127,117✔
4394
        }
4395
        if (TSDB_CODE_SUCCESS == code) {
127,117✔
4396
          code = jsonToNodeList(pJson, jkDynQueryCtrlPhysiPlanScanCols, &pNode->vtbScan.pScanCols);
127,117✔
4397
        }
4398
        if (TSDB_CODE_SUCCESS == code) {
127,117✔
4399
          code = jsonToNodeList(pJson, jkDynQueryCtrlPhysiPlanOrgVgIds, &pNode->vtbScan.pOrgVgIds);
127,117✔
4400
        }
4401
        if (TSDB_CODE_SUCCESS == code) {
127,117✔
4402
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanHasPartition, &pNode->vtbScan.hasPartition);
127,117✔
4403
        }
4404
        break;
127,117✔
4405
      }
4406
      case DYN_QTYPE_VTB_WINDOW: {
×
4407
        tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanWstartSlotId, pNode->vtbWindow.wstartSlotId, code);
×
4408
        if (TSDB_CODE_SUCCESS == code) {
×
4409
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanWendSlotId, pNode->vtbWindow.wendSlotId, code);
×
4410
        }
4411
        if (TSDB_CODE_SUCCESS == code) {
×
4412
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanWdurationSlotId, pNode->vtbWindow.wdurationSlotId, code);
×
4413
        }
4414
        if (TSDB_CODE_SUCCESS == code) {
×
4415
          code = jsonToNodeList(pJson, jkDynQueryCtrlPhysiPlanTargets, &pNode->vtbWindow.pTargets);
×
4416
        }
4417
        if (TSDB_CODE_SUCCESS == code) {
×
4418
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanIsVstb, &pNode->vtbWindow.isVstb);
×
4419
        }
4420
        if (TSDB_CODE_SUCCESS == code) {
×
4421
          code = tjsonGetIntValue(pJson, jkDynQueryCtrlPhysiPlanStateExtendOption, (int32_t*)&pNode->vtbWindow.extendOption);
×
4422
        }
4423
        if (TSDB_CODE_SUCCESS == code) {
×
4424
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlansingleWinMode, &pNode->vtbWindow.singleWinMode);
×
4425
        }
4426
        break;
×
4427
      }
4428
      default:
×
4429
        return TSDB_CODE_INVALID_PARA;
×
4430
    }
4431
  }
4432
  if (TSDB_CODE_SUCCESS == code) {
128,297✔
4433
    code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanDynTbname, &pNode->dynTbname);
128,297✔
4434
  }
4435
  return code;
128,297✔
4436
}
4437

4438
static const char* jkQueryNodeAddrId = "Id";
4439
static const char* jkQueryNodeAddrInUse = "InUse";
4440
static const char* jkQueryNodeAddrNumOfEps = "NumOfEps";
4441
static const char* jkQueryNodeAddrEps = "Eps";
4442

4443
static int32_t queryNodeAddrToJson(const void* pObj, SJson* pJson) {
831,700,114✔
4444
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
831,700,114✔
4445

4446
  int32_t code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrId, pNode->nodeId);
831,700,114✔
4447
  if (TSDB_CODE_SUCCESS == code) {
831,704,678✔
4448
    code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrInUse, pNode->epSet.inUse);
831,704,154✔
4449
  }
4450
  if (TSDB_CODE_SUCCESS == code) {
831,705,585✔
4451
    code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrNumOfEps, pNode->epSet.numOfEps);
831,705,585✔
4452
  }
4453
  if (TSDB_CODE_SUCCESS == code) {
831,705,108✔
4454
    code = tjsonAddArray(pJson, jkQueryNodeAddrEps, epToJson, pNode->epSet.eps, sizeof(SEp), pNode->epSet.numOfEps);
831,705,108✔
4455
  }
4456

4457
  return code;
831,704,225✔
4458
}
4459

4460
static int32_t jsonToQueryNodeAddr(const SJson* pJson, void* pObj) {
3,079,936✔
4461
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
3,079,936✔
4462

4463
  int32_t code = tjsonGetIntValue(pJson, jkQueryNodeAddrId, &pNode->nodeId);
3,079,936✔
4464
  if (TSDB_CODE_SUCCESS == code) {
3,080,532✔
4465
    code = tjsonGetTinyIntValue(pJson, jkQueryNodeAddrInUse, &pNode->epSet.inUse);
3,080,532✔
4466
  }
4467
  if (TSDB_CODE_SUCCESS == code) {
3,080,532✔
4468
    code = tjsonGetTinyIntValue(pJson, jkQueryNodeAddrNumOfEps, &pNode->epSet.numOfEps);
3,080,532✔
4469
  }
4470
  if (TSDB_CODE_SUCCESS == code) {
3,080,532✔
4471
    code = tjsonToArray(pJson, jkQueryNodeAddrEps, jsonToEp, pNode->epSet.eps, sizeof(SEp));
3,080,532✔
4472
  }
4473

4474
  return code;
3,080,199✔
4475
}
4476

4477
static const char* jkColOtableName = "colOtableName";
4478
static const char* jkColVtableId = "colVtableId";
4479
static int32_t colIdNameToJson(const void* pObj, SJson* pJson) {
×
4480
  const SColIdName* pCol = (const SColIdName*)pObj;
×
4481

4482
  int32_t code = tjsonAddIntegerToObject(pJson, jkColVtableId, pCol->colId);
×
4483
  if (TSDB_CODE_SUCCESS == code) {
×
4484
    code = tjsonAddStringToObject(pJson, jkColOtableName, pCol->colName);
×
4485
  }
4486

4487
  return code;
×
4488
}
4489

4490

4491
static const char* jkOtableHashSize = "otbHashSize";
4492
static const char* jkOtableHashKV = "otbHashKeyValue";
4493
static const char* jkOtableHashName = "otbHashName";
4494
static const char* jkOtableHashValue = "otbHashValue";
4495
static int32_t oTableHashToJson(const void* pObj, SJson* pJson) {
×
4496
  const SSHashObj* pHash = (const SSHashObj*)pObj;
×
4497
  int32_t code = tjsonAddIntegerToObject(pJson, jkOtableHashSize, tSimpleHashGetSize(pHash));
×
4498
  if (code) {
×
4499
    return code;
×
4500
  }
4501

4502
  SJson* pJsonArray = tjsonAddArrayToObject(pJson, jkOtableHashKV);
×
4503
  if (NULL == pJsonArray) {
×
4504
    return terrno;
×
4505
  }
4506

4507
  int32_t iter = 0;
×
4508
  SArray** pCols = NULL;
×
4509
  char* pKey = NULL;
×
4510
  void* p = NULL;
×
4511
  while (NULL != (p = tSimpleHashIterate(pHash, p, &iter))) {
×
4512
    pKey = (char*)tSimpleHashGetKey(p, NULL);
×
4513
    pCols = (SArray**)p;
×
4514
    SJson* pJobj = tjsonCreateObject();
×
4515
    if (pJobj == NULL) {
×
4516
      return terrno;
×
4517
    }
4518
    code = tjsonAddStringToObject(pJobj, jkOtableHashName, pKey);
×
4519
    if (code) {
×
4520
      return code;
×
4521
    }
4522
    code = tjsonAddArray(pJobj, jkOtableHashValue, colIdNameToJson, TARRAY_GET_ELEM(*pCols, 0), sizeof(SColIdName), taosArrayGetSize(*pCols));
×
4523
    if (code) {
×
4524
      return code;
×
4525
    }
4526
    code = tjsonAddItemToArray(pJsonArray, pJobj);
×
4527
    if (code) {
×
4528
      return code;
×
4529
    }
4530
  }
4531

4532
  return code;
×
4533
}
4534

4535
static const char* jkVtablesHashSize = "vtbHashSize";
4536
static const char* jkVtablesHashKV = "vtbHashKeyValue";
4537
static const char* jkVtablesVuid = "vtbHashVuid";
4538
static const char* jkVtablesVValue = "vtbHashVValue";
4539
static int32_t vtablesHashToJson(const void* pObj, SJson* pJson) {
×
4540
  const SSHashObj* pHash = (const SSHashObj*)pObj;
×
4541
  int32_t code = tjsonAddIntegerToObject(pJson, jkVtablesHashSize, tSimpleHashGetSize(pHash));
×
4542
  if (code) {
×
4543
    return code;
×
4544
  }
4545

4546
  SJson* pJsonArray = tjsonAddArrayToObject(pJson, jkVtablesHashKV);
×
4547
  if (NULL == pJsonArray) {
×
4548
    return terrno;
×
4549
  }
4550

4551
  int32_t iter = 0;
×
4552
  SSHashObj** pOtable = NULL;
×
4553
  char* pKey = NULL;
×
4554
  void* p = NULL;
×
4555
  while (NULL != (p = tSimpleHashIterate(pHash, p, &iter))) {
×
4556
    pKey = (char*)tSimpleHashGetKey(p, NULL);
×
4557
    pOtable = (SSHashObj**)p;
×
4558
    SJson* pJobj = tjsonCreateObject();
×
4559
    if (pJobj == NULL) {
×
4560
      return terrno;
×
4561
    }
4562
    code = tjsonAddIntegerToObject(pJobj, jkVtablesVuid, *(uint64_t*)((int32_t*)pKey + 1));
×
4563
    if (code) {
×
4564
      return code;
×
4565
    }
4566
    code = tjsonAddObject(pJobj, jkVtablesVValue, oTableHashToJson, *pOtable);
×
4567
    if (code) {
×
4568
      return code;
×
4569
    }
4570
    code = tjsonAddItemToArray(pJsonArray, pJobj);
×
4571
    if (code) {
×
4572
      return code;
×
4573
    }
4574
  }
4575

4576
  return code;
×
4577
}
4578

4579

4580

4581
static const char* jkSubplanId = "Id";
4582
static const char* jkSubplanType = "SubplanType";
4583
static const char* jkSubplanMsgType = "MsgType";
4584
static const char* jkSubplanLevel = "Level";
4585
static const char* jkSubplanDbFName = "DbFName";
4586
static const char* jkSubplanParent = "Parent";
4587
static const char* jkSubplanChildren = "Child";
4588
static const char* jkSubplanUser = "User";
4589
static const char* jkSubplanNodeAddr = "NodeAddr";
4590
static const char* jkSubplanRootNode = "RootNode";
4591
static const char* jkSubplanDataSink = "DataSink";
4592
static const char* jkSubplanTagCond = "TagCond";
4593
static const char* jkSubplanTagIndexCond = "TagIndexCond";
4594
static const char* jkSubplanVTables = "VTables";
4595
static const char* jkSubplanShowRewrite = "ShowRewrite";
4596
static const char* jkSubplanRowsThreshold = "RowThreshold";
4597
static const char* jkSubplanDynamicRowsThreshold = "DyRowThreshold";
4598
static const char* jkSubplanIsView = "IsView";
4599
static const char* jkSubplanIsAudit = "IsAudit";
4600
static const char* jkSubplanDynTbname = "DynTbname";
4601
static const char* jkSubplanProcessOneBlock = "ProcessOneBlock";
4602

4603

4604
static int32_t subplanToJson(const void* pObj, SJson* pJson) {
830,810,451✔
4605
  const SSubplan* pNode = (const SSubplan*)pObj;
830,810,451✔
4606

4607
  int32_t code = tjsonAddObject(pJson, jkSubplanId, subplanIdToJson, &pNode->id);
830,810,451✔
4608
  if (TSDB_CODE_SUCCESS == code) {
830,816,418✔
4609
    code = tjsonAddIntegerToObject(pJson, jkSubplanType, pNode->subplanType);
830,816,745✔
4610
  }
4611
  if (TSDB_CODE_SUCCESS == code) {
830,816,238✔
4612
    code = tjsonAddIntegerToObject(pJson, jkSubplanMsgType, pNode->msgType);
830,816,238✔
4613
  }
4614
  if (TSDB_CODE_SUCCESS == code) {
830,815,479✔
4615
    code = tjsonAddIntegerToObject(pJson, jkSubplanLevel, pNode->level);
830,815,479✔
4616
  }
4617
  if (TSDB_CODE_SUCCESS == code) {
830,816,128✔
4618
    code = tjsonAddStringToObject(pJson, jkSubplanDbFName, pNode->dbFName);
830,816,128✔
4619
  }
4620
  if (TSDB_CODE_SUCCESS == code) {
830,814,753✔
4621
    code = tjsonAddStringToObject(pJson, jkSubplanUser, pNode->user);
830,814,753✔
4622
  }
4623
  if (TSDB_CODE_SUCCESS == code) {
830,816,268✔
4624
    code = tjsonAddObject(pJson, jkSubplanNodeAddr, queryNodeAddrToJson, &pNode->execNode);
830,816,268✔
4625
  }
4626
  if (TSDB_CODE_SUCCESS == code) {
830,816,745✔
4627
    code = nodeListToJson(pJson, jkSubplanChildren, pNode->pChildren);
830,816,745✔
4628
  }
4629
  if (TSDB_CODE_SUCCESS == code) {
830,812,898✔
4630
    code = tjsonAddObject(pJson, jkSubplanRootNode, nodeToJson, pNode->pNode);
830,812,898✔
4631
  }
4632
  if (TSDB_CODE_SUCCESS == code) {
830,815,174✔
4633
    code = tjsonAddObject(pJson, jkSubplanDataSink, nodeToJson, pNode->pDataSink);
830,815,174✔
4634
  }
4635
  if (TSDB_CODE_SUCCESS == code) {
830,817,082✔
4636
    code = tjsonAddObject(pJson, jkSubplanTagCond, nodeToJson, pNode->pTagCond);
830,817,082✔
4637
  }
4638
  if (TSDB_CODE_SUCCESS == code) {
830,816,128✔
4639
    code = tjsonAddObject(pJson, jkSubplanTagIndexCond, nodeToJson, pNode->pTagIndexCond);
830,816,128✔
4640
  }
4641
  if (TSDB_CODE_SUCCESS == code) {
830,815,651✔
4642
    code = tjsonAddObject(pJson, jkSubplanVTables, vtablesHashToJson, pNode->pVTables);
830,815,651✔
4643
  }
4644
  if (TSDB_CODE_SUCCESS == code) {
830,816,128✔
4645
    code = tjsonAddBoolToObject(pJson, jkSubplanShowRewrite, pNode->showRewrite);
830,816,128✔
4646
  }
4647
  if (TSDB_CODE_SUCCESS == code) {
830,817,082✔
4648
    code = tjsonAddBoolToObject(pJson, jkSubplanIsView, pNode->isView);
830,817,082✔
4649
  }
4650
  if (TSDB_CODE_SUCCESS == code) {
830,816,605✔
4651
    code = tjsonAddBoolToObject(pJson, jkSubplanIsAudit, pNode->isAudit);
830,816,605✔
4652
  }
4653
  if (TSDB_CODE_SUCCESS == code) {
830,816,605✔
4654
    code = tjsonAddIntegerToObject(pJson, jkSubplanRowsThreshold, pNode->rowsThreshold);
830,816,605✔
4655
  }
4656
  if (TSDB_CODE_SUCCESS == code) {
830,816,605✔
4657
    code = tjsonAddBoolToObject(pJson, jkSubplanDynamicRowsThreshold, pNode->dynamicRowThreshold);
830,816,605✔
4658
  }
4659
  if (TSDB_CODE_SUCCESS == code) {
830,817,082✔
4660
    code = tjsonAddBoolToObject(pJson, jkSubplanDynTbname, pNode->dynTbname);
830,817,082✔
4661
  }
4662
  if (TSDB_CODE_SUCCESS == code) {
830,816,128✔
4663
    code = tjsonAddBoolToObject(pJson, jkSubplanProcessOneBlock, pNode->processOneBlock);
830,816,128✔
4664
  }
4665

4666
  return code;
830,817,082✔
4667
}
4668

4669
static int32_t jsonToOtableCols(const SJson* pJson, void* pObj) {
×
4670
  SArray** pCols = (SArray**)pObj;
×
4671
  SColIdName col;
×
4672
  char colName[TSDB_COL_NAME_LEN];
×
4673
  int32_t code = 0;
×
4674
  int32_t colNum = tjsonGetArraySize(pJson);
×
4675
  *pCols = taosArrayInit(colNum, sizeof(SColIdName));
×
4676
  if (NULL == *pCols) {
×
4677
    return terrno;
×
4678
  }
4679
  for (int32_t i = 0; i < colNum; ++i) {
×
4680
    SJson* pCol = tjsonGetArrayItem(pJson, i);
×
4681
    code = tjsonGetSmallIntValue(pCol, jkColVtableId, &col.colId);
×
4682
    if (code < 0) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4683
    code = tjsonGetStringValue(pCol, jkColOtableName, colName);
×
4684
    if (code < 0) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4685
    col.colName = taosStrdup(colName);
×
4686
    if (NULL == col.colName) {
×
4687
      return terrno;
×
4688
    }
4689
    if (NULL == taosArrayPush(*pCols, &col)) {
×
4690
      return terrno;
×
4691
    }
4692
  }
4693

4694
  return code;
×
4695
}
4696

4697
static int32_t jsonToOtableHash(const SJson* pJson, void* pObj) {
×
4698
  SSHashObj** pHash = (SSHashObj**)pObj;
×
4699
  int32_t hashSize = 0;
×
4700
  int32_t code = tjsonGetIntValue(pJson, jkOtableHashSize, &hashSize);
×
4701
  if (TSDB_CODE_SUCCESS == code && hashSize > 0) {
×
4702
    *pHash = tSimpleHashInit(hashSize, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY));
×
4703
    if (NULL == *pHash) {
×
4704
      return terrno;
×
4705
    }
4706
    tSimpleHashSetFreeFp(*pHash, tFreeStreamVtbOtbInfo);
×
4707

4708
    SJson *ovalues = tjsonGetObjectItem(pJson, jkOtableHashKV);
×
4709
    if (ovalues == NULL) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4710
    char tbName[TSDB_TABLE_NAME_LEN];
×
4711
    SArray* pCols = NULL;
×
4712
    for (int32_t d = 0; d < hashSize; ++d) {
×
4713
      SJson *okeyValue = tjsonGetArrayItem(ovalues, d);
×
4714
      if (okeyValue == NULL) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4715

4716
      code = tjsonGetStringValue(okeyValue, jkOtableHashName, tbName);
×
4717
      if (code < 0) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4718
      SJson *ovalue = tjsonGetObjectItem(okeyValue, jkOtableHashValue);
×
4719
      code = jsonToOtableCols(ovalue, &pCols);
×
4720
      if (code < 0) return code;
×
4721
      code = tSimpleHashPut(*pHash, tbName, strlen(tbName) + 1, &pCols, POINTER_BYTES);
×
4722
      if (code < 0) return code;
×
4723
    }
4724
  }
4725

4726
  return code;
×
4727
}
4728

4729

4730

4731
static int32_t jsonToVtablesHash(const SJson* pJson, void* pObj) {
×
4732
  SSHashObj** pHash = (SSHashObj**)pObj;
×
4733
  int32_t hashSize = 0;
×
4734
  int32_t code = tjsonGetIntValue(pJson, jkVtablesHashSize, &hashSize);
×
4735
  if (TSDB_CODE_SUCCESS == code && hashSize > 0) {
×
4736
    *pHash = tSimpleHashInit(hashSize, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT));
×
4737
    if (NULL == *pHash) {
×
4738
      return terrno;
×
4739
    }
4740
    tSimpleHashSetFreeFp(*pHash, tFreeStreamVtbVtbInfo);
×
4741
    SJson *vvalues = tjsonGetObjectItem(pJson, jkVtablesHashKV);
×
4742
    if (vvalues == NULL) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4743
    uint64_t vuid = 0;
×
4744
    SSHashObj* pOtable = NULL;
×
4745
    for (int32_t d = 0; d < hashSize; ++d) {
×
4746
      SJson *vkeyValue = tjsonGetArrayItem(vvalues, d);
×
4747
      if (vkeyValue == NULL) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4748

4749
      code = tjsonGetUBigIntValue(vkeyValue, jkVtablesVuid, &vuid);
×
4750
      if (code < 0) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4751
      SJson *vvalue = tjsonGetObjectItem(vkeyValue, jkVtablesVValue);
×
4752
      code = jsonToOtableHash(vvalue, &pOtable);
×
4753
      if (code < 0) return code;
×
4754
      code = tSimpleHashPut(*pHash, &vuid, sizeof(vuid), &pOtable, POINTER_BYTES);
×
4755
      if (code < 0) return code;
×
4756
    }
4757
  }
4758

4759
  return code;
×
4760
}
4761

4762

4763
static int32_t jsonToSubplan(const SJson* pJson, void* pObj) {
2,663,118✔
4764
  SSubplan* pNode = (SSubplan*)pObj;
2,663,118✔
4765

4766
  int32_t code = tjsonToObject(pJson, jkSubplanId, jsonToSubplanId, &pNode->id);
2,663,118✔
4767
  if (TSDB_CODE_SUCCESS == code) {
2,663,714✔
4768
    tjsonGetNumberValue(pJson, jkSubplanType, pNode->subplanType, code);
2,663,714✔
4769
  }
4770
  if (TSDB_CODE_SUCCESS == code) {
2,663,714✔
4771
    code = tjsonGetIntValue(pJson, jkSubplanMsgType, &pNode->msgType);
2,663,714✔
4772
  }
4773
  if (TSDB_CODE_SUCCESS == code) {
2,663,714✔
4774
    code = tjsonGetIntValue(pJson, jkSubplanLevel, &pNode->level);
2,663,714✔
4775
  }
4776
  if (TSDB_CODE_SUCCESS == code) {
2,663,714✔
4777
    code = tjsonGetStringValue(pJson, jkSubplanDbFName, pNode->dbFName);
2,663,714✔
4778
  }
4779
  if (TSDB_CODE_SUCCESS == code) {
2,663,381✔
4780
    code = tjsonGetStringValue(pJson, jkSubplanUser, pNode->user);
2,663,381✔
4781
  }
4782
  if (TSDB_CODE_SUCCESS == code) {
2,663,381✔
4783
    code = tjsonToObject(pJson, jkSubplanNodeAddr, jsonToQueryNodeAddr, &pNode->execNode);
2,663,381✔
4784
  }
4785
  if (TSDB_CODE_SUCCESS == code) {
2,663,381✔
4786
    code = jsonToNodeList(pJson, jkSubplanChildren, &pNode->pChildren);
2,663,381✔
4787
  }
4788
  if (TSDB_CODE_SUCCESS == code) {
2,663,714✔
4789
    code = jsonToNodeObject(pJson, jkSubplanRootNode, (SNode**)&pNode->pNode);
2,663,714✔
4790
  }
4791
  if (TSDB_CODE_SUCCESS == code) {
2,663,554✔
4792
    code = jsonToNodeObject(pJson, jkSubplanDataSink, (SNode**)&pNode->pDataSink);
2,663,554✔
4793
  }
4794
  if (TSDB_CODE_SUCCESS == code) {
2,663,682✔
4795
    code = jsonToNodeObject(pJson, jkSubplanTagCond, (SNode**)&pNode->pTagCond);
2,663,682✔
4796
  }
4797
  if (TSDB_CODE_SUCCESS == code) {
2,663,714✔
4798
    code = jsonToNodeObject(pJson, jkSubplanTagIndexCond, (SNode**)&pNode->pTagIndexCond);
2,663,714✔
4799
  }
4800
  if (TSDB_CODE_SUCCESS == code) {
2,663,714✔
4801
    code = tjsonToObject(pJson, jkSubplanVTables, jsonToVtablesHash, &pNode->pVTables);
2,663,714✔
4802
  }
4803
  if (TSDB_CODE_SUCCESS == code) {
2,663,714✔
4804
    code = tjsonGetBoolValue(pJson, jkSubplanShowRewrite, &pNode->showRewrite);
2,663,714✔
4805
  }
4806
  if (TSDB_CODE_SUCCESS == code) {
2,663,714✔
4807
    code = tjsonGetBoolValue(pJson, jkSubplanIsView, &pNode->isView);
2,663,714✔
4808
  }
4809
  if (TSDB_CODE_SUCCESS == code) {
2,663,714✔
4810
    code = tjsonGetBoolValue(pJson, jkSubplanIsAudit, &pNode->isAudit);
2,663,714✔
4811
  }
4812
  if (TSDB_CODE_SUCCESS == code) {
2,663,714✔
4813
    code = tjsonGetIntValue(pJson, jkSubplanRowsThreshold, &pNode->rowsThreshold);
2,663,714✔
4814
  }
4815
  if (TSDB_CODE_SUCCESS == code) {
2,663,714✔
4816
    code = tjsonGetBoolValue(pJson, jkSubplanDynamicRowsThreshold, &pNode->dynamicRowThreshold);
2,663,714✔
4817
  }
4818
  if (TSDB_CODE_SUCCESS == code) {
2,663,714✔
4819
    SNode* pChild = NULL;
2,663,714✔
4820
    FOREACH(pChild, pNode->pChildren) {
3,849,198✔
4821
      if (nodeType(pChild) == QUERY_NODE_PHYSICAL_SUBPLAN) {
1,185,484✔
4822
        SSubplan* pSubplan = (SSubplan*)pChild;
22,824✔
4823
        code = nodesListMakeAppend(&pSubplan->pParents, (SNode*)pNode);
22,824✔
4824
      }
4825
    }
4826
  }
4827
  if (TSDB_CODE_SUCCESS == code) {
2,663,714✔
4828
    code = tjsonGetBoolValue(pJson, jkSubplanDynTbname, &pNode->dynTbname);
2,663,714✔
4829
  }
4830
  if (TSDB_CODE_SUCCESS == code) {
2,663,714✔
4831
    code = tjsonGetBoolValue(pJson, jkSubplanProcessOneBlock, &pNode->processOneBlock);
2,663,714✔
4832
  }
4833

4834
  return code;
2,663,714✔
4835
}
4836

4837
static const char* jkPlanQueryId = "QueryId";
4838
static const char* jkPlanNumOfSubplans = "NumOfSubplans";
4839
static const char* jkPlanSubplans = "Subplans";
4840
static const char* jkPlanSubQueriesNum = "SubQueriesNum";
4841
static const char* jkPlanSubQueries = "SubQueries";
4842

4843
static int32_t planToJson(const void* pObj, SJson* pJson) {
634,913,510✔
4844
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
634,913,510✔
4845
  char tmpBuf[64] = {0};
634,913,510✔
4846
  SNode* pTmp = NULL;
634,916,128✔
4847
  int32_t i = 0;
634,916,128✔
4848

4849
  int32_t code = tjsonAddIntegerToObject(pJson, jkPlanQueryId, pNode->queryId);
634,916,128✔
4850
  if (TSDB_CODE_SUCCESS == code) {
634,918,710✔
4851
    code = tjsonAddIntegerToObject(pJson, jkPlanNumOfSubplans, pNode->numOfSubplans);
634,918,710✔
4852
  }
4853
  if (TSDB_CODE_SUCCESS == code) {
634,918,128✔
4854
    code = tjsonAddObject(pJson, jkPlanSubplans, nodeToJson, nodesListGetNode(pNode->pSubplans, 0));
634,918,128✔
4855
  }
4856
  if (TSDB_CODE_SUCCESS == code && pNode->pChildren) {
634,918,233✔
4857
    code = tjsonAddIntegerToObject(pJson, jkPlanSubQueriesNum, pNode->pChildren->length);
×
4858
  }
4859
  if (TSDB_CODE_SUCCESS == code && pNode->pChildren) {
634,918,233✔
4860
    i = 0;
×
4861
    FOREACH(pTmp, pNode->pChildren) {
×
4862
      snprintf(tmpBuf, sizeof(tmpBuf), "%s%d", jkPlanSubQueries, i);
×
4863
      code = tjsonAddObject(pJson, tmpBuf, nodeToJson, pTmp);
×
4864
      ++i;
×
4865
    }
4866
  }
4867
  
4868
  return code;
634,918,233✔
4869
}
4870

4871
static int32_t pushSubplan(SNode* pSubplan, int32_t level, SNodeList* pSubplans) {
568,956✔
4872
  SNodeListNode* pGroup = NULL;
568,956✔
4873
  if (level >= LIST_LENGTH(pSubplans)) {
568,956✔
4874
    pGroup = NULL;
557,544✔
4875
    int32_t code = nodesMakeNode(QUERY_NODE_NODE_LIST, (SNode**)&pGroup);
557,544✔
4876
    if (NULL == pGroup) {
557,544✔
4877
      return code;
×
4878
    }
4879
    if (TSDB_CODE_SUCCESS != nodesListStrictAppend(pSubplans, (SNode*)pGroup)) {
557,544✔
4880
      return TSDB_CODE_OUT_OF_MEMORY;
×
4881
    }
4882
  } else {
4883
    pGroup = (SNodeListNode*)nodesListGetNode(pSubplans, level);
11,412✔
4884
  }
4885
  if (NULL == pGroup->pNodeList) {
568,956✔
4886
    int32_t code = nodesMakeList(&pGroup->pNodeList);
557,544✔
4887
    if (NULL == pGroup->pNodeList) {
557,544✔
4888
      return code;
×
4889
    }
4890
  }
4891
  return nodesListAppend(pGroup->pNodeList, (SNode*)pSubplan);
568,956✔
4892
}
4893

4894
static int32_t buildSubplan(SSubplan* pSubplan, SQueryPlan* pQueryPlan) {
568,956✔
4895
  int32_t   code = TSDB_CODE_SUCCESS;
568,956✔
4896
  if (TSDB_CODE_SUCCESS == code) {
568,956✔
4897
    code = pushSubplan((SNode*)pSubplan, pSubplan->level, pQueryPlan->pSubplans);
568,956✔
4898
    ++(pQueryPlan->numOfSubplans);
568,956✔
4899
  }
4900

4901
  if (TSDB_CODE_SUCCESS != code) {
568,956✔
4902
    nodesDestroyNode((SNode*)pSubplan);
×
4903
    return code;
×
4904
  }
4905

4906
  if (TSDB_CODE_SUCCESS == code) {
568,956✔
4907
    SNode* pChild = NULL;
568,956✔
4908
    FOREACH(pChild, pSubplan->pChildren) {
1,754,440✔
4909
      if (nodeType(pChild) == QUERY_NODE_PHYSICAL_SUBPLAN) {
1,185,484✔
4910
        code = buildSubplan((SSubplan*)pChild, pQueryPlan);
22,824✔
4911
        if (TSDB_CODE_SUCCESS != code) {
22,824✔
4912
          break;
×
4913
        }
4914
      }
4915
    }
4916
  }
4917
  return code;
568,956✔
4918
}
4919

4920
static int32_t jsonToPlan(const SJson* pJson, void* pObj) {
546,132✔
4921
  SQueryPlan* pNode = (SQueryPlan*)pObj;
546,132✔
4922

4923
  int32_t code = tjsonGetUBigIntValue(pJson, jkPlanQueryId, &pNode->queryId);
546,132✔
4924
  int32_t numOfSubplan = 0;
546,132✔
4925
  if (TSDB_CODE_SUCCESS == code) {
546,132✔
4926
    code = tjsonGetIntValue(pJson, jkPlanNumOfSubplans, &numOfSubplan);
546,132✔
4927
  }
4928
  SNodeListNode *pTopSubplan = NULL;
546,132✔
4929
  if (TSDB_CODE_SUCCESS == code) {
546,132✔
4930
    code = jsonToNodeObject(pJson, jkPlanSubplans, (SNode**)&pTopSubplan);
546,132✔
4931
  }
4932
  if (TSDB_CODE_SUCCESS == code) {
546,132✔
4933
    code = nodesMakeList(&pNode->pSubplans);
546,132✔
4934
  }
4935
  if (TSDB_CODE_SUCCESS == code && pTopSubplan) {
546,132✔
4936
    SNode* pGroupItem = NULL;
546,132✔
4937
    FOREACH(pGroupItem, pTopSubplan->pNodeList) {
1,092,264✔
4938
      if (nodeType(pGroupItem) == QUERY_NODE_PHYSICAL_SUBPLAN) {
546,132✔
4939
        code = buildSubplan((SSubplan*)pGroupItem, pNode);
546,132✔
4940
        if (TSDB_CODE_SUCCESS != code) {
546,132✔
4941
          break;
×
4942
        }
4943
      }
4944
    }
4945
  }
4946
  if (TSDB_CODE_SUCCESS == code) {
546,132✔
4947
    nodesClearList(pTopSubplan->pNodeList);
546,132✔
4948
    pTopSubplan->pNodeList = NULL;
546,132✔
4949
    nodesDestroyNode((SNode *)pTopSubplan);
546,132✔
4950
    if (numOfSubplan != pNode->numOfSubplans) {
546,132✔
4951
      code = TSDB_CODE_PLAN_INTERNAL_ERROR;
×
4952
      nodesError("%s toNode error numOfSubplan %d != %d", nodesNodeName(pNode->type), numOfSubplan, pNode->numOfSubplans);
×
4953
    }
4954
  }
4955
  int32_t numOfSubQueries = 0;
546,132✔
4956
  if (TSDB_CODE_SUCCESS == code) {
546,132✔
4957
    code = tjsonGetIntValue(pJson, jkPlanSubQueriesNum, &numOfSubQueries);
546,132✔
4958
  }
4959
  if (TSDB_CODE_SUCCESS == code && numOfSubQueries > 0) {
546,132✔
4960
    char tmpBuf[64] = {0};
×
4961
    SNode* pPlan = NULL;
×
4962
    for (int32_t i = 0; i < numOfSubQueries; ++i) {
×
4963
      snprintf(tmpBuf, sizeof(tmpBuf), "%s%d", jkPlanSubQueries, i);
×
4964
      code = jsonToNodeObject(pJson, tmpBuf, (SNode**)&pPlan);
×
4965
      if (code) {
×
4966
        break;
×
4967
      }
4968
      code = nodesListMakeStrictAppend(&pNode->pChildren, pPlan);
×
4969
      if (code) {
×
4970
        nodesDestroyNode(pPlan);
×
4971
        break;
×
4972
      }
4973
    }
4974
  }
4975
  
4976
  return code;
546,132✔
4977
}
4978

4979
static const char* jkAggLogicPlanGroupKeys = "GroupKeys";
4980
static const char* jkAggLogicPlanAggFuncs = "AggFuncs";
4981

4982
static int32_t logicAggNodeToJson(const void* pObj, SJson* pJson) {
×
4983
  const SAggLogicNode* pNode = (const SAggLogicNode*)pObj;
×
4984

4985
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
4986
  if (TSDB_CODE_SUCCESS == code) {
×
4987
    code = nodeListToJson(pJson, jkAggLogicPlanGroupKeys, pNode->pGroupKeys);
×
4988
  }
4989
  if (TSDB_CODE_SUCCESS == code) {
×
4990
    code = nodeListToJson(pJson, jkAggLogicPlanAggFuncs, pNode->pAggFuncs);
×
4991
  }
4992

4993
  return code;
×
4994
}
4995

4996
static int32_t jsonToLogicAggNode(const SJson* pJson, void* pObj) {
×
4997
  SAggLogicNode* pNode = (SAggLogicNode*)pObj;
×
4998

4999
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
5000
  if (TSDB_CODE_SUCCESS == code) {
×
5001
    code = jsonToNodeList(pJson, jkAggLogicPlanGroupKeys, &pNode->pGroupKeys);
×
5002
  }
5003
  if (TSDB_CODE_SUCCESS == code) {
×
5004
    code = jsonToNodeList(pJson, jkAggLogicPlanAggFuncs, &pNode->pAggFuncs);
×
5005
  }
5006

5007
  return code;
×
5008
}
5009

5010
static const char* jkDataTypeType = "Type";
5011
static const char* jkDataTypePrecision = "Precision";
5012
static const char* jkDataTypeScale = "Scale";
5013
static const char* jkDataTypeDataBytes = "Bytes";
5014

5015
static int32_t dataTypeToJson(const void* pObj, SJson* pJson) {
2,147,483,647✔
5016
  const SDataType* pNode = (const SDataType*)pObj;
2,147,483,647✔
5017

5018
  int32_t code = tjsonAddIntegerToObject(pJson, jkDataTypeType, pNode->type);
2,147,483,647✔
5019
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5020
    code = tjsonAddIntegerToObject(pJson, jkDataTypePrecision, pNode->precision);
2,147,483,647✔
5021
  }
5022
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5023
    code = tjsonAddIntegerToObject(pJson, jkDataTypeScale, pNode->scale);
2,147,483,647✔
5024
  }
5025
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5026
    code = tjsonAddIntegerToObject(pJson, jkDataTypeDataBytes, pNode->bytes);
2,147,483,647✔
5027
  }
5028

5029
  return code;
2,147,483,647✔
5030
}
5031

5032
static int32_t jsonToDataType(const SJson* pJson, void* pObj) {
79,423,038✔
5033
  SDataType* pNode = (SDataType*)pObj;
79,423,038✔
5034

5035
  int32_t code = tjsonGetUTinyIntValue(pJson, jkDataTypeType, &pNode->type);
79,423,038✔
5036
  if (TSDB_CODE_SUCCESS == code) {
79,428,184✔
5037
    code = tjsonGetUTinyIntValue(pJson, jkDataTypePrecision, &pNode->precision);
79,428,578✔
5038
  }
5039
  if (TSDB_CODE_SUCCESS == code) {
79,431,102✔
5040
    code = tjsonGetUTinyIntValue(pJson, jkDataTypeScale, &pNode->scale);
79,431,102✔
5041
  }
5042
  if (TSDB_CODE_SUCCESS == code) {
79,431,653✔
5043
    code = tjsonGetIntValue(pJson, jkDataTypeDataBytes, &pNode->bytes);
79,431,653✔
5044
  }
5045

5046
  return TSDB_CODE_SUCCESS;
79,430,382✔
5047
}
5048

5049
static const char* jkExprDataType = "DataType";
5050
static const char* jkExprAliasName = "AliasName";
5051
static const char* jkExprUserAlias = "UserAlias";
5052
static const char* jkExprRelateTo = "RelatedTo";
5053
static const char* jkExprBindExprID = "BindExprID";
5054

5055
static int32_t exprNodeToJson(const void* pObj, SJson* pJson) {
2,147,483,647✔
5056
  const SExprNode* pNode = (const SExprNode*)pObj;
2,147,483,647✔
5057

5058
  int32_t code = tjsonAddObject(pJson, jkExprDataType, dataTypeToJson, &pNode->resType);
2,147,483,647✔
5059
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5060
    code = tjsonAddStringToObject(pJson, jkExprAliasName, pNode->aliasName);
2,147,483,647✔
5061
  }
5062
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5063
    code = tjsonAddStringToObject(pJson, jkExprUserAlias, pNode->userAlias);
2,147,483,647✔
5064
  }
5065
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5066
    code = tjsonAddIntegerToObject(pJson, jkExprRelateTo, pNode->relatedTo);
2,147,483,647✔
5067
  }
5068
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5069
    code = tjsonAddIntegerToObject(pJson, jkExprBindExprID, pNode->bindExprID);
2,147,483,647✔
5070
  }
5071

5072
  return code;
2,147,483,647✔
5073
}
5074

5075
static int32_t jsonToExprNode(const SJson* pJson, void* pObj) {
37,099,240✔
5076
  SExprNode* pNode = (SExprNode*)pObj;
37,099,240✔
5077

5078
  int32_t code = tjsonToObject(pJson, jkExprDataType, jsonToDataType, &pNode->resType);
37,099,240✔
5079
  if (TSDB_CODE_SUCCESS == code) {
37,100,775✔
5080
    code = tjsonGetStringValue(pJson, jkExprAliasName, pNode->aliasName);
37,100,415✔
5081
  }
5082
  if (TSDB_CODE_SUCCESS == code) {
37,099,623✔
5083
    code = tjsonGetStringValue(pJson, jkExprUserAlias, pNode->userAlias);
37,099,623✔
5084
  }
5085
  if (TSDB_CODE_SUCCESS == code) {
37,100,071✔
5086
    code = tjsonGetIntValue(pJson, jkExprRelateTo, &pNode->relatedTo);
37,100,071✔
5087
  }
5088
  if (TSDB_CODE_SUCCESS == code) {
37,100,638✔
5089
    code = tjsonGetIntValue(pJson, jkExprBindExprID, &pNode->bindExprID);
37,100,638✔
5090
  }
5091

5092
  return code;
37,101,300✔
5093
}
5094

5095
static const char* jkColumnTableId = "TableId";
5096
static const char* jkColumnTableType = "TableType";
5097
static const char* jkColumnColId = "ColId";
5098
static const char* jkColumnColType = "ColType";
5099
static const char* jkColumnProjId = "ProjId";
5100
static const char* jkColumnDbName = "DbName";
5101
static const char* jkColumnTableName = "TableName";
5102
static const char* jkColumnTableAlias = "TableAlias";
5103
static const char* jkColumnColName = "ColName";
5104
static const char* jkColumnDataBlockId = "DataBlockId";
5105
static const char* jkColumnSlotId = "SlotId";
5106
static const char* jkColumnTableHasPk = "TableHasPk";
5107
static const char* jkColumnIsPk = "IsPk";
5108
static const char* jkColumnNumOfPKs = "NumOfPKs";
5109
static const char* jkColumnHasRef = "HasRef";
5110
static const char* jkColumnHasDep = "HasDep";
5111
static const char* jkColumnRefDb = "RefDb";
5112
static const char* jkColumnRefTable = "RefTable";
5113
static const char* jkColumnRefCol = "RefCol";
5114
static const char* jkColumnIsPrimTs = "IsPrimTs";
5115

5116
static int32_t columnNodeToJson(const void* pObj, SJson* pJson) {
2,147,483,647✔
5117
  const SColumnNode* pNode = (const SColumnNode*)pObj;
2,147,483,647✔
5118

5119
  int32_t code = exprNodeToJson(pObj, pJson);
2,147,483,647✔
5120
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5121
    code = tjsonAddIntegerToObject(pJson, jkColumnTableId, pNode->tableId);
2,147,483,647✔
5122
  }
5123
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5124
    code = tjsonAddIntegerToObject(pJson, jkColumnTableType, pNode->tableType);
2,147,483,647✔
5125
  }
5126
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5127
    code = tjsonAddIntegerToObject(pJson, jkColumnColId, pNode->colId);
2,147,483,647✔
5128
  }
5129
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5130
    code = tjsonAddIntegerToObject(pJson, jkColumnProjId, pNode->projIdx);
2,147,483,647✔
5131
  }
5132
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5133
    code = tjsonAddIntegerToObject(pJson, jkColumnColType, pNode->colType);
2,147,483,647✔
5134
  }
5135
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5136
    code = tjsonAddStringToObject(pJson, jkColumnDbName, pNode->dbName);
2,147,483,647✔
5137
  }
5138
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5139
    code = tjsonAddStringToObject(pJson, jkColumnTableName, pNode->tableName);
2,147,483,647✔
5140
  }
5141
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5142
    code = tjsonAddStringToObject(pJson, jkColumnTableAlias, pNode->tableAlias);
2,147,483,647✔
5143
  }
5144
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5145
    code = tjsonAddStringToObject(pJson, jkColumnColName, pNode->colName);
2,147,483,647✔
5146
  }
5147
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5148
    code = tjsonAddIntegerToObject(pJson, jkColumnDataBlockId, pNode->dataBlockId);
2,147,483,647✔
5149
  }
5150
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5151
    code = tjsonAddIntegerToObject(pJson, jkColumnSlotId, pNode->slotId);
2,147,483,647✔
5152
  }
5153
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5154
    code = tjsonAddBoolToObject(pJson, jkColumnTableHasPk, pNode->tableHasPk);
2,147,483,647✔
5155
  }
5156
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5157
    code = tjsonAddBoolToObject(pJson, jkColumnIsPk, pNode->isPk);
2,147,483,647✔
5158
  }
5159
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5160
    code = tjsonAddIntegerToObject(pJson, jkColumnNumOfPKs, pNode->numOfPKs);
2,147,483,647✔
5161
  }
5162
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5163
    code = tjsonAddBoolToObject(pJson, jkColumnHasDep, pNode->hasDep);
2,147,483,647✔
5164
  }
5165
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5166
    code = tjsonAddBoolToObject(pJson, jkRefColHasRef, pNode->hasRef);
2,147,483,647✔
5167
  }
5168
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5169
    code = tjsonAddStringToObject(pJson, jkColumnRefDb, pNode->refDbName);
2,147,483,647✔
5170
  }
5171
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5172
    code = tjsonAddStringToObject(pJson, jkColumnRefTable, pNode->refTableName);
2,147,483,647✔
5173
  }
5174
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5175
    code = tjsonAddStringToObject(pJson, jkColumnRefCol, pNode->refColName);
2,147,483,647✔
5176
  }
5177
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5178
    code = tjsonAddBoolToObject(pJson, jkColumnIsPrimTs, pNode->isPrimTs);
2,147,483,647✔
5179
  }
5180
  return code;
2,147,483,647✔
5181
}
5182

5183
static int32_t jsonToColumnNode(const SJson* pJson, void* pObj) {
22,582,432✔
5184
  SColumnNode* pNode = (SColumnNode*)pObj;
22,582,432✔
5185

5186
  int32_t code = jsonToExprNode(pJson, pObj);
22,582,432✔
5187
  if (TSDB_CODE_SUCCESS == code) {
22,583,200✔
5188
    code = tjsonGetUBigIntValue(pJson, jkColumnTableId, &pNode->tableId);
22,583,200✔
5189
  }
5190
  if (TSDB_CODE_SUCCESS == code) {
22,582,444✔
5191
    code = tjsonGetTinyIntValue(pJson, jkColumnTableType, &pNode->tableType);
22,582,444✔
5192
  }
5193
  if (TSDB_CODE_SUCCESS == code) {
22,583,174✔
5194
    code = tjsonGetSmallIntValue(pJson, jkColumnColId, &pNode->colId);
22,583,174✔
5195
  }
5196
  if (TSDB_CODE_SUCCESS == code) {
22,582,011✔
5197
    code = tjsonGetSmallIntValue(pJson, jkColumnProjId, &pNode->projIdx);
22,582,011✔
5198
  }
5199
  if (TSDB_CODE_SUCCESS == code) {
22,583,200✔
5200
    tjsonGetNumberValue(pJson, jkColumnColType, pNode->colType, code);
22,583,200✔
5201
  }
5202
  if (TSDB_CODE_SUCCESS == code) {
22,583,436✔
5203
    code = tjsonGetStringValue(pJson, jkColumnDbName, pNode->dbName);
22,583,436✔
5204
  }
5205
  if (TSDB_CODE_SUCCESS == code) {
22,582,440✔
5206
    code = tjsonGetStringValue(pJson, jkColumnTableName, pNode->tableName);
22,582,440✔
5207
  }
5208
  if (TSDB_CODE_SUCCESS == code) {
22,581,739✔
5209
    code = tjsonGetStringValue(pJson, jkColumnTableAlias, pNode->tableAlias);
22,581,739✔
5210
  }
5211
  if (TSDB_CODE_SUCCESS == code) {
22,582,835✔
5212
    code = tjsonGetStringValue(pJson, jkColumnColName, pNode->colName);
22,582,835✔
5213
  }
5214
  if (TSDB_CODE_SUCCESS == code) {
22,581,527✔
5215
    code = tjsonGetSmallIntValue(pJson, jkColumnDataBlockId, &pNode->dataBlockId);
22,581,527✔
5216
  }
5217
  if (TSDB_CODE_SUCCESS == code) {
22,582,466✔
5218
    code = tjsonGetSmallIntValue(pJson, jkColumnSlotId, &pNode->slotId);
22,582,466✔
5219
  }
5220
  if (TSDB_CODE_SUCCESS == code) {
22,583,142✔
5221
    code = tjsonGetBoolValue(pJson, jkColumnTableHasPk, &pNode->tableHasPk);
22,583,142✔
5222
  }
5223
  if (TSDB_CODE_SUCCESS == code) {
22,582,363✔
5224
    code = tjsonGetBoolValue(pJson, jkColumnIsPk, &pNode->isPk);
22,582,363✔
5225
  }
5226
  if (TSDB_CODE_SUCCESS == code) {
22,582,492✔
5227
    code = tjsonGetSmallIntValue(pJson, jkColumnNumOfPKs, &pNode->numOfPKs);
22,582,492✔
5228
  }
5229
  if (TSDB_CODE_SUCCESS == code) {
22,582,627✔
5230
    code = tjsonGetBoolValue(pJson, jkColumnHasDep, &pNode->hasDep);
22,582,627✔
5231
  }
5232
  if (TSDB_CODE_SUCCESS == code) {
22,583,436✔
5233
    code = tjsonGetBoolValue(pJson, jkColumnHasRef, &pNode->hasRef);
22,583,436✔
5234
  }
5235
  if (TSDB_CODE_SUCCESS == code) {
22,582,932✔
5236
    code = tjsonGetStringValue(pJson, jkColumnRefDb, pNode->refDbName);
22,582,932✔
5237
  }
5238
  if (TSDB_CODE_SUCCESS == code) {
22,581,732✔
5239
    code = tjsonGetStringValue(pJson, jkColumnRefTable, pNode->refTableName);
22,581,732✔
5240
  }
5241
  if (TSDB_CODE_SUCCESS == code) {
22,582,420✔
5242
    code = tjsonGetStringValue(pJson, jkColumnRefCol, pNode->refColName);
22,582,420✔
5243
  }
5244
  if (TSDB_CODE_SUCCESS == code) {
22,581,819✔
5245
    code = tjsonGetBoolValue(pJson, jkColumnIsPrimTs, &pNode->isPrimTs);
22,581,819✔
5246
  }
5247
  return code;
22,582,938✔
5248
}
5249

5250
static const char* jkValueLiteralSize = "LiteralSize";
5251
static const char* jkValueLiteral = "Literal";
5252
static const char* jkValueFlag = "Flag";
5253
static const char* jkValueTranslate = "Translate";
5254
static const char* jkValueNotReserved = "NotReserved";
5255
static const char* jkValueIsNull = "IsNull";
5256
static const char* jkValueUnit = "Unit";
5257
static const char* jkValueDatum = "Datum";
5258

5259
static int32_t datumToJson(const void* pObj, SJson* pJson) {
404,724,604✔
5260
  const SValueNode* pNode = (const SValueNode*)pObj;
404,724,604✔
5261

5262
  int32_t code = TSDB_CODE_SUCCESS;
404,724,604✔
5263
  switch (pNode->node.resType.type) {
404,724,604✔
5264
    case TSDB_DATA_TYPE_NULL:
×
5265
      break;
×
5266
    case TSDB_DATA_TYPE_BOOL:
11,730,839✔
5267
      code = tjsonAddBoolToObject(pJson, jkValueDatum, pNode->datum.b);
11,730,839✔
5268
      break;
11,730,839✔
5269
    case TSDB_DATA_TYPE_TINYINT:
295,438,335✔
5270
    case TSDB_DATA_TYPE_SMALLINT:
5271
    case TSDB_DATA_TYPE_INT:
5272
    case TSDB_DATA_TYPE_BIGINT:
5273
    case TSDB_DATA_TYPE_TIMESTAMP:
5274
      code = tjsonAddIntegerToObject(pJson, jkValueDatum, pNode->datum.i);
295,438,335✔
5275
      break;
295,438,335✔
5276
    case TSDB_DATA_TYPE_UTINYINT:
14,837✔
5277
    case TSDB_DATA_TYPE_USMALLINT:
5278
    case TSDB_DATA_TYPE_UINT:
5279
    case TSDB_DATA_TYPE_UBIGINT:
5280
      code = tjsonAddIntegerToObject(pJson, jkValueDatum, pNode->datum.u);
14,837✔
5281
      break;
14,837✔
5282
    case TSDB_DATA_TYPE_FLOAT:
34,232,612✔
5283
    case TSDB_DATA_TYPE_DOUBLE:
5284
      code = tjsonAddDoubleToObject(pJson, jkValueDatum, pNode->datum.d);
34,232,612✔
5285
      break;
34,232,612✔
5286
    case TSDB_DATA_TYPE_NCHAR: {
60,862✔
5287
      // cJSON only support utf-8 encoding. Convert memory content to hex string.
5288
      int32_t bufSize = varDataLen(pNode->datum.p) * 2 + 1;
60,862✔
5289
      char*   buf = taosMemoryCalloc(bufSize, sizeof(char));
60,862✔
5290
      if (!buf) return terrno;
60,862✔
5291
      code = taosHexEncode(varDataVal(pNode->datum.p), buf, varDataLen(pNode->datum.p), bufSize);
60,862✔
5292
      if (code != TSDB_CODE_SUCCESS) {
60,862✔
5293
        taosMemoryFree(buf);
×
5294
        return TSDB_CODE_TSC_INVALID_VALUE;
×
5295
      }
5296
      code = tjsonAddStringToObject(pJson, jkValueDatum, buf);
60,862✔
5297
      taosMemoryFree(buf);
60,862✔
5298
      break;
60,862✔
5299
    }
5300
    case TSDB_DATA_TYPE_VARCHAR:
63,246,279✔
5301
    case TSDB_DATA_TYPE_VARBINARY:
5302
    case TSDB_DATA_TYPE_GEOMETRY:
5303
      code = tjsonAddStringToObject(pJson, jkValueDatum, varDataVal(pNode->datum.p));
63,246,279✔
5304
      break;
63,247,233✔
5305
    case TSDB_DATA_TYPE_JSON: {
1,317✔
5306
      int32_t len = getJsonValueLen(pNode->datum.p);
1,317✔
5307
      int32_t bufSize = len * 2 + 1;
1,317✔
5308
      char*   buf = taosMemoryCalloc(bufSize, sizeof(char));
1,317✔
5309
      if (!buf) return terrno;
1,317✔
5310
      code = taosHexEncode(pNode->datum.p, buf, len, bufSize);
1,317✔
5311
      if (code != TSDB_CODE_SUCCESS) {
1,317✔
5312
        taosMemoryFree(buf);
×
5313
        return TSDB_CODE_TSC_INVALID_VALUE;
×
5314
      }
5315
      code = tjsonAddStringToObject(pJson, jkValueDatum, buf);
1,317✔
5316
      taosMemoryFree(buf);
1,317✔
5317
      break;
1,317✔
5318
    }
5319
    case TSDB_DATA_TYPE_DECIMAL:
×
5320
      break;
×
5321
    case TSDB_DATA_TYPE_BLOB:
×
5322
      code = tjsonAddStringToObject(pJson, jkValueDatum, blobDataVal(pNode->datum.p));
×
5323
      // todo
5324
    default:
×
5325
      break;
×
5326
  }
5327

5328
  return code;
404,726,035✔
5329
}
5330

5331
static int32_t valueNodeToJson(const void* pObj, SJson* pJson) {
405,897,870✔
5332
  const SValueNode* pNode = (const SValueNode*)pObj;
405,897,870✔
5333

5334
  int32_t code = exprNodeToJson(pObj, pJson);
405,897,870✔
5335
  if (TSDB_CODE_SUCCESS == code) {
405,898,347✔
5336
    code = tjsonAddIntegerToObject(pJson, jkValueLiteralSize, NULL != pNode->literal ? strlen(pNode->literal) : 0);
405,898,347✔
5337
  }
5338
  if (TSDB_CODE_SUCCESS == code && NULL != pNode->literal) {
405,899,301✔
5339
    code = tjsonAddStringToObject(pJson, jkValueLiteral, pNode->literal);
267,837,714✔
5340
  }
5341
  if (TSDB_CODE_SUCCESS == code) {
405,899,301✔
5342
    code = tjsonAddBoolToObject(pJson, jkValueFlag, pNode->flag);
405,899,301✔
5343
  }
5344
  if (TSDB_CODE_SUCCESS == code) {
405,899,301✔
5345
    code = tjsonAddBoolToObject(pJson, jkValueTranslate, pNode->translate);
405,899,301✔
5346
  }
5347
  if (TSDB_CODE_SUCCESS == code) {
405,898,347✔
5348
    code = tjsonAddBoolToObject(pJson, jkValueNotReserved, pNode->notReserved);
405,898,347✔
5349
  }
5350
  if (TSDB_CODE_SUCCESS == code) {
405,899,301✔
5351
    code = tjsonAddBoolToObject(pJson, jkValueIsNull, pNode->isNull);
405,899,301✔
5352
  }
5353
  if (TSDB_CODE_SUCCESS == code) {
405,899,301✔
5354
    code = tjsonAddIntegerToObject(pJson, jkValueUnit, pNode->unit);
405,899,301✔
5355
  }
5356
  if (TSDB_CODE_SUCCESS == code && pNode->translate && !pNode->isNull) {
405,899,301✔
5357
    code = datumToJson(pNode, pJson);
404,726,035✔
5358
  }
5359

5360
  return code;
405,899,301✔
5361
}
5362

5363

5364
static int32_t jsonToDatum(const SJson* pJson, void* pObj) {
5,432,671✔
5365
  SValueNode* pNode = (SValueNode*)pObj;
5,432,671✔
5366

5367
  int32_t code = TSDB_CODE_SUCCESS;
5,432,671✔
5368
  switch (pNode->node.resType.type) {
5,432,671✔
5369
    case TSDB_DATA_TYPE_NULL:
×
5370
      break;
×
5371
    case TSDB_DATA_TYPE_BOOL:
3,200✔
5372
      code = tjsonGetBoolValue(pJson, jkValueDatum, &pNode->datum.b);
3,200✔
5373
      *(bool*)&pNode->typeData = pNode->datum.b;
3,200✔
5374
      break;
3,200✔
5375
    case TSDB_DATA_TYPE_TINYINT:
328,599✔
5376
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
328,599✔
5377
      *(int8_t*)&pNode->typeData = pNode->datum.i;
328,599✔
5378
      break;
328,599✔
5379
    case TSDB_DATA_TYPE_SMALLINT:
8,388✔
5380
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
8,388✔
5381
      *(int16_t*)&pNode->typeData = pNode->datum.i;
8,388✔
5382
      break;
8,388✔
5383
    case TSDB_DATA_TYPE_INT:
508,006✔
5384
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
508,006✔
5385
      *(int32_t*)&pNode->typeData = pNode->datum.i;
508,006✔
5386
      break;
508,006✔
5387
    case TSDB_DATA_TYPE_BIGINT:
2,103,313✔
5388
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
2,103,313✔
5389
      *(int64_t*)&pNode->typeData = pNode->datum.i;
2,103,313✔
5390
      break;
2,103,313✔
5391
    case TSDB_DATA_TYPE_TIMESTAMP:
1,901,620✔
5392
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
1,901,620✔
5393
      *(int64_t*)&pNode->typeData = pNode->datum.i;
1,901,620✔
5394
      break;
1,901,620✔
5395
    case TSDB_DATA_TYPE_UTINYINT:
×
5396
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
5397
      *(uint8_t*)&pNode->typeData = pNode->datum.u;
×
5398
      break;
×
5399
    case TSDB_DATA_TYPE_USMALLINT:
×
5400
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
5401
      *(uint16_t*)&pNode->typeData = pNode->datum.u;
×
5402
      break;
×
5403
    case TSDB_DATA_TYPE_UINT:
×
5404
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
5405
      *(uint32_t*)&pNode->typeData = pNode->datum.u;
×
5406
      break;
×
5407
    case TSDB_DATA_TYPE_UBIGINT:
×
5408
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
5409
      *(uint64_t*)&pNode->typeData = pNode->datum.u;
×
5410
      break;
×
5411
    case TSDB_DATA_TYPE_FLOAT:
×
5412
      code = tjsonGetDoubleValue(pJson, jkValueDatum, &pNode->datum.d);
×
5413
      *(float*)&pNode->typeData = pNode->datum.d;
×
5414
      break;
×
5415
    case TSDB_DATA_TYPE_DOUBLE:
5,400✔
5416
      code = tjsonGetDoubleValue(pJson, jkValueDatum, &pNode->datum.d);
5,400✔
5417
      *(double*)&pNode->typeData = pNode->datum.d;
5,400✔
5418
      break;
5,400✔
5419
    case TSDB_DATA_TYPE_NCHAR:
574,145✔
5420
    case TSDB_DATA_TYPE_VARCHAR:
5421
    case TSDB_DATA_TYPE_VARBINARY:
5422
    case TSDB_DATA_TYPE_GEOMETRY: {
5423
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
574,145✔
5424
      if (NULL == pNode->datum.p) {
574,145✔
5425
        code = terrno;
×
5426
        break;
×
5427
      }
5428
      varDataSetLen(pNode->datum.p, pNode->node.resType.bytes - VARSTR_HEADER_SIZE);
574,145✔
5429
      if (TSDB_DATA_TYPE_NCHAR == pNode->node.resType.type) {
574,145✔
5430
        char* buf = taosMemoryCalloc(1, pNode->node.resType.bytes * 2 + VARSTR_HEADER_SIZE + 1);
×
5431
        if (NULL == buf) {
×
5432
          code = terrno;
×
5433
          break;
×
5434
        }
5435
        code = tjsonGetStringValue(pJson, jkValueDatum, buf);
×
5436
        if (code != TSDB_CODE_SUCCESS) {
×
5437
          taosMemoryFree(buf);
×
5438
          break;
×
5439
        }
5440
        code = taosHexDecode(buf, varDataVal(pNode->datum.p), pNode->node.resType.bytes - VARSTR_HEADER_SIZE);
×
5441
        if (code != TSDB_CODE_SUCCESS) {
×
5442
          taosMemoryFree(buf);
×
5443
          break;
×
5444
        }
5445
        taosMemoryFree(buf);
×
5446
      } else {
5447
        code = tjsonGetStringValue(pJson, jkValueDatum, varDataVal(pNode->datum.p));
574,145✔
5448
      }
5449
      break;
574,145✔
5450
    }
5451
    case TSDB_DATA_TYPE_JSON: {
×
5452
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes);
×
5453
      if (NULL == pNode->datum.p) {
×
5454
        code = terrno;
×
5455
        break;
×
5456
      }
5457
      char* buf = taosMemoryCalloc(1, pNode->node.resType.bytes * 2 + 1);
×
5458
      if (NULL == buf) {
×
5459
        code = terrno;
×
5460
        break;
×
5461
      }
5462
      code = tjsonGetStringValue(pJson, jkValueDatum, buf);
×
5463
      if (code != TSDB_CODE_SUCCESS) {
×
5464
        taosMemoryFree(buf);
×
5465
        break;
×
5466
      }
5467
      code = taosHexDecode(buf, pNode->datum.p, pNode->node.resType.bytes);
×
5468
      if (code != TSDB_CODE_SUCCESS) {
×
5469
        taosMemoryFree(buf);
×
5470
        break;
×
5471
      }
5472
      taosMemoryFree(buf);
×
5473
      break;
×
5474
    }
5475
    case TSDB_DATA_TYPE_DECIMAL:
×
5476
      break;
×
5477
    case TSDB_DATA_TYPE_BLOB: {
×
5478
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
×
5479
      if (NULL == pNode->datum.p) {
×
5480
        code = terrno;
×
5481
        break;
×
5482
      }
5483
      blobDataSetLen(pNode->datum.p, pNode->node.resType.bytes - BLOBSTR_HEADER_SIZE);
×
5484
      code = tjsonGetStringValue(pJson, jkValueDatum, blobDataVal(pNode->datum.p));
×
5485
      break;
×
5486
    }
5487
      // todo
5488
    default:
×
5489
      break;
×
5490
  }
5491

5492
  return code;
5,432,671✔
5493
}
5494

5495
static int32_t jsonToValueNode(const SJson* pJson, void* pObj) {
6,006,156✔
5496
  SValueNode* pNode = (SValueNode*)pObj;
6,006,156✔
5497

5498
  int32_t code = jsonToExprNode(pJson, pObj);
6,006,156✔
5499
  int32_t literalSize = 0;
6,006,316✔
5500
  if (TSDB_CODE_SUCCESS == code) {
6,006,316✔
5501
    code = tjsonGetIntValue(pJson, jkValueLiteralSize, &literalSize);
6,006,316✔
5502
  }
5503
  if (TSDB_CODE_SUCCESS == code && literalSize > 0) {
6,006,316✔
5504
    code = tjsonDupStringValue(pJson, jkValueLiteral, &pNode->literal);
1,275,362✔
5505
  }
5506
  if (TSDB_CODE_SUCCESS == code) {
6,006,316✔
5507
    code = tjsonGetIntValue(pJson, jkValueFlag, &pNode->flag);
6,006,316✔
5508
  }
5509
  if (TSDB_CODE_SUCCESS == code) {
6,006,316✔
5510
    code = tjsonGetBoolValue(pJson, jkValueTranslate, &pNode->translate);
6,006,316✔
5511
  }
5512
  if (TSDB_CODE_SUCCESS == code) {
6,006,316✔
5513
    code = tjsonGetBoolValue(pJson, jkValueNotReserved, &pNode->notReserved);
6,006,316✔
5514
  }
5515
  if (TSDB_CODE_SUCCESS == code) {
6,006,316✔
5516
    code = tjsonGetBoolValue(pJson, jkValueIsNull, &pNode->isNull);
6,006,316✔
5517
  }
5518
  if (TSDB_CODE_SUCCESS == code) {
6,006,316✔
5519
    code = tjsonGetTinyIntValue(pJson, jkValueUnit, &pNode->unit);
6,006,316✔
5520
  }
5521
  if (TSDB_CODE_SUCCESS == code && pNode->translate && !pNode->isNull) {
6,006,316✔
5522
    code = jsonToDatum(pJson, pNode);
5,432,671✔
5523
  }
5524

5525
  return code;
6,006,316✔
5526
}
5527

5528

5529

5530
static const char* jkRemoteValueValSet = "valSet";
5531
static const char* jkRemoteValueSubQIdx = "subQIdx";
5532

5533
static int32_t remoteValueToJson(const void* pObj, SJson* pJson) {
2,641✔
5534
  const SRemoteValueNode* pNode = (const SRemoteValueNode*)pObj;
2,641✔
5535

5536
  int32_t code = valueNodeToJson(pObj, pJson);
2,641✔
5537
/*
5538
  if (TSDB_CODE_SUCCESS == code) {
5539
    code = tjsonAddBoolToObject(pJson, jkRemoteValueValSet, pNode->valSet);
5540
  }
5541
*/
5542
  if (TSDB_CODE_SUCCESS == code) {
2,641✔
5543
    code = tjsonAddIntegerToObject(pJson, jkRemoteValueSubQIdx, pNode->subQIdx);
2,641✔
5544
  }
5545

5546
  return code;
2,641✔
5547
}
5548

5549

5550
static int32_t jsonToRemoteValue(const SJson* pJson, void* pObj) {
×
5551
  SRemoteValueNode* pNode = (SRemoteValueNode*)pObj;
×
5552

5553
  int32_t code = jsonToValueNode(pJson, pObj);
×
5554
/*
5555
  if (TSDB_CODE_SUCCESS == code) {
5556
    code = tjsonGetBoolValue(pJson, jkRemoteValueValSet, &pNode->valSet);
5557
  }
5558
*/
5559
  if (TSDB_CODE_SUCCESS == code) {
×
5560
    code = tjsonGetIntValue(pJson, jkRemoteValueSubQIdx, &pNode->subQIdx);
×
5561
  }
5562

5563
  return code;
×
5564
}
5565

5566

5567

5568
static const char* jkOperatorType = "OpType";
5569
static const char* jkOperatorLeft = "Left";
5570
static const char* jkOperatorRight = "Right";
5571

5572
static int32_t operatorNodeToJson(const void* pObj, SJson* pJson) {
235,285,330✔
5573
  const SOperatorNode* pNode = (const SOperatorNode*)pObj;
235,285,330✔
5574

5575
  int32_t code = exprNodeToJson(pObj, pJson);
235,285,330✔
5576
  if (TSDB_CODE_SUCCESS == code) {
235,285,330✔
5577
    code = tjsonAddIntegerToObject(pJson, jkOperatorType, pNode->opType);
235,285,330✔
5578
  }
5579
  if (TSDB_CODE_SUCCESS == code) {
235,285,807✔
5580
    code = tjsonAddObject(pJson, jkOperatorLeft, nodeToJson, pNode->pLeft);
235,285,807✔
5581
  }
5582
  if (TSDB_CODE_SUCCESS == code) {
235,286,284✔
5583
    code = tjsonAddObject(pJson, jkOperatorRight, nodeToJson, pNode->pRight);
235,286,284✔
5584
  }
5585

5586
  return code;
235,286,284✔
5587
}
5588

5589
static int32_t jsonToOperatorNode(const SJson* pJson, void* pObj) {
1,904,471✔
5590
  SOperatorNode* pNode = (SOperatorNode*)pObj;
1,904,471✔
5591

5592
  int32_t code = jsonToExprNode(pJson, pObj);
1,904,471✔
5593
  if (TSDB_CODE_SUCCESS == code) {
1,904,937✔
5594
    tjsonGetNumberValue(pJson, jkOperatorType, pNode->opType, code);
1,904,937✔
5595
  }
5596
  if (TSDB_CODE_SUCCESS == code) {
1,904,777✔
5597
    code = jsonToNodeObject(pJson, jkOperatorLeft, &pNode->pLeft);
1,904,777✔
5598
  }
5599
  if (TSDB_CODE_SUCCESS == code) {
1,904,639✔
5600
    code = jsonToNodeObject(pJson, jkOperatorRight, &pNode->pRight);
1,904,639✔
5601
  }
5602

5603
  return code;
1,904,937✔
5604
}
5605

5606
static const char* jkLogicCondType = "CondType";
5607
static const char* jkLogicCondParameters = "Parameters";
5608

5609
static int32_t logicConditionNodeToJson(const void* pObj, SJson* pJson) {
57,639,980✔
5610
  const SLogicConditionNode* pNode = (const SLogicConditionNode*)pObj;
57,639,980✔
5611

5612
  int32_t code = exprNodeToJson(pObj, pJson);
57,639,980✔
5613
  if (TSDB_CODE_SUCCESS == code) {
57,639,980✔
5614
    code = tjsonAddIntegerToObject(pJson, jkLogicCondType, pNode->condType);
57,639,980✔
5615
  }
5616
  if (TSDB_CODE_SUCCESS == code) {
57,639,980✔
5617
    code = nodeListToJson(pJson, jkLogicCondParameters, pNode->pParameterList);
57,639,980✔
5618
  }
5619

5620
  return code;
57,639,980✔
5621
}
5622

5623
static int32_t jsonToLogicConditionNode(const SJson* pJson, void* pObj) {
140,997✔
5624
  SLogicConditionNode* pNode = (SLogicConditionNode*)pObj;
140,997✔
5625

5626
  int32_t code = jsonToExprNode(pJson, pObj);
140,997✔
5627
  if (TSDB_CODE_SUCCESS == code) {
140,997✔
5628
    tjsonGetNumberValue(pJson, jkLogicCondType, pNode->condType, code);
140,997✔
5629
  }
5630
  if (TSDB_CODE_SUCCESS == code) {
140,997✔
5631
    code = jsonToNodeList(pJson, jkLogicCondParameters, &pNode->pParameterList);
140,997✔
5632
  }
5633

5634
  return code;
140,997✔
5635
}
5636

5637
static const char* jkFunctionName = "Name";
5638
static const char* jkFunctionId = "Id";
5639
static const char* jkFunctionType = "Type";
5640
static const char* jkFunctionParameter = "Parameters";
5641
static const char* jkFunctionUdfBufSize = "UdfBufSize";
5642
static const char* jkFunctionHasPk = "HasPk";
5643
static const char* jkFunctionPkBytes = "PkBytes";
5644
static const char* jkFunctionIsMergeFunc = "IsMergeFunc";
5645
static const char* jkFunctionMergeFuncOf = "MergeFuncOf";
5646
static const char* jkFunctionTrimType = "TrimType";
5647
static const char* jkFunctionSrcFuncInputDT = "SrcFuncInputDataType";
5648

5649
static int32_t functionNodeToJson(const void* pObj, SJson* pJson) {
530,103,468✔
5650
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
530,103,468✔
5651

5652
  int32_t code = exprNodeToJson(pObj, pJson);
530,103,468✔
5653
  if (TSDB_CODE_SUCCESS == code) {
530,103,835✔
5654
    code = tjsonAddStringToObject(pJson, jkFunctionName, pNode->functionName);
530,103,835✔
5655
  }
5656
  if (TSDB_CODE_SUCCESS == code) {
530,103,835✔
5657
    code = tjsonAddIntegerToObject(pJson, jkFunctionId, pNode->funcId);
530,103,835✔
5658
  }
5659
  if (TSDB_CODE_SUCCESS == code) {
530,103,835✔
5660
    code = tjsonAddIntegerToObject(pJson, jkFunctionType, pNode->funcType);
530,103,835✔
5661
  }
5662
  if (TSDB_CODE_SUCCESS == code) {
530,104,202✔
5663
    code = nodeListToJson(pJson, jkFunctionParameter, pNode->pParameterList);
530,104,202✔
5664
  }
5665
  if (TSDB_CODE_SUCCESS == code) {
530,103,715✔
5666
    code = tjsonAddIntegerToObject(pJson, jkFunctionUdfBufSize, pNode->udfBufSize);
530,103,715✔
5667
  }
5668
  if (TSDB_CODE_SUCCESS == code) {
530,103,823✔
5669
    code = tjsonAddBoolToObject(pJson, jkFunctionHasPk, pNode->hasPk);
530,103,823✔
5670
  }
5671
  if (TSDB_CODE_SUCCESS == code) {
530,104,202✔
5672
    code = tjsonAddIntegerToObject(pJson, jkFunctionPkBytes, pNode->pkBytes);
530,104,202✔
5673
  }
5674
  if (TSDB_CODE_SUCCESS == code) {
530,103,823✔
5675
    code = tjsonAddBoolToObject(pJson, jkFunctionIsMergeFunc, pNode->hasOriginalFunc);
530,103,823✔
5676
  }
5677
  if (TSDB_CODE_SUCCESS == code) {
530,103,823✔
5678
    code = tjsonAddIntegerToObject(pJson, jkFunctionMergeFuncOf, pNode->originalFuncId);
530,103,823✔
5679
  }
5680
  if (TSDB_CODE_SUCCESS == code) {
530,103,444✔
5681
    code = tjsonAddIntegerToObject(pJson, jkFunctionTrimType, pNode->trimType);
530,103,444✔
5682
  }
5683
  if (TSDB_CODE_SUCCESS == code) {
530,103,348✔
5684
    code = tjsonAddObject(pJson, jkFunctionSrcFuncInputDT, dataTypeToJson, &pNode->srcFuncInputType);
530,103,348✔
5685
  }
5686
  return code;
530,103,336✔
5687
}
5688

5689
static int32_t jsonToFunctionNode(const SJson* pJson, void* pObj) {
6,373,693✔
5690
  SFunctionNode* pNode = (SFunctionNode*)pObj;
6,373,693✔
5691

5692
  int32_t code = jsonToExprNode(pJson, pObj);
6,373,693✔
5693
  if (TSDB_CODE_SUCCESS == code) {
6,373,693✔
5694
    code = tjsonGetStringValue(pJson, jkFunctionName, pNode->functionName);
6,373,693✔
5695
  }
5696
  if (TSDB_CODE_SUCCESS == code) {
6,373,693✔
5697
    code = tjsonGetIntValue(pJson, jkFunctionId, &pNode->funcId);
6,373,693✔
5698
  }
5699
  if (TSDB_CODE_SUCCESS == code) {
6,373,662✔
5700
    code = tjsonGetIntValue(pJson, jkFunctionType, &pNode->funcType);
6,373,662✔
5701
  }
5702
  if (TSDB_CODE_SUCCESS == code) {
6,373,693✔
5703
    code = jsonToNodeList(pJson, jkFunctionParameter, &pNode->pParameterList);
6,373,693✔
5704
  }
5705
  if (TSDB_CODE_SUCCESS == code) {
6,373,533✔
5706
    code = tjsonGetIntValue(pJson, jkFunctionUdfBufSize, &pNode->udfBufSize);
6,373,533✔
5707
  }
5708
  if (TSDB_CODE_SUCCESS == code) {
6,373,693✔
5709
    code = tjsonGetBoolValue(pJson, jkFunctionHasPk, &pNode->hasPk);
6,373,693✔
5710
  }
5711
  if (TSDB_CODE_SUCCESS == code) {
6,373,693✔
5712
    code = tjsonGetIntValue(pJson, jkFunctionPkBytes, &pNode->pkBytes);
6,373,693✔
5713
  }
5714
  if (TSDB_CODE_SUCCESS == code) {
6,373,693✔
5715
    code = tjsonGetBoolValue(pJson, jkFunctionIsMergeFunc, &pNode->hasOriginalFunc);
6,373,693✔
5716
  }
5717
  if (TSDB_CODE_SUCCESS == code) {
6,373,693✔
5718
    code = tjsonGetIntValue(pJson, jkFunctionMergeFuncOf, &pNode->originalFuncId);
6,373,693✔
5719
  }
5720
  if (TSDB_CODE_SUCCESS == code) {
6,373,693✔
5721
    tjsonGetNumberValue(pJson, jkFunctionTrimType, pNode->trimType, code);
6,373,693✔
5722
  }
5723
  if (TSDB_CODE_SUCCESS == code) {
6,373,693✔
5724
    code = tjsonToObject(pJson, jkFunctionSrcFuncInputDT, jsonToDataType, &pNode->srcFuncInputType);
6,373,693✔
5725
  }
5726

5727
  return code;
6,373,333✔
5728
}
5729

5730
static const char* jkTableDbName = "DbName";
5731
static const char* jkTableTableName = "tableName";
5732
static const char* jkTableTableAlias = "tableAlias";
5733

5734
static int32_t tableNodeToJson(const void* pObj, SJson* pJson) {
100,361✔
5735
  const STableNode* pNode = (const STableNode*)pObj;
100,361✔
5736

5737
  int32_t code = exprNodeToJson(pObj, pJson);
100,361✔
5738
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
5739
    code = tjsonAddStringToObject(pJson, jkTableDbName, pNode->dbName);
100,361✔
5740
  }
5741
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
5742
    code = tjsonAddStringToObject(pJson, jkTableTableName, pNode->tableName);
100,361✔
5743
  }
5744
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
5745
    code = tjsonAddStringToObject(pJson, jkTableTableAlias, pNode->tableAlias);
100,361✔
5746
  }
5747

5748
  return code;
100,361✔
5749
}
5750

5751
static int32_t jsonToTableNode(const SJson* pJson, void* pObj) {
90,544✔
5752
  STableNode* pNode = (STableNode*)pObj;
90,544✔
5753

5754
  int32_t code = jsonToExprNode(pJson, pObj);
90,544✔
5755
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
5756
    code = tjsonGetStringValue(pJson, jkTableDbName, pNode->dbName);
90,544✔
5757
  }
5758
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
5759
    code = tjsonGetStringValue(pJson, jkTableTableName, pNode->tableName);
90,544✔
5760
  }
5761
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
5762
    code = tjsonGetStringValue(pJson, jkTableTableAlias, pNode->tableAlias);
90,544✔
5763
  }
5764

5765
  return code;
90,544✔
5766
}
5767

5768
static const char* jkTableIndexInfoIntervalUnit = "IntervalUnit";
5769
static const char* jkTableIndexInfoSlidingUnit = "SlidingUnit";
5770
static const char* jkTableIndexInfoInterval = "Interval";
5771
static const char* jkTableIndexInfoOffset = "Offset";
5772
static const char* jkTableIndexInfoSliding = "Sliding";
5773
static const char* jkTableIndexInfoDstTbUid = "DstTbUid";
5774
static const char* jkTableIndexInfoDstVgId = "DstVgId";
5775
static const char* jkTableIndexInfoEpSet = "EpSet";
5776
static const char* jkTableIndexInfoExpr = "Expr";
5777

5778
static int32_t tableIndexInfoToJson(const void* pObj, SJson* pJson) {
×
5779
  const STableIndexInfo* pNode = (const STableIndexInfo*)pObj;
×
5780

5781
  int32_t code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoIntervalUnit, pNode->intervalUnit);
×
5782
  if (TSDB_CODE_SUCCESS == code) {
×
5783
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoSlidingUnit, pNode->slidingUnit);
×
5784
  }
5785
  if (TSDB_CODE_SUCCESS == code) {
×
5786
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoInterval, pNode->interval);
×
5787
  }
5788
  if (TSDB_CODE_SUCCESS == code) {
×
5789
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoOffset, pNode->offset);
×
5790
  }
5791
  if (TSDB_CODE_SUCCESS == code) {
×
5792
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoSliding, pNode->sliding);
×
5793
  }
5794
  if (TSDB_CODE_SUCCESS == code) {
×
5795
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoDstTbUid, pNode->dstTbUid);
×
5796
  }
5797
  if (TSDB_CODE_SUCCESS == code) {
×
5798
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoDstVgId, pNode->dstVgId);
×
5799
  }
5800
  if (TSDB_CODE_SUCCESS == code) {
×
5801
    code = tjsonAddObject(pJson, jkTableIndexInfoEpSet, epSetToJson, &pNode->epSet);
×
5802
  }
5803
  if (TSDB_CODE_SUCCESS == code) {
×
5804
    code = tjsonAddStringToObject(pJson, jkTableIndexInfoExpr, pNode->expr);
×
5805
  }
5806

5807
  return code;
×
5808
}
5809

5810
static int32_t jsonToTableIndexInfo(const SJson* pJson, void* pObj) {
×
5811
  STableIndexInfo* pNode = (STableIndexInfo*)pObj;
×
5812

5813
  int32_t code = tjsonGetTinyIntValue(pJson, jkTableIndexInfoIntervalUnit, &pNode->intervalUnit);
×
5814
  if (TSDB_CODE_SUCCESS == code) {
×
5815
    code = tjsonGetTinyIntValue(pJson, jkTableIndexInfoSlidingUnit, &pNode->slidingUnit);
×
5816
  }
5817
  if (TSDB_CODE_SUCCESS == code) {
×
5818
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoInterval, &pNode->interval);
×
5819
  }
5820
  if (TSDB_CODE_SUCCESS == code) {
×
5821
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoOffset, &pNode->offset);
×
5822
  }
5823
  if (TSDB_CODE_SUCCESS == code) {
×
5824
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoSliding, &pNode->sliding);
×
5825
  }
5826
  if (TSDB_CODE_SUCCESS == code) {
×
5827
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoDstTbUid, &pNode->dstTbUid);
×
5828
  }
5829
  if (TSDB_CODE_SUCCESS == code) {
×
5830
    code = tjsonGetIntValue(pJson, jkTableIndexInfoDstVgId, &pNode->dstVgId);
×
5831
  }
5832
  if (TSDB_CODE_SUCCESS == code) {
×
5833
    code = tjsonToObject(pJson, jkTableIndexInfoEpSet, jsonToEpSet, &pNode->epSet);
×
5834
  }
5835
  if (TSDB_CODE_SUCCESS == code) {
×
5836
    code = tjsonDupStringValue(pJson, jkTableIndexInfoExpr, &pNode->expr);
×
5837
  }
5838

5839
  return code;
×
5840
}
5841

5842
static const char* jkRealTableMetaSize = "MetaSize";
5843
static const char* jkRealTableMeta = "Meta";
5844
static const char* jkRealTableVgroupsInfoSize = "VgroupsInfoSize";
5845
static const char* jkRealTableVgroupsInfo = "VgroupsInfo";
5846
static const char* jkRealTableSmaIndexes = "SmaIndexes";
5847

5848
static int32_t realTableNodeToJson(const void* pObj, SJson* pJson) {
100,361✔
5849
  const SRealTableNode* pNode = (const SRealTableNode*)pObj;
100,361✔
5850

5851
  int32_t code = tableNodeToJson(pObj, pJson);
100,361✔
5852
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
5853
    code = tjsonAddIntegerToObject(pJson, jkRealTableMetaSize, TABLE_META_SIZE(pNode->pMeta));
100,361✔
5854
  }
5855
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
5856
    code = tjsonAddObject(pJson, jkRealTableMeta, tableMetaToJson, pNode->pMeta);
100,361✔
5857
  }
5858
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
5859
    code = tjsonAddIntegerToObject(pJson, jkRealTableVgroupsInfoSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
100,361✔
5860
  }
5861
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
5862
    code = tjsonAddObject(pJson, jkRealTableVgroupsInfo, vgroupsInfoToJson, pNode->pVgroupList);
100,361✔
5863
  }
5864
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
5865
    code = tjsonAddTArray(pJson, jkRealTableSmaIndexes, tableIndexInfoToJson, pNode->pSmaIndexes);
100,361✔
5866
  }
5867

5868
  return code;
100,361✔
5869
}
5870

5871
static int32_t jsonToRealTableNode(const SJson* pJson, void* pObj) {
90,544✔
5872
  SRealTableNode* pNode = (SRealTableNode*)pObj;
90,544✔
5873

5874
  int32_t objSize = 0;
90,544✔
5875
  int32_t code = jsonToTableNode(pJson, pObj);
90,544✔
5876
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
5877
    code = tjsonGetIntValue(pJson, jkRealTableMetaSize, &objSize);
90,544✔
5878
  }
5879
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
5880
    code = tjsonMakeObject(pJson, jkRealTableMeta, jsonToTableMeta, (void**)&pNode->pMeta, objSize);
90,544✔
5881
  }
5882
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
5883
    code = tjsonGetIntValue(pJson, jkRealTableVgroupsInfoSize, &objSize);
90,544✔
5884
  }
5885
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
5886
    code = tjsonMakeObject(pJson, jkRealTableVgroupsInfo, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
90,544✔
5887
  }
5888
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
5889
    code =
5890
        tjsonToTArray(pJson, jkRealTableSmaIndexes, jsonToTableIndexInfo, &pNode->pSmaIndexes, sizeof(STableIndexInfo));
90,544✔
5891
  }
5892

5893
  return code;
90,544✔
5894
}
5895

5896
static const char* jkTempTableSubquery = "Subquery";
5897

5898
static int32_t tempTableNodeToJson(const void* pObj, SJson* pJson) {
×
5899
  const STempTableNode* pNode = (const STempTableNode*)pObj;
×
5900

5901
  int32_t code = tableNodeToJson(pObj, pJson);
×
5902
  if (TSDB_CODE_SUCCESS == code) {
×
5903
    code = tjsonAddObject(pJson, jkTempTableSubquery, nodeToJson, pNode->pSubquery);
×
5904
  }
5905

5906
  return code;
×
5907
}
5908

5909
static int32_t jsonToTempTableNode(const SJson* pJson, void* pObj) {
×
5910
  STempTableNode* pNode = (STempTableNode*)pObj;
×
5911

5912
  int32_t code = jsonToTableNode(pJson, pObj);
×
5913
  if (TSDB_CODE_SUCCESS == code) {
×
5914
    code = jsonToNodeObject(pJson, jkTempTableSubquery, &pNode->pSubquery);
×
5915
  }
5916

5917
  return code;
×
5918
}
5919

5920
static const char* jkJoinTableJoinType = "JoinType";
5921
static const char* jkJoinTableSubType = "SubType";
5922
static const char* jkJoinTableLeft = "Left";
5923
static const char* jkJoinTableRight = "Right";
5924
static const char* jkJoinTableOnCond = "OnCond";
5925

5926
static int32_t joinTableNodeToJson(const void* pObj, SJson* pJson) {
×
5927
  const SJoinTableNode* pNode = (const SJoinTableNode*)pObj;
×
5928

5929
  int32_t code = tableNodeToJson(pObj, pJson);
×
5930
  if (TSDB_CODE_SUCCESS == code) {
×
5931
    code = tjsonAddIntegerToObject(pJson, jkJoinTableJoinType, pNode->joinType);
×
5932
  }
5933
  if (TSDB_CODE_SUCCESS == code) {
×
5934
    code = tjsonAddIntegerToObject(pJson, jkJoinTableSubType, pNode->subType);
×
5935
  }
5936
  if (TSDB_CODE_SUCCESS == code) {
×
5937
    code = tjsonAddObject(pJson, jkJoinTableLeft, nodeToJson, pNode->pLeft);
×
5938
  }
5939
  if (TSDB_CODE_SUCCESS == code) {
×
5940
    code = tjsonAddObject(pJson, jkJoinTableRight, nodeToJson, pNode->pRight);
×
5941
  }
5942
  if (TSDB_CODE_SUCCESS == code) {
×
5943
    code = tjsonAddObject(pJson, jkJoinTableOnCond, nodeToJson, pNode->pOnCond);
×
5944
  }
5945

5946
  return code;
×
5947
}
5948

5949
static int32_t jsonToJoinTableNode(const SJson* pJson, void* pObj) {
×
5950
  SJoinTableNode* pNode = (SJoinTableNode*)pObj;
×
5951

5952
  int32_t code = jsonToTableNode(pJson, pObj);
×
5953
  if (TSDB_CODE_SUCCESS == code) {
×
5954
    tjsonGetNumberValue(pJson, jkJoinTableJoinType, pNode->joinType, code);
×
5955
  }
5956
  if (TSDB_CODE_SUCCESS == code) {
×
5957
    tjsonGetNumberValue(pJson, jkJoinTableSubType, pNode->subType, code);
×
5958
  }
5959
  if (TSDB_CODE_SUCCESS == code) {
×
5960
    code = jsonToNodeObject(pJson, jkJoinTableLeft, &pNode->pLeft);
×
5961
  }
5962
  if (TSDB_CODE_SUCCESS == code) {
×
5963
    code = jsonToNodeObject(pJson, jkJoinTableRight, &pNode->pRight);
×
5964
  }
5965
  if (TSDB_CODE_SUCCESS == code) {
×
5966
    code = jsonToNodeObject(pJson, jkJoinTableOnCond, &pNode->pOnCond);
×
5967
  }
5968

5969
  return code;
×
5970
}
5971

5972
static const char* jkVirtualTableMetaSize = "MetaSize";
5973
static const char* jkVirtuaTableMeta = "Meta";
5974
static const char* jkVirtuaTableVgroupsInfoSize = "VgroupsInfoSize";
5975
static const char* jkVirtuaTableVgroupsInfo = "VgroupsInfo";
5976
static const char* jkVirtuaTableRefTables = "RefTables";
5977

5978
static int32_t virtualTableNodeToJson(const void* pObj, SJson* pJson) {
×
5979
  const SVirtualTableNode* pNode = (const SVirtualTableNode*)pObj;
×
5980

5981
  int32_t code = tableNodeToJson(pObj, pJson);
×
5982
  if (TSDB_CODE_SUCCESS == code) {
×
5983
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableMetaSize, TABLE_META_SIZE(pNode->pMeta));
×
5984
  }
5985
  if (TSDB_CODE_SUCCESS == code) {
×
5986
    code = tjsonAddObject(pJson, jkVirtuaTableMeta, tableMetaToJson, pNode->pMeta);
×
5987
  }
5988
  if (TSDB_CODE_SUCCESS == code) {
×
5989
    code = tjsonAddIntegerToObject(pJson, jkVirtuaTableVgroupsInfoSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
×
5990
  }
5991
  if (TSDB_CODE_SUCCESS == code) {
×
5992
    code = tjsonAddObject(pJson, jkVirtuaTableVgroupsInfo, vgroupsInfoToJson, pNode->pVgroupList);
×
5993
  }
5994
  if (TSDB_CODE_SUCCESS == code) {
×
5995
    code = nodeListToJson(pJson, jkVirtuaTableRefTables, pNode->refTables);
×
5996
  }
5997

5998

5999
  return code;
×
6000
}
6001

6002
static int32_t jsonToVirtualTableNode(const SJson* pJson, void* pObj) {
×
6003
  SVirtualTableNode* pNode = (SVirtualTableNode*)pObj;
×
6004

6005
  int32_t objSize = 0;
×
6006
  int32_t code = jsonToTableNode(pJson, pObj);
×
6007
  if (TSDB_CODE_SUCCESS == code) {
×
6008
    code = tjsonGetIntValue(pJson, jkVirtualTableMetaSize, &objSize);
×
6009
  }
6010
  if (TSDB_CODE_SUCCESS == code) {
×
6011
    code = tjsonMakeObject(pJson, jkVirtuaTableMeta, jsonToTableMeta, (void**)&pNode->pMeta, objSize);
×
6012
  }
6013
  if (TSDB_CODE_SUCCESS == code) {
×
6014
    code = tjsonGetIntValue(pJson, jkVirtuaTableVgroupsInfoSize, &objSize);
×
6015
  }
6016
  if (TSDB_CODE_SUCCESS == code) {
×
6017
    code = tjsonMakeObject(pJson, jkVirtuaTableVgroupsInfo, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
×
6018
  }
6019
  if (TSDB_CODE_SUCCESS == code) {
×
6020
    code = jsonToNodeList(pJson, jkVirtuaTableRefTables, &pNode->refTables);
×
6021
  }
6022

6023
  return code;
×
6024
}
6025

6026
static const char* jkPlaceHolderTableMetaSize = "MetaSize";
6027
static const char* jkPlaceHolderTableMeta = "Meta";
6028
static const char* jkPlaceHolderTableVgroupsInfoSize = "VgroupsInfoSize";
6029
static const char* jkPlaceHolderTableVgroupsInfo = "VgroupsInfo";
6030
static const char* jkPlaceHolderTablePlaceholderType = "PlaceHolderType";
6031

6032
static int32_t placeHolderTableNodeToJson(const void* pObj, SJson* pJson) {
×
6033
  const SPlaceHolderTableNode* pNode = (const SPlaceHolderTableNode*)pObj;
×
6034

6035
  int32_t code = tableNodeToJson(pObj, pJson);
×
6036
  if (TSDB_CODE_SUCCESS == code) {
×
6037
    code = tjsonAddIntegerToObject(pJson, jkPlaceHolderTableMetaSize, TABLE_META_SIZE(pNode->pMeta));
×
6038
  }
6039
  if (TSDB_CODE_SUCCESS == code) {
×
6040
    code = tjsonAddObject(pJson, jkPlaceHolderTableMeta, tableMetaToJson, pNode->pMeta);
×
6041
  }
6042
  if (TSDB_CODE_SUCCESS == code) {
×
6043
    code = tjsonAddIntegerToObject(pJson, jkPlaceHolderTableVgroupsInfoSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
×
6044
  }
6045
  if (TSDB_CODE_SUCCESS == code) {
×
6046
    code = tjsonAddObject(pJson, jkPlaceHolderTableVgroupsInfo, vgroupsInfoToJson, pNode->pVgroupList);
×
6047
  }
6048
  if (TSDB_CODE_SUCCESS == code) {
×
6049
    code = tjsonAddIntegerToObject(pJson, jkPlaceHolderTablePlaceholderType, pNode->placeholderType);
×
6050
  }
6051
  return code;
×
6052
}
6053

6054
static int32_t jsonToPlaceHolderTableNode(const SJson* pJson, void* pObj) {
×
6055
  SPlaceHolderTableNode* pNode = (SPlaceHolderTableNode*)pObj;
×
6056
  int32_t                code = jsonToTableNode(pJson, pObj);
×
6057
  int32_t                objSize = 0;
×
6058
  if (TSDB_CODE_SUCCESS == code) {
×
6059
    code = tjsonGetIntValue(pJson, jkPlaceHolderTableMetaSize, &objSize);
×
6060
  }
6061
  if (TSDB_CODE_SUCCESS == code) {
×
6062
    code = tjsonMakeObject(pJson, jkPlaceHolderTableMeta, jsonToTableMeta, (void**)&pNode->pMeta, objSize);
×
6063
  }
6064
  if (TSDB_CODE_SUCCESS == code) {
×
6065
    code = tjsonGetIntValue(pJson, jkPlaceHolderTableVgroupsInfoSize, &objSize);
×
6066
  }
6067
  if (TSDB_CODE_SUCCESS == code) {
×
6068
    code = tjsonMakeObject(pJson, jkPlaceHolderTableVgroupsInfo, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
×
6069
  }
6070
  if (TSDB_CODE_SUCCESS == code) {
×
6071
    tjsonGetNumberValue(pJson, jkPlaceHolderTablePlaceholderType, pNode->placeholderType, code);
×
6072
  }
6073
  return code;
×
6074
}
6075

6076

6077
static const char* jkSlidingWindowOffset = "Offset";
6078
static const char* jkSlidingWindowSlidingVal = "SlidingVal";
6079

6080
static int32_t slidingWindowNodeToJson(const void* pObj, SJson* pJson) {
×
6081
  const SSlidingWindowNode* pNode = (const SSlidingWindowNode*)pObj;
×
6082
  int32_t                   code = tjsonAddObject(pJson, jkSlidingWindowOffset, nodeToJson, pNode->pOffset);
×
6083
  if (TSDB_CODE_SUCCESS == code) {
×
6084
    code = tjsonAddObject(pJson, jkSlidingWindowSlidingVal, nodeToJson, pNode->pSlidingVal);
×
6085
  }
6086
  return code;
×
6087
}
6088

6089
static int32_t jsonToSlidingWindowNode(const SJson* pJson, void* pObj) {
×
6090
  SSlidingWindowNode* pNode = (SSlidingWindowNode*)pObj;
×
6091
  int32_t code = jsonToNodeObject(pJson, jkSlidingWindowOffset, (SNode**)&pNode->pOffset);
×
6092
  if (TSDB_CODE_SUCCESS == code) {
×
6093
    code = jsonToNodeObject(pJson, jkSlidingWindowSlidingVal, (SNode**)&pNode->pSlidingVal);
×
6094
  }
6095

6096
  return code;
×
6097
}
6098

6099
static const char* jkPeriodWindowOffset = "Offset";
6100
static const char* jkPeriodWindowPeriod = "Period";
6101

6102
static int32_t periodWindowNodeToJson(const void* pObj, SJson* pJson) {
×
6103
  const SPeriodWindowNode* pNode = (const SPeriodWindowNode*)pObj;
×
6104
  int32_t                   code = tjsonAddObject(pJson, jkPeriodWindowPeriod, nodeToJson, pNode->pPeroid);
×
6105
  if (TSDB_CODE_SUCCESS == code) {
×
6106
    code = tjsonAddObject(pJson, jkPeriodWindowOffset, nodeToJson, pNode->pOffset);
×
6107
  }
6108
  return code;
×
6109
}
6110

6111
static int32_t jsonToPeriodWindowNode(const SJson* pJson, void* pObj) {
×
6112
  SPeriodWindowNode* pNode = (SPeriodWindowNode*)pObj;
×
6113
  int32_t code = jsonToNodeObject(pJson, jkPeriodWindowPeriod, (SNode**)&pNode->pPeroid);
×
6114
  if (TSDB_CODE_SUCCESS == code) {
×
6115
    code = jsonToNodeObject(pJson, jkPeriodWindowOffset, (SNode**)&pNode->pOffset);
×
6116
  }
6117

6118
  return code;
×
6119
}
6120

6121
static const char* jkStreamTriggerTriggerWindow = "TriggerWindow";
6122
static const char* jkStreamTriggerTriggerTable = "TriggerTable";
6123
static const char* jkStreamTriggerOptions = "Options";
6124
static const char* jkStreamTriggerNotify = "Notify";
6125
static const char* jkStreamTriggerPartitionList= "PartitionList";
6126

6127
static int32_t streamTriggerNodeToJson(const void* pObj, SJson* pJson) {
×
6128
  const SStreamTriggerNode* pNode = (const SStreamTriggerNode*)pObj;
×
6129
  int32_t                   code = tjsonAddObject(pJson, jkStreamTriggerTriggerWindow, nodeToJson, pNode->pTriggerWindow);
×
6130
  if (TSDB_CODE_SUCCESS == code) {
×
6131
    code = tjsonAddObject(pJson, jkStreamTriggerTriggerTable, nodeToJson, pNode->pTrigerTable);
×
6132
  }
6133
  if (TSDB_CODE_SUCCESS == code) {
×
6134
    code = tjsonAddObject(pJson, jkStreamTriggerOptions, nodeToJson, pNode->pOptions);
×
6135
  }
6136
  if (TSDB_CODE_SUCCESS == code) {
×
6137
    code = tjsonAddObject(pJson, jkStreamTriggerNotify, nodeToJson, pNode->pNotify);
×
6138
  }
6139
  if (TSDB_CODE_SUCCESS == code) {
×
6140
    code = nodeListToJson(pJson, jkStreamTriggerPartitionList, pNode->pPartitionList);
×
6141
  }
6142
  return code;
×
6143
}
6144

6145
static int32_t jsonToStreamTriggerNode(const SJson* pJson, void* pObj) {
×
6146
  SStreamTriggerNode* pNode = (SStreamTriggerNode*)pObj;
×
6147
  int32_t             code = jsonToNodeObject(pJson, jkStreamTriggerTriggerWindow, (SNode**)&pNode->pTriggerWindow);
×
6148
  if (TSDB_CODE_SUCCESS == code) {
×
6149
    code = jsonToNodeObject(pJson, jkStreamTriggerTriggerTable, (SNode**)&pNode->pTrigerTable);
×
6150
  }
6151
  if (TSDB_CODE_SUCCESS == code) {
×
6152
    code = jsonToNodeObject(pJson, jkStreamTriggerOptions, (SNode**)&pNode->pOptions);
×
6153
  }
6154
  if (TSDB_CODE_SUCCESS == code) {
×
6155
    code = jsonToNodeObject(pJson, jkStreamTriggerNotify, (SNode**)&pNode->pNotify);
×
6156
  }
6157
  if (TSDB_CODE_SUCCESS == code) {
×
6158
    code = jsonToNodeList(pJson, jkStreamTriggerPartitionList, &pNode->pPartitionList);
×
6159
  }
6160
  return code;
×
6161
}
6162

6163
static const char* jkStreamDbName = "DbName";
6164
static const char* jkStreamStreamName = "StreamName";
6165

6166
static int32_t streamNodeToJson(const void* pObj, SJson* pJson) {
×
6167
  const SStreamNode* pNode = (const SStreamNode*)pObj;
×
6168
  int32_t            code = exprNodeToJson(pObj, pJson);
×
6169
  if (TSDB_CODE_SUCCESS == code) {
×
6170
    code = tjsonAddStringToObject(pJson, jkStreamDbName, pNode->dbName);
×
6171
  }
6172
  if (TSDB_CODE_SUCCESS == code) {
×
6173
    code = tjsonAddStringToObject(pJson, jkStreamStreamName, pNode->streamName);
×
6174
  }
6175
  return code;
×
6176
}
6177

6178
static int32_t jsonToStreamNode(const SJson* pJson, void* pObj) {
×
6179
  SStreamNode* pNode = (SStreamNode*)pObj;
×
6180
  int32_t      code = jsonToExprNode(pJson, pObj);
×
6181
  if (TSDB_CODE_SUCCESS == code) {
×
6182
    code = tjsonGetStringValue(pJson, jkStreamDbName, pNode->dbName);
×
6183
  }
6184
  if (TSDB_CODE_SUCCESS == code) {
×
6185
    code = tjsonGetStringValue(pJson, jkStreamStreamName, pNode->streamName);
×
6186
  }
6187
  return code;
×
6188
}
6189

6190
static const char* jkStreamTagDefTagName = "TagName";
6191
static const char* jkStreamTagDefDataType = "DataType";
6192
static const char* jkStreamTagDefTagExpr = "TagExpr";
6193
static const char* jkStreamTagDefComment = "Comment";
6194

6195
static int32_t streamTagDefNodeToJson(const void* pObj, SJson* pJson) {
×
6196
  const SStreamTagDefNode* pNode = (const SStreamTagDefNode*)pObj;
×
6197
  int32_t                  code = tjsonAddStringToObject(pJson, jkStreamTagDefTagName, pNode->tagName);
×
6198
  if (TSDB_CODE_SUCCESS == code) {
×
6199
    code = tjsonAddObject(pJson, jkStreamTagDefDataType, dataTypeToJson, &pNode->dataType);
×
6200
  }
6201
  if (TSDB_CODE_SUCCESS == code) {
×
6202
    code = tjsonAddObject(pJson, jkStreamTagDefTagExpr, nodeToJson, pNode->pTagExpr);
×
6203
  }
6204
  return code;
×
6205
}
6206

6207
static int32_t jsonToStreamTagDefNode(const SJson* pJson, void* pObj) {
×
6208
  SStreamTagDefNode* pNode = (SStreamTagDefNode*)pObj;
×
6209
  int32_t            code = tjsonGetStringValue(pJson, jkStreamTagDefTagName, pNode->tagName);
×
6210
  if (TSDB_CODE_SUCCESS == code) {
×
6211
    code = tjsonToObject(pJson, jkStreamTagDefDataType, jsonToDataType, &pNode->dataType);
×
6212
  }
6213
  if (TSDB_CODE_SUCCESS == code) {
×
6214
    code = jsonToNodeObject(pJson, jkStreamTagDefTagExpr, &pNode->pTagExpr);
×
6215
  }
6216
  return code;
×
6217
}
6218

6219
static const char* jkExternalWindowProjectionList = "ProjectionList";
6220
static const char* jkExternalWindowAggFuncList = "AggFuncList";
6221
static const char* jkExternalWindowStartTime = "StartTime";
6222
static const char* jkExternalWindowEndTime = "EndTime";
6223

6224
static int32_t externalWindowNodeToJson(const void* pObj, SJson* pJson) {
×
6225
  const SExternalWindowNode* pNode = (const SExternalWindowNode*)pObj;
×
6226
  int32_t                    code = nodeListToJson(pJson, jkExternalWindowProjectionList, pNode->pProjectionList);
×
6227
  if (TSDB_CODE_SUCCESS == code) {
×
6228
    code = nodeListToJson(pJson, jkExternalWindowAggFuncList, pNode->pAggFuncList);
×
6229
  }
6230
  if (TSDB_CODE_SUCCESS == code) {
×
6231
    code = tjsonAddIntegerToObject(pJson, jkExternalWindowStartTime, pNode->timeRange.skey);
×
6232
  }
6233
  if (TSDB_CODE_SUCCESS == code) {
×
6234
    code = tjsonAddIntegerToObject(pJson, jkExternalWindowEndTime, pNode->timeRange.ekey);
×
6235
  }
6236
  return code;
×
6237
}
6238

6239
static int32_t jsonToExternalWindowNode(const SJson* pJson, void* pObj) {
×
6240
  SExternalWindowNode* pNode = (SExternalWindowNode*)pObj;
×
6241
  int32_t              code = jsonToNodeList(pJson, jkExternalWindowProjectionList, &pNode->pProjectionList);
×
6242
  if (TSDB_CODE_SUCCESS == code) {
×
6243
    code = jsonToNodeList(pJson, jkExternalWindowAggFuncList, &pNode->pAggFuncList);
×
6244
  }
6245
  if (TSDB_CODE_SUCCESS == code) {
×
6246
    code = tjsonGetBigIntValue(pJson, jkExternalWindowStartTime, &pNode->timeRange.skey);
×
6247
  }
6248
  if (TSDB_CODE_SUCCESS == code) {
×
6249
    code = tjsonGetBigIntValue(pJson, jkExternalWindowEndTime, &pNode->timeRange.ekey);
×
6250
  }
6251
  return code;
×
6252
}
6253

6254
static const char* jkGroupingSetType = "GroupingSetType";
6255
static const char* jkGroupingSetParameter = "Parameters";
6256

6257
static int32_t groupingSetNodeToJson(const void* pObj, SJson* pJson) {
×
6258
  const SGroupingSetNode* pNode = (const SGroupingSetNode*)pObj;
×
6259

6260
  int32_t code = tjsonAddIntegerToObject(pJson, jkGroupingSetType, pNode->groupingSetType);
×
6261
  if (TSDB_CODE_SUCCESS == code) {
×
6262
    code = nodeListToJson(pJson, jkGroupingSetParameter, pNode->pParameterList);
×
6263
  }
6264

6265
  return code;
×
6266
}
6267

6268
static int32_t jsonToGroupingSetNode(const SJson* pJson, void* pObj) {
×
6269
  SGroupingSetNode* pNode = (SGroupingSetNode*)pObj;
×
6270

6271
  int32_t code = TSDB_CODE_SUCCESS;
×
6272
  tjsonGetNumberValue(pJson, jkGroupingSetType, pNode->groupingSetType, code);
×
6273
  if (TSDB_CODE_SUCCESS == code) {
×
6274
    code = jsonToNodeList(pJson, jkGroupingSetParameter, &pNode->pParameterList);
×
6275
  }
6276

6277
  return code;
×
6278
}
6279

6280
static const char* jkOrderByExprExpr = "Expr";
6281
static const char* jkOrderByExprOrder = "Order";
6282
static const char* jkOrderByExprNullOrder = "NullOrder";
6283

6284
static int32_t orderByExprNodeToJson(const void* pObj, SJson* pJson) {
62,826,553✔
6285
  const SOrderByExprNode* pNode = (const SOrderByExprNode*)pObj;
62,826,553✔
6286

6287
  int32_t code = tjsonAddObject(pJson, jkOrderByExprExpr, nodeToJson, pNode->pExpr);
62,826,553✔
6288
  if (TSDB_CODE_SUCCESS == code) {
62,826,553✔
6289
    code = tjsonAddIntegerToObject(pJson, jkOrderByExprOrder, pNode->order);
62,826,553✔
6290
  }
6291
  if (TSDB_CODE_SUCCESS == code) {
62,826,553✔
6292
    code = tjsonAddIntegerToObject(pJson, jkOrderByExprNullOrder, pNode->nullOrder);
62,826,553✔
6293
  }
6294

6295
  return code;
62,826,553✔
6296
}
6297

6298
static int32_t jsonToOrderByExprNode(const SJson* pJson, void* pObj) {
132,742✔
6299
  SOrderByExprNode* pNode = (SOrderByExprNode*)pObj;
132,742✔
6300

6301
  int32_t code = jsonToNodeObject(pJson, jkOrderByExprExpr, &pNode->pExpr);
132,742✔
6302
  if (TSDB_CODE_SUCCESS == code) {
132,742✔
6303
    tjsonGetNumberValue(pJson, jkOrderByExprOrder, pNode->order, code);
132,742✔
6304
  }
6305
  if (TSDB_CODE_SUCCESS == code) {
132,742✔
6306
    tjsonGetNumberValue(pJson, jkOrderByExprNullOrder, pNode->nullOrder, code);
132,742✔
6307
  }
6308

6309
  return code;
132,742✔
6310
}
6311

6312
static const char* jkLimitLimit = "Limit";
6313
static const char* jkLimitOffset = "Offset";
6314

6315
static int32_t limitNodeToJson(const void* pObj, SJson* pJson) {
34,709,702✔
6316
  const SLimitNode* pNode = (const SLimitNode*)pObj;
34,709,702✔
6317

6318
  int32_t code = tjsonAddObject(pJson, jkLimitLimit, nodeToJson, pNode->limit);
34,709,702✔
6319
  if (TSDB_CODE_SUCCESS == code && pNode->offset) {
34,709,702✔
6320
    code = tjsonAddObject(pJson, jkLimitOffset, nodeToJson, pNode->offset);
12,541,275✔
6321
  }
6322

6323
  return code;
34,709,702✔
6324
}
6325

6326
static int32_t jsonToLimitNode(const SJson* pJson, void* pObj) {
×
6327
  SLimitNode* pNode = (SLimitNode*)pObj;
×
6328

6329
  int32_t code = jsonToNodeObject(pJson, jkLimitLimit, (SNode**)&pNode->limit);
×
6330
  if (TSDB_CODE_SUCCESS == code) {
×
6331
    code = jsonToNodeObject(pJson, jkLimitOffset, (SNode**)&pNode->offset);
×
6332
  }
6333

6334
  return code;
×
6335
}
6336

6337
static const char* jkStateWindowCol = "StateWindowCol";
6338
static const char* jkStateWindowExpr = "StateWindowExpr";
6339
static const char* jkStateWindowTrueForLimit = "TrueForLimit";
6340

6341
static int32_t stateWindowNodeToJson(const void* pObj, SJson* pJson) {
×
6342
  const SStateWindowNode* pNode = (const SStateWindowNode*)pObj;
×
6343
  int32_t                 code = tjsonAddObject(pJson, jkStateWindowCol, nodeToJson, pNode->pCol);
×
6344
  if (TSDB_CODE_SUCCESS == code) {
×
6345
    code = tjsonAddObject(pJson, jkStateWindowExpr, nodeToJson, pNode->pExpr);
×
6346
  }
6347
  if (TSDB_CODE_SUCCESS == code) {
×
6348
    code = tjsonAddObject(pJson, jkStateWindowTrueForLimit, nodeToJson, pNode->pTrueForLimit);
×
6349
  }
6350
  return code;
×
6351
}
6352

6353
static int32_t jsonToStateWindowNode(const SJson* pJson, void* pObj) {
×
6354
  SStateWindowNode* pNode = (SStateWindowNode*)pObj;
×
6355

6356
  int32_t code = jsonToNodeObject(pJson, jkStateWindowCol, (SNode**)&pNode->pCol);
×
6357
  if (TSDB_CODE_SUCCESS == code) {
×
6358
    code = jsonToNodeObject(pJson, jkStateWindowExpr, (SNode**)&pNode->pExpr);
×
6359
  }
6360
  if (TSDB_CODE_SUCCESS == code) {
×
6361
    code = jsonToNodeObject(pJson, jkStateWindowTrueForLimit, (SNode**)&pNode->pTrueForLimit);
×
6362
  }
6363
  return code;
×
6364
}
6365

6366
static const char* jkSessionWindowTsPrimaryKey = "TsPrimaryKey";
6367
static const char* jkSessionWindowGap = "Gap";
6368

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

6372
  int32_t code = tjsonAddObject(pJson, jkSessionWindowTsPrimaryKey, nodeToJson, pNode->pCol);
×
6373
  if (TSDB_CODE_SUCCESS == code) {
×
6374
    code = tjsonAddObject(pJson, jkSessionWindowGap, nodeToJson, pNode->pGap);
×
6375
  }
6376
  return code;
×
6377
}
6378

6379
static int32_t jsonToSessionWindowNode(const SJson* pJson, void* pObj) {
×
6380
  SSessionWindowNode* pNode = (SSessionWindowNode*)pObj;
×
6381

6382
  int32_t code = jsonToNodeObject(pJson, jkSessionWindowTsPrimaryKey, (SNode**)&pNode->pCol);
×
6383
  if (TSDB_CODE_SUCCESS == code) {
×
6384
    code = jsonToNodeObject(pJson, jkSessionWindowGap, (SNode**)&pNode->pGap);
×
6385
  }
6386
  return code;
×
6387
}
6388

6389
static const char* jkEventWindowTsPrimaryKey = "TsPrimaryKey";
6390
static const char* jkEventWindowStartCond = "StartCond";
6391
static const char* jkEventWindowEndCond = "EndCond";
6392
static const char* jkEventWindowTrueForLimit = "TrueForLimit";
6393

6394
static int32_t eventWindowNodeToJson(const void* pObj, SJson* pJson) {
×
6395
  const SEventWindowNode* pNode = (const SEventWindowNode*)pObj;
×
6396

6397
  int32_t code = tjsonAddObject(pJson, jkEventWindowTsPrimaryKey, nodeToJson, pNode->pCol);
×
6398
  if (TSDB_CODE_SUCCESS == code) {
×
6399
    code = tjsonAddObject(pJson, jkEventWindowStartCond, nodeToJson, pNode->pStartCond);
×
6400
  }
6401
  if (TSDB_CODE_SUCCESS == code) {
×
6402
    code = tjsonAddObject(pJson, jkEventWindowEndCond, nodeToJson, pNode->pEndCond);
×
6403
  }
6404
  if (TSDB_CODE_SUCCESS == code) {
×
6405
    code = tjsonAddObject(pJson, jkEventWindowTrueForLimit, nodeToJson, pNode->pTrueForLimit);
×
6406
  }
6407
  return code;
×
6408
}
6409

6410
static int32_t jsonToEventWindowNode(const SJson* pJson, void* pObj) {
×
6411
  SEventWindowNode* pNode = (SEventWindowNode*)pObj;
×
6412

6413
  int32_t code = jsonToNodeObject(pJson, jkEventWindowTsPrimaryKey, &pNode->pCol);
×
6414
  if (TSDB_CODE_SUCCESS == code) {
×
6415
    code = jsonToNodeObject(pJson, jkEventWindowStartCond, &pNode->pStartCond);
×
6416
  }
6417
  if (TSDB_CODE_SUCCESS == code) {
×
6418
    code = jsonToNodeObject(pJson, jkEventWindowEndCond, &pNode->pEndCond);
×
6419
  }
6420
  if (TSDB_CODE_SUCCESS == code) {
×
6421
    code = jsonToNodeObject(pJson, jkEventWindowTrueForLimit, &pNode->pTrueForLimit);
×
6422
  }
6423
  return code;
×
6424
}
6425

6426
static const char* jkCountWindowTsPrimaryKey = "CountTsPrimaryKey";
6427
static const char* jkCountWindowCount = "CountWindowCount";
6428
static const char* jkCountWindowSliding = "CountWindowSliding";
6429

6430
static int32_t countWindowNodeToJson(const void* pObj, SJson* pJson) {
×
6431
  const SCountWindowNode* pNode = (const SCountWindowNode*)pObj;
×
6432

6433
  int32_t code = tjsonAddObject(pJson, jkCountWindowTsPrimaryKey, nodeToJson, pNode->pCol);
×
6434
  if (TSDB_CODE_SUCCESS == code) {
×
6435
    code = tjsonAddIntegerToObject(pJson, jkCountWindowCount, pNode->windowCount);
×
6436
  }
6437
  if (TSDB_CODE_SUCCESS == code) {
×
6438
    code = tjsonAddIntegerToObject(pJson, jkCountWindowSliding, pNode->windowSliding);
×
6439
  }
6440
  return code;
×
6441
}
6442

6443
static int32_t jsonToCountWindowNode(const SJson* pJson, void* pObj) {
×
6444
  SCountWindowNode* pNode = (SCountWindowNode*)pObj;
×
6445

6446
  int32_t code = jsonToNodeObject(pJson, jkCountWindowTsPrimaryKey, &pNode->pCol);
×
6447
  if (TSDB_CODE_SUCCESS == code) {
×
6448
    code = tjsonGetBigIntValue(pJson, jkCountWindowCount, &pNode->windowCount);
×
6449
  }
6450
  if (TSDB_CODE_SUCCESS == code) {
×
6451
    code = tjsonGetBigIntValue(pJson, jkCountWindowSliding, &pNode->windowSliding);
×
6452
  }
6453
  return code;
×
6454
}
6455

6456
static const char* jkAnomalyWindowTsPrimaryKey = "AnomalyTsPrimaryKey";
6457
static const char* jkAnomalyWindowExpr = "AnomalyWindowExpr";
6458
static const char* jkAnomalyWindowOption = "AnomalyWindowOpt";
6459

6460
static int32_t anomalyWindowNodeToJson(const void* pObj, SJson* pJson) {
×
6461
  const SAnomalyWindowNode* pNode = (const SAnomalyWindowNode*)pObj;
×
6462

6463
  int32_t code = tjsonAddObject(pJson, jkAnomalyWindowTsPrimaryKey, nodeToJson, pNode->pCol);
×
6464
  if (TSDB_CODE_SUCCESS == code) {
×
6465
    code = tjsonAddObject(pJson, jkAnomalyWindowExpr, nodeToJson, pNode->pExpr);
×
6466
  }
6467
  if (TSDB_CODE_SUCCESS == code) {
×
6468
    code = tjsonAddStringToObject(pJson, jkAnomalyWindowOption, pNode->anomalyOpt);
×
6469
  }
6470
  return code;
×
6471
}
6472

6473
static int32_t jsonToAnomalyWindowNode(const SJson* pJson, void* pObj) {
×
6474
  SAnomalyWindowNode* pNode = (SAnomalyWindowNode*)pObj;
×
6475

6476
  int32_t code = jsonToNodeObject(pJson, jkAnomalyWindowTsPrimaryKey, &pNode->pCol);
×
6477
  if (TSDB_CODE_SUCCESS == code) {
×
6478
    code = jsonToNodeObject(pJson, jkAnomalyWindowExpr, (SNode**)&pNode->pExpr);
×
6479
  }
6480
  if (TSDB_CODE_SUCCESS == code) {
×
6481
    code = tjsonGetStringValue(pJson, jkAnomalyWindowOption, pNode->anomalyOpt);
×
6482
  }
6483
  return code;
×
6484
}
6485

6486
static const char* jkIntervalWindowInterval = "Interval";
6487
static const char* jkIntervalWindowOffset = "Offset";
6488
static const char* jkIntervalWindowSliding = "Sliding";
6489
static const char* jkIntervalWindowFill = "Fill";
6490
static const char* jkIntervalWindowTsPk = "TsPk";
6491
static const char* jkIntervalStartTime = "StartTime";
6492
static const char* jkIntervalEndTime = "EndTime";
6493

6494
static int32_t intervalWindowNodeToJson(const void* pObj, SJson* pJson) {
×
6495
  const SIntervalWindowNode* pNode = (const SIntervalWindowNode*)pObj;
×
6496

6497
  int32_t code = tjsonAddObject(pJson, jkIntervalWindowInterval, nodeToJson, pNode->pInterval);
×
6498
  if (TSDB_CODE_SUCCESS == code) {
×
6499
    code = tjsonAddObject(pJson, jkIntervalWindowOffset, nodeToJson, pNode->pOffset);
×
6500
  }
6501
  if (TSDB_CODE_SUCCESS == code) {
×
6502
    code = tjsonAddObject(pJson, jkIntervalWindowSliding, nodeToJson, pNode->pSliding);
×
6503
  }
6504
  if (TSDB_CODE_SUCCESS == code) {
×
6505
    code = tjsonAddObject(pJson, jkIntervalWindowFill, nodeToJson, pNode->pFill);
×
6506
  }
6507
  if (TSDB_CODE_SUCCESS == code) {
×
6508
    code = tjsonAddObject(pJson, jkIntervalWindowTsPk, nodeToJson, pNode->pCol);
×
6509
  }
6510
  if (TSDB_CODE_SUCCESS == code) {
×
6511
    code = tjsonAddIntegerToObject(pJson, jkIntervalStartTime, pNode->timeRange.skey);
×
6512
  }
6513
  if (TSDB_CODE_SUCCESS == code) {
×
6514
    code = tjsonAddIntegerToObject(pJson, jkIntervalEndTime, pNode->timeRange.ekey);
×
6515
  }
6516

6517
  return code;
×
6518
}
6519

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

6523
  int32_t code = jsonToNodeObject(pJson, jkIntervalWindowInterval, &pNode->pInterval);
×
6524
  if (TSDB_CODE_SUCCESS == code) {
×
6525
    code = jsonToNodeObject(pJson, jkIntervalWindowOffset, &pNode->pOffset);
×
6526
  }
6527
  if (TSDB_CODE_SUCCESS == code) {
×
6528
    code = jsonToNodeObject(pJson, jkIntervalWindowSliding, &pNode->pSliding);
×
6529
  }
6530
  if (TSDB_CODE_SUCCESS == code) {
×
6531
    code = jsonToNodeObject(pJson, jkIntervalWindowFill, &pNode->pFill);
×
6532
  }
6533
  if (TSDB_CODE_SUCCESS == code) {
×
6534
    code = jsonToNodeObject(pJson, jkIntervalWindowTsPk, &pNode->pCol);
×
6535
  }
6536
  if (TSDB_CODE_SUCCESS == code) {
×
6537
    code = tjsonGetBigIntValue(pJson, jkIntervalStartTime, &pNode->timeRange.skey);
×
6538
  }
6539
  if (TSDB_CODE_SUCCESS == code) {
×
6540
    code = tjsonGetBigIntValue(pJson, jkIntervalEndTime, &pNode->timeRange.ekey);
×
6541
  }
6542

6543
  return code;
×
6544
}
6545

6546
static const char* jkNodeListDataType = "DataType";
6547
static const char* jkNodeListNodeList = "NodeList";
6548

6549
static int32_t nodeListNodeToJson(const void* pObj, SJson* pJson) {
643,748,424✔
6550
  const SNodeListNode* pNode = (const SNodeListNode*)pObj;
643,748,424✔
6551

6552
  int32_t code = tjsonAddObject(pJson, jkNodeListDataType, dataTypeToJson, &pNode->node.resType);
643,748,424✔
6553
  if (TSDB_CODE_SUCCESS == code) {
643,750,504✔
6554
    code = nodeListToJson(pJson, jkNodeListNodeList, pNode->pNodeList);
643,750,504✔
6555
  }
6556

6557
  return code;
643,752,754✔
6558
}
6559

6560
static int32_t jsonToNodeListNode(const SJson* pJson, void* pObj) {
558,434✔
6561
  SNodeListNode* pNode = (SNodeListNode*)pObj;
558,434✔
6562

6563
  int32_t code = tjsonToObject(pJson, jkNodeListDataType, jsonToDataType, &pNode->node.resType);
558,434✔
6564
  if (TSDB_CODE_SUCCESS == code) {
558,434✔
6565
    code = jsonToNodeList(pJson, jkNodeListNodeList, &pNode->pNodeList);
558,434✔
6566
  }
6567

6568
  return code;
558,434✔
6569
}
6570

6571
static const char* jkFillMode = "Mode";
6572
static const char* jkFillValues = "Values";
6573
static const char* jkFillWStartTs = "WStartTs";
6574
static const char* jkFillStartTime = "StartTime";
6575
static const char* jkFillEndTime = "EndTime";
6576

6577
static int32_t fillNodeToJson(const void* pObj, SJson* pJson) {
×
6578
  const SFillNode* pNode = (const SFillNode*)pObj;
×
6579

6580
  int32_t code = tjsonAddIntegerToObject(pJson, jkFillMode, pNode->mode);
×
6581
  if (TSDB_CODE_SUCCESS == code) {
×
6582
    code = tjsonAddObject(pJson, jkFillValues, nodeToJson, pNode->pValues);
×
6583
  }
6584
  if (TSDB_CODE_SUCCESS == code) {
×
6585
    code = tjsonAddObject(pJson, jkFillWStartTs, nodeToJson, pNode->pWStartTs);
×
6586
  }
6587
  if (TSDB_CODE_SUCCESS == code) {
×
6588
    code = tjsonAddIntegerToObject(pJson, jkFillStartTime, pNode->timeRange.skey);
×
6589
  }
6590
  if (TSDB_CODE_SUCCESS == code) {
×
6591
    code = tjsonAddIntegerToObject(pJson, jkFillEndTime, pNode->timeRange.ekey);
×
6592
  }
6593

6594
  return code;
×
6595
}
6596

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

6600
  int32_t code;
6601
  tjsonGetNumberValue(pJson, jkFillMode, pNode->mode, code);
×
6602
  if (TSDB_CODE_SUCCESS == code) {
×
6603
    code = jsonToNodeObject(pJson, jkFillValues, &pNode->pValues);
×
6604
  }
6605
  if (TSDB_CODE_SUCCESS == code) {
×
6606
    code = jsonToNodeObject(pJson, jkFillWStartTs, &pNode->pWStartTs);
×
6607
  }
6608
  if (TSDB_CODE_SUCCESS == code) {
×
6609
    code = tjsonGetBigIntValue(pJson, jkFillStartTime, &pNode->timeRange.skey);
×
6610
  }
6611
  if (TSDB_CODE_SUCCESS == code) {
×
6612
    code = tjsonGetBigIntValue(pJson, jkFillEndTime, &pNode->timeRange.ekey);
×
6613
  }
6614

6615
  return code;
×
6616
}
6617

6618
static const char* jkTargetDataBlockId = "DataBlockId";
6619
static const char* jkTargetSlotId = "SlotId";
6620
static const char* jkTargetExpr = "Expr";
6621

6622
static int32_t targetNodeToJson(const void* pObj, SJson* pJson) {
2,147,483,647✔
6623
  const STargetNode* pNode = (const STargetNode*)pObj;
2,147,483,647✔
6624

6625
  int32_t code = tjsonAddIntegerToObject(pJson, jkTargetDataBlockId, pNode->dataBlockId);
2,147,483,647✔
6626
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
6627
    code = tjsonAddIntegerToObject(pJson, jkTargetSlotId, pNode->slotId);
2,147,483,647✔
6628
  }
6629
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
6630
    code = tjsonAddObject(pJson, jkTargetExpr, nodeToJson, pNode->pExpr);
2,147,483,647✔
6631
  }
6632

6633
  return code;
2,147,483,647✔
6634
}
6635

6636
static int32_t jsonToTargetNode(const SJson* pJson, void* pObj) {
19,924,634✔
6637
  STargetNode* pNode = (STargetNode*)pObj;
19,924,634✔
6638

6639
  int32_t code = tjsonGetSmallIntValue(pJson, jkTargetDataBlockId, &pNode->dataBlockId);
19,924,634✔
6640
  if (TSDB_CODE_SUCCESS == code) {
19,925,347✔
6641
    code = tjsonGetSmallIntValue(pJson, jkTargetSlotId, &pNode->slotId);
19,925,557✔
6642
  }
6643
  if (TSDB_CODE_SUCCESS == code) {
19,925,615✔
6644
    code = jsonToNodeObject(pJson, jkTargetExpr, &pNode->pExpr);
19,925,615✔
6645
  }
6646

6647
  return code;
19,924,033✔
6648
}
6649

6650
static const char* jkSlotDescSlotId = "SlotId";
6651
static const char* jkSlotDescDataType = "DataType";
6652
static const char* jkSlotDescReserve = "Reserve";
6653
static const char* jkSlotDescOutput = "Output";
6654
static const char* jkSlotDescName = "Name";
6655
static const char* jkSlotTag = "Tag";
6656

6657
static int32_t slotDescNodeToJson(const void* pObj, SJson* pJson) {
2,147,483,647✔
6658
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
2,147,483,647✔
6659

6660
  int32_t code = tjsonAddIntegerToObject(pJson, jkSlotDescSlotId, pNode->slotId);
2,147,483,647✔
6661
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
6662
    code = tjsonAddObject(pJson, jkSlotDescDataType, dataTypeToJson, &pNode->dataType);
2,147,483,647✔
6663
  }
6664
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
6665
    code = tjsonAddBoolToObject(pJson, jkSlotDescReserve, pNode->reserve);
2,147,483,647✔
6666
  }
6667
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
6668
    code = tjsonAddBoolToObject(pJson, jkSlotDescOutput, pNode->output);
2,147,483,647✔
6669
  }
6670
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
6671
    code = tjsonAddStringToObject(pJson, jkSlotDescName, pNode->name);
2,147,483,647✔
6672
  }
6673
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
6674
    code = tjsonAddBoolToObject(pJson, jkSlotTag, pNode->tag);
2,147,483,647✔
6675
  }
6676

6677
  return code;
2,147,483,647✔
6678
}
6679

6680
static int32_t jsonToSlotDescNode(const SJson* pJson, void* pObj) {
35,397,846✔
6681
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
35,397,846✔
6682

6683
  int32_t code = tjsonGetSmallIntValue(pJson, jkSlotDescSlotId, &pNode->slotId);
35,397,846✔
6684
  if (TSDB_CODE_SUCCESS == code) {
35,402,104✔
6685
    code = tjsonToObject(pJson, jkSlotDescDataType, jsonToDataType, &pNode->dataType);
35,401,899✔
6686
  }
6687
  if (TSDB_CODE_SUCCESS == code) {
35,399,913✔
6688
    code = tjsonGetBoolValue(pJson, jkSlotDescReserve, &pNode->reserve);
35,399,913✔
6689
  }
6690
  if (TSDB_CODE_SUCCESS == code) {
35,400,178✔
6691
    code = tjsonGetBoolValue(pJson, jkSlotDescOutput, &pNode->output);
35,400,178✔
6692
  }
6693
  if (TSDB_CODE_SUCCESS == code) {
35,398,854✔
6694
    code = tjsonGetStringValue(pJson, jkSlotDescName, pNode->name);
35,398,854✔
6695
  }
6696
  if (TSDB_CODE_SUCCESS == code) {
35,400,403✔
6697
    code = tjsonGetBoolValue(pJson, jkSlotTag, &pNode->tag);
35,400,403✔
6698
  }
6699

6700
  return code;
35,399,639✔
6701
}
6702

6703
static const char* jkColumnDefColName = "ColName";
6704
static const char* jkColumnDefDataType = "DataType";
6705
static const char* jkColumnDefComments = "Comments";
6706
static const char* jkColumnDefSma = "Sma";
6707
static const char* jkColumnDefOptions = "ColumnOptions";
6708

6709
static int32_t columnDefNodeToJson(const void* pObj, SJson* pJson) {
×
6710
  const SColumnDefNode* pNode = (const SColumnDefNode*)pObj;
×
6711

6712
  int32_t code = tjsonAddStringToObject(pJson, jkColumnDefColName, pNode->colName);
×
6713
  if (TSDB_CODE_SUCCESS == code) {
×
6714
    code = tjsonAddObject(pJson, jkColumnDefDataType, dataTypeToJson, &pNode->dataType);
×
6715
  }
6716
  if (TSDB_CODE_SUCCESS == code) {
×
6717
    code = tjsonAddBoolToObject(pJson, jkColumnDefSma, pNode->sma);
×
6718
  }
6719
  if (TSDB_CODE_SUCCESS == code) {
×
6720
    code = tjsonAddObject(pJson, jkColumnDefOptions, nodeToJson, pNode->pOptions);
×
6721
  }
6722

6723
  return code;
×
6724
}
6725

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

6729
  int32_t code = tjsonGetStringValue(pJson, jkColumnDefColName, pNode->colName);
×
6730
  if (TSDB_CODE_SUCCESS == code) {
×
6731
    code = tjsonToObject(pJson, jkColumnDefDataType, jsonToDataType, &pNode->dataType);
×
6732
  }
6733
  if (TSDB_CODE_SUCCESS == code) {
×
6734
    code = tjsonGetBoolValue(pJson, jkColumnDefSma, &pNode->sma);
×
6735
  }
6736
  if (TSDB_CODE_SUCCESS == code) {
×
6737
    code = jsonToNodeObject(pJson, jkColumnDefOptions, (SNode**)&pNode->pOptions);
×
6738
  }
6739
  return code;
×
6740
}
6741

6742
static const char* jkDownstreamSourceAddr = "Addr";
6743
static const char* jkDownstreamSourceClientId = "ClientId";
6744
static const char* jkDownstreamSourceTaskId = "TaskId";
6745
static const char* jkDownstreamSourceSeriousId = "SeriousId";
6746
static const char* jkDownstreamSourceExecId = "ExecId";
6747
static const char* jkDownstreamSourceFetchMsgType = "FetchMsgType";
6748

6749
static int32_t downstreamSourceNodeToJson(const void* pObj, SJson* pJson) {
888,990✔
6750
  const SDownstreamSourceNode* pNode = (const SDownstreamSourceNode*)pObj;
888,990✔
6751

6752
  int32_t code = tjsonAddObject(pJson, jkDownstreamSourceAddr, queryNodeAddrToJson, &pNode->addr);
888,990✔
6753
  if (TSDB_CODE_SUCCESS == code) {
888,990✔
6754
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceClientId, pNode->clientId);
888,990✔
6755
  }
6756
  if (TSDB_CODE_SUCCESS == code) {
888,990✔
6757
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceTaskId, pNode->taskId);
888,990✔
6758
  }
6759
  if (TSDB_CODE_SUCCESS == code) {
888,990✔
6760
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceSeriousId, pNode->sId);
888,990✔
6761
  }
6762
  if (TSDB_CODE_SUCCESS == code) {
888,990✔
6763
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceExecId, pNode->execId);
888,990✔
6764
  }
6765
  if (TSDB_CODE_SUCCESS == code) {
888,990✔
6766
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceFetchMsgType, pNode->fetchMsgType);
888,990✔
6767
  }
6768

6769
  return code;
888,990✔
6770
}
6771

6772
static int32_t jsonToDownstreamSourceNode(const SJson* pJson, void* pObj) {
416,818✔
6773
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
416,818✔
6774

6775
  int32_t code = tjsonToObject(pJson, jkDownstreamSourceAddr, jsonToQueryNodeAddr, &pNode->addr);
416,818✔
6776
  if (TSDB_CODE_SUCCESS == code) {
416,818✔
6777
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceClientId, &pNode->clientId);
416,818✔
6778
  }
6779
  if (TSDB_CODE_SUCCESS == code) {
416,818✔
6780
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceTaskId, &pNode->taskId);
416,818✔
6781
  }
6782
  if (TSDB_CODE_SUCCESS == code) {
416,818✔
6783
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceSeriousId, &pNode->sId);
416,818✔
6784
  }
6785
  if (TSDB_CODE_SUCCESS == code) {
416,818✔
6786
    code = tjsonGetIntValue(pJson, jkDownstreamSourceExecId, &pNode->execId);
416,818✔
6787
  }
6788
  if (TSDB_CODE_SUCCESS == code) {
416,818✔
6789
    code = tjsonGetIntValue(pJson, jkDownstreamSourceFetchMsgType, &pNode->fetchMsgType);
416,818✔
6790
  }
6791

6792
  return code;
416,818✔
6793
}
6794

6795
static const char* jkWindowOffsetStartOffset = "StartOffset";
6796
static const char* jkWindowOffsetEndOffset = "EndOffset";
6797
static int32_t     windowOffsetNodeToJson(const void* pObj, SJson* pJson) {
283,679✔
6798
  const SWindowOffsetNode* pNode = (const SWindowOffsetNode*)pObj;
283,679✔
6799

6800
  int32_t code = tjsonAddObject(pJson, jkWindowOffsetStartOffset, nodeToJson, pNode->pStartOffset);
283,679✔
6801
  if (TSDB_CODE_SUCCESS == code) {
283,679✔
6802
    code = tjsonAddObject(pJson, jkWindowOffsetEndOffset, nodeToJson, pNode->pEndOffset);
283,679✔
6803
  }
6804
  return code;
283,679✔
6805
}
6806

6807
static int32_t jsonToWindowOffsetNode(const SJson* pJson, void* pObj) {
×
6808
  SWindowOffsetNode* pNode = (SWindowOffsetNode*)pObj;
×
6809

6810
  int32_t code = jsonToNodeObject(pJson, jkWindowOffsetStartOffset, &pNode->pStartOffset);
×
6811
  if (TSDB_CODE_SUCCESS == code) {
×
6812
    code = jsonToNodeObject(pJson, jkWindowOffsetEndOffset, &pNode->pEndOffset);
×
6813
  }
6814
  return code;
×
6815
}
6816

6817
static const char* jkDatabaseOptionsBuffer = "Buffer";
6818
static const char* jkDatabaseOptionsCacheModel = "CacheModel";
6819
static const char* jkDatabaseOptionsCompressionLevel = "CompressionLevel";
6820
static const char* jkDatabaseOptionsDaysPerFileNode = "DaysPerFileNode";
6821
static const char* jkDatabaseOptionsDaysPerFile = "DaysPerFile";
6822
static const char* jkDatabaseOptionsFsyncPeriod = "FsyncPeriod";
6823
static const char* jkDatabaseOptionsMaxRowsPerBlock = "MaxRowsPerBlock";
6824
static const char* jkDatabaseOptionsMinRowsPerBlock = "MinRowsPerBlock";
6825
static const char* jkDatabaseOptionsKeep = "Keep";
6826
static const char* jkDatabaseOptionsPages = "Pages";
6827
static const char* jkDatabaseOptionsPagesize = "Pagesize";
6828
static const char* jkDatabaseOptionsPrecision = "Precision";
6829
static const char* jkDatabaseOptionsReplica = "Replica";
6830
static const char* jkDatabaseOptionsStrict = "Strict";
6831
static const char* jkDatabaseOptionsWalLevel = "WalLevel";
6832
static const char* jkDatabaseOptionsNumOfVgroups = "NumOfVgroups";
6833
static const char* jkDatabaseOptionsSingleStable = "SingleStable";
6834
static const char* jkDatabaseOptionsRetentions = "Retentions";
6835
static const char* jkDatabaseOptionsSchemaless = "Schemaless";
6836

6837
// shared storage options, the 'S3' ones are for backward compatibility.
6838
static const char* jkDatabaseOptionsSsChunkSize = "SsChunkSize";
6839
static const char* jkDatabaseOptionsSsKeepLocalNode = "SsKeepLocalNode";
6840
static const char* jkDatabaseOptionsSsKeepLocal = "SsKeepLocal";
6841
static const char* jkDatabaseOptionsSsCompact = "SsCompact";
6842
static const char* jkDatabaseOptionsS3ChunkSize = "S3ChunkSize";
6843
static const char* jkDatabaseOptionsS3KeepLocalNode = "S3KeepLocalNode";
6844
static const char* jkDatabaseOptionsS3KeepLocal = "S3KeepLocal";
6845
static const char* jkDatabaseOptionsS3Compact = "S3Compact";
6846

6847
static const char* jkDatabaseOptionsCompactIntervalNode = "compactIntervalNode";
6848
static const char* jkDatabaseOptionsCompactTimeRange = "compactTimeRange";
6849
static const char* jkDatabaseOptionsCompactTimeOffsetNode = "compactTimeOffsetNode";
6850

6851
static int32_t databaseOptionsToJson(const void* pObj, SJson* pJson) {
×
6852
  const SDatabaseOptions* pNode = (const SDatabaseOptions*)pObj;
×
6853

6854
  int32_t code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsBuffer, pNode->buffer);
×
6855
  if (TSDB_CODE_SUCCESS == code) {
×
6856
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsCacheModel, pNode->cacheModel);
×
6857
  }
6858
  if (TSDB_CODE_SUCCESS == code) {
×
6859
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsCompressionLevel, pNode->compressionLevel);
×
6860
  }
6861
  if (TSDB_CODE_SUCCESS == code) {
×
6862
    code = tjsonAddObject(pJson, jkDatabaseOptionsDaysPerFileNode, nodeToJson, pNode->pDaysPerFile);
×
6863
  }
6864
  if (TSDB_CODE_SUCCESS == code) {
×
6865
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsDaysPerFile, pNode->daysPerFile);
×
6866
  }
6867
  if (TSDB_CODE_SUCCESS == code) {
×
6868
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsFsyncPeriod, pNode->fsyncPeriod);
×
6869
  }
6870
  if (TSDB_CODE_SUCCESS == code) {
×
6871
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsMaxRowsPerBlock, pNode->maxRowsPerBlock);
×
6872
  }
6873
  if (TSDB_CODE_SUCCESS == code) {
×
6874
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsMinRowsPerBlock, pNode->minRowsPerBlock);
×
6875
  }
6876
  if (TSDB_CODE_SUCCESS == code) {
×
6877
    code = nodeListToJson(pJson, jkDatabaseOptionsKeep, pNode->pKeep);
×
6878
  }
6879
  if (TSDB_CODE_SUCCESS == code) {
×
6880
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsPages, pNode->pages);
×
6881
  }
6882
  if (TSDB_CODE_SUCCESS == code) {
×
6883
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsPagesize, pNode->pagesize);
×
6884
  }
6885
  if (TSDB_CODE_SUCCESS == code) {
×
6886
    code = tjsonAddStringToObject(pJson, jkDatabaseOptionsPrecision, pNode->precisionStr);
×
6887
  }
6888
  if (TSDB_CODE_SUCCESS == code) {
×
6889
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsReplica, pNode->replica);
×
6890
  }
6891
  if (TSDB_CODE_SUCCESS == code) {
×
6892
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsStrict, pNode->strict);
×
6893
  }
6894
  if (TSDB_CODE_SUCCESS == code) {
×
6895
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsWalLevel, pNode->walLevel);
×
6896
  }
6897
  if (TSDB_CODE_SUCCESS == code) {
×
6898
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsNumOfVgroups, pNode->numOfVgroups);
×
6899
  }
6900
  if (TSDB_CODE_SUCCESS == code) {
×
6901
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSingleStable, pNode->singleStable);
×
6902
  }
6903
  if (TSDB_CODE_SUCCESS == code) {
×
6904
    code = nodeListToJson(pJson, jkDatabaseOptionsRetentions, pNode->pRetentions);
×
6905
  }
6906
  if (TSDB_CODE_SUCCESS == code) {
×
6907
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSchemaless, pNode->schemaless);
×
6908
  }
6909
  if (TSDB_CODE_SUCCESS == code) {
×
6910
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSsChunkSize, pNode->ssChunkSize);
×
6911
  }
6912
  if (TSDB_CODE_SUCCESS == code) {
×
6913
    code = tjsonAddObject(pJson, jkDatabaseOptionsSsKeepLocalNode, nodeToJson, pNode->ssKeepLocalStr);
×
6914
  }
6915
  if (TSDB_CODE_SUCCESS == code) {
×
6916
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSsKeepLocal, pNode->ssKeepLocal);
×
6917
  }
6918
  if (TSDB_CODE_SUCCESS == code) {
×
6919
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSsCompact, pNode->ssCompact);
×
6920
  }
6921
  if (TSDB_CODE_SUCCESS == code) {
×
6922
    code = tjsonAddObject(pJson, jkDatabaseOptionsCompactIntervalNode, nodeToJson, pNode->pCompactIntervalNode);
×
6923
  }
6924
  if (TSDB_CODE_SUCCESS == code) {
×
6925
    code = nodeListToJson(pJson, jkDatabaseOptionsCompactTimeRange, pNode->pCompactTimeRangeList);
×
6926
  }
6927
  if (TSDB_CODE_SUCCESS == code) {
×
6928
    code = tjsonAddObject(pJson, jkDatabaseOptionsCompactTimeOffsetNode, nodeToJson, pNode->pCompactTimeOffsetNode);
×
6929
  }
6930

6931
  return code;
×
6932
}
6933

6934
static int32_t jsonToDatabaseOptions(const SJson* pJson, void* pObj) {
×
6935
  SDatabaseOptions* pNode = (SDatabaseOptions*)pObj;
×
6936

6937
  int32_t code = tjsonGetIntValue(pJson, jkDatabaseOptionsBuffer, &pNode->buffer);
×
6938
  if (TSDB_CODE_SUCCESS == code) {
×
6939
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsCacheModel, &pNode->cacheModel);
×
6940
  }
6941
  if (TSDB_CODE_SUCCESS == code) {
×
6942
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsCompressionLevel, &pNode->compressionLevel);
×
6943
  }
6944
  if (TSDB_CODE_SUCCESS == code) {
×
6945
    code = jsonToNodeObject(pJson, jkDatabaseOptionsDaysPerFileNode, (SNode**)&pNode->pDaysPerFile);
×
6946
  }
6947
  if (TSDB_CODE_SUCCESS == code) {
×
6948
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsDaysPerFile, &pNode->daysPerFile);
×
6949
  }
6950
  if (TSDB_CODE_SUCCESS == code) {
×
6951
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsFsyncPeriod, &pNode->fsyncPeriod);
×
6952
  }
6953
  if (TSDB_CODE_SUCCESS == code) {
×
6954
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsMaxRowsPerBlock, &pNode->maxRowsPerBlock);
×
6955
  }
6956
  if (TSDB_CODE_SUCCESS == code) {
×
6957
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsMinRowsPerBlock, &pNode->minRowsPerBlock);
×
6958
  }
6959
  if (TSDB_CODE_SUCCESS == code) {
×
6960
    code = jsonToNodeList(pJson, jkDatabaseOptionsKeep, &pNode->pKeep);
×
6961
  }
6962
  if (TSDB_CODE_SUCCESS == code) {
×
6963
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsPages, &pNode->pages);
×
6964
  }
6965
  if (TSDB_CODE_SUCCESS == code) {
×
6966
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsPagesize, &pNode->pagesize);
×
6967
  }
6968
  if (TSDB_CODE_SUCCESS == code) {
×
6969
    code = tjsonGetStringValue(pJson, jkDatabaseOptionsPrecision, pNode->precisionStr);
×
6970
  }
6971
  if (TSDB_CODE_SUCCESS == code) {
×
6972
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsReplica, &pNode->replica);
×
6973
  }
6974
  if (TSDB_CODE_SUCCESS == code) {
×
6975
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsStrict, &pNode->strict);
×
6976
  }
6977
  if (TSDB_CODE_SUCCESS == code) {
×
6978
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsWalLevel, &pNode->walLevel);
×
6979
  }
6980
  if (TSDB_CODE_SUCCESS == code) {
×
6981
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsNumOfVgroups, &pNode->numOfVgroups);
×
6982
  }
6983
  if (TSDB_CODE_SUCCESS == code) {
×
6984
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsSingleStable, &pNode->singleStable);
×
6985
  }
6986
  if (TSDB_CODE_SUCCESS == code) {
×
6987
    code = jsonToNodeList(pJson, jkDatabaseOptionsRetentions, &pNode->pRetentions);
×
6988
  }
6989
  if (TSDB_CODE_SUCCESS == code) {
×
6990
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsSchemaless, &pNode->schemaless);
×
6991
  }
6992
  if (TSDB_CODE_SUCCESS == code) {
×
6993
    if (tjsonGetObjectItem(pJson, jkDatabaseOptionsSsChunkSize) != NULL) {
×
6994
      code = tjsonGetIntValue(pJson, jkDatabaseOptionsSsChunkSize, &pNode->ssChunkSize);
×
6995
    } else {
6996
      code = tjsonGetIntValue(pJson, jkDatabaseOptionsS3ChunkSize, &pNode->ssChunkSize);
×
6997
    }
6998
  }
6999
  if (TSDB_CODE_SUCCESS == code) {
×
7000
    if (tjsonGetObjectItem(pJson, jkDatabaseOptionsSsKeepLocalNode) != NULL) {
×
7001
      code = jsonToNodeObject(pJson, jkDatabaseOptionsSsKeepLocalNode, (SNode**)&pNode->ssKeepLocalStr);
×
7002
    } else {
7003
      code = jsonToNodeObject(pJson, jkDatabaseOptionsSsKeepLocalNode, (SNode**)&pNode->ssKeepLocalStr);
×
7004
    }
7005
  }
7006
  if (TSDB_CODE_SUCCESS == code) {
×
7007
    if (tjsonGetObjectItem(pJson, jkDatabaseOptionsSsKeepLocal) != NULL) {
×
7008
      code = tjsonGetIntValue(pJson, jkDatabaseOptionsSsKeepLocal, &pNode->ssKeepLocal);
×
7009
    } else {
7010
      code = tjsonGetIntValue(pJson, jkDatabaseOptionsS3KeepLocal, &pNode->ssKeepLocal);
×
7011
    }
7012
  }
7013
  if (TSDB_CODE_SUCCESS == code) {
×
7014
    if (tjsonGetObjectItem(pJson, jkDatabaseOptionsSsCompact) != NULL) {
×
7015
      code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsSsCompact, &pNode->ssCompact);
×
7016
    } else {
7017
      code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsS3Compact, &pNode->ssCompact);
×
7018
    }
7019
  }
7020
  if (TSDB_CODE_SUCCESS == code) {
×
7021
    code = jsonToNodeObject(pJson, jkDatabaseOptionsCompactIntervalNode, (SNode**)&pNode->pCompactIntervalNode);
×
7022
  }
7023
  if (TSDB_CODE_SUCCESS == code) {
×
7024
    code = jsonToNodeList(pJson, jkDatabaseOptionsCompactTimeRange, &pNode->pCompactTimeRangeList);
×
7025
  }
7026
  if (TSDB_CODE_SUCCESS == code) {
×
7027
    code = jsonToNodeObject(pJson, jkDatabaseOptionsCompactTimeOffsetNode, (SNode**)&pNode->pCompactTimeOffsetNode);
×
7028
  }
7029

7030
  return code;
×
7031
}
7032

7033
static const char* jkTableOptionsComment = "Comment";
7034
static const char* jkTableOptionsMaxDelay = "MaxDelay";
7035
static const char* jkTableOptionsWatermark = "Watermark";
7036
static const char* jkTableOptionsDeleteMark = "DeleteMark";
7037
static const char* jkTableOptionsRollupFuncs = "RollupFuncs";
7038
static const char* jkTableOptionsTtl = "Ttl";
7039
static const char* jkTableOptionsSma = "Sma";
7040

7041
static int32_t tableOptionsToJson(const void* pObj, SJson* pJson) {
×
7042
  const STableOptions* pNode = (const STableOptions*)pObj;
×
7043

7044
  int32_t code = tjsonAddStringToObject(pJson, jkTableOptionsComment, pNode->comment);
×
7045
  if (TSDB_CODE_SUCCESS == code) {
×
7046
    code = nodeListToJson(pJson, jkTableOptionsMaxDelay, pNode->pMaxDelay);
×
7047
  }
7048
  if (TSDB_CODE_SUCCESS == code) {
×
7049
    code = nodeListToJson(pJson, jkTableOptionsWatermark, pNode->pWatermark);
×
7050
  }
7051
  if (TSDB_CODE_SUCCESS == code) {
×
7052
    code = nodeListToJson(pJson, jkTableOptionsDeleteMark, pNode->pDeleteMark);
×
7053
  }
7054
  if (TSDB_CODE_SUCCESS == code) {
×
7055
    code = nodeListToJson(pJson, jkTableOptionsRollupFuncs, pNode->pRollupFuncs);
×
7056
  }
7057
  if (TSDB_CODE_SUCCESS == code) {
×
7058
    code = tjsonAddIntegerToObject(pJson, jkTableOptionsTtl, pNode->ttl);
×
7059
  }
7060
  if (TSDB_CODE_SUCCESS == code) {
×
7061
    code = nodeListToJson(pJson, jkTableOptionsSma, pNode->pSma);
×
7062
  }
7063

7064
  return code;
×
7065
}
7066

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

7070
  int32_t code = tjsonGetStringValue(pJson, jkTableOptionsComment, pNode->comment);
×
7071
  if (TSDB_CODE_SUCCESS == code) {
×
7072
    code = jsonToNodeList(pJson, jkTableOptionsMaxDelay, &pNode->pMaxDelay);
×
7073
  }
7074
  if (TSDB_CODE_SUCCESS == code) {
×
7075
    code = jsonToNodeList(pJson, jkTableOptionsWatermark, &pNode->pWatermark);
×
7076
  }
7077
  if (TSDB_CODE_SUCCESS == code) {
×
7078
    code = jsonToNodeList(pJson, jkTableOptionsDeleteMark, &pNode->pDeleteMark);
×
7079
  }
7080
  if (TSDB_CODE_SUCCESS == code) {
×
7081
    code = jsonToNodeList(pJson, jkTableOptionsRollupFuncs, &pNode->pRollupFuncs);
×
7082
  }
7083
  if (TSDB_CODE_SUCCESS == code) {
×
7084
    code = tjsonGetIntValue(pJson, jkTableOptionsTtl, &pNode->ttl);
×
7085
  }
7086
  if (TSDB_CODE_SUCCESS == code) {
×
7087
    code = jsonToNodeList(pJson, jkTableOptionsSma, &pNode->pSma);
×
7088
  }
7089

7090
  return code;
×
7091
}
7092

7093
static const char* jkColumnOptionsEncode = "encode";
7094
static const char* jkColumnOptionsCompress = "compress";
7095
static const char* jkColumnOptionsLevel = "level";
7096
static int32_t     columnOptionsToJson(const void* pObj, SJson* pJson) {
×
7097
  const SColumnOptions* pNode = (const SColumnOptions*)pObj;
×
7098
  int32_t               code = tjsonAddStringToObject(pJson, jkColumnOptionsEncode, pNode->encode);
×
7099
  code = tjsonAddStringToObject(pJson, jkColumnOptionsCompress, pNode->compress);
×
7100
  code = tjsonAddStringToObject(pJson, jkColumnOptionsLevel, pNode->compressLevel);
×
7101
  return code;
×
7102
}
7103

7104
static int32_t jsonToColumnOptions(const SJson* pJson, void* pObj) {
×
7105
  SColumnOptions* pNode = (SColumnOptions*)pObj;
×
7106

7107
  int32_t code = tjsonGetStringValue(pJson, jkColumnOptionsEncode, pNode->encode);
×
7108
  code = tjsonGetStringValue(pJson, jkColumnOptionsCompress, pNode->compress);
×
7109
  code = tjsonGetStringValue(pJson, jkColumnOptionsLevel, pNode->compressLevel);
×
7110
  return code;
×
7111
}
7112

7113
static const char* jkIndexOptionsFuncs = "Funcs";
7114
static const char* jkIndexOptionsInterval = "Interval";
7115
static const char* jkIndexOptionsOffset = "Offset";
7116
static const char* jkIndexOptionsSliding = "Sliding";
7117
static const char* jkIndexOptionsStreamOptions = "StreamOptions";
7118

7119
static int32_t indexOptionsToJson(const void* pObj, SJson* pJson) {
×
7120
  const SIndexOptions* pNode = (const SIndexOptions*)pObj;
×
7121

7122
  int32_t code = nodeListToJson(pJson, jkIndexOptionsFuncs, pNode->pFuncs);
×
7123
  if (TSDB_CODE_SUCCESS == code) {
×
7124
    code = tjsonAddObject(pJson, jkIndexOptionsInterval, nodeToJson, pNode->pInterval);
×
7125
  }
7126
  if (TSDB_CODE_SUCCESS == code) {
×
7127
    code = tjsonAddObject(pJson, jkIndexOptionsOffset, nodeToJson, pNode->pOffset);
×
7128
  }
7129
  if (TSDB_CODE_SUCCESS == code) {
×
7130
    code = tjsonAddObject(pJson, jkIndexOptionsSliding, nodeToJson, pNode->pSliding);
×
7131
  }
7132
  if (TSDB_CODE_SUCCESS == code) {
×
7133
    code = tjsonAddObject(pJson, jkIndexOptionsStreamOptions, nodeToJson, pNode->pStreamOptions);
×
7134
  }
7135

7136
  return code;
×
7137
}
7138

7139
static int32_t jsonToIndexOptions(const SJson* pJson, void* pObj) {
×
7140
  SIndexOptions* pNode = (SIndexOptions*)pObj;
×
7141

7142
  int32_t code = jsonToNodeList(pJson, jkIndexOptionsFuncs, &pNode->pFuncs);
×
7143
  if (TSDB_CODE_SUCCESS == code) {
×
7144
    code = jsonToNodeObject(pJson, jkIndexOptionsInterval, &pNode->pInterval);
×
7145
  }
7146
  if (TSDB_CODE_SUCCESS == code) {
×
7147
    code = jsonToNodeObject(pJson, jkIndexOptionsOffset, &pNode->pOffset);
×
7148
  }
7149
  if (TSDB_CODE_SUCCESS == code) {
×
7150
    code = jsonToNodeObject(pJson, jkIndexOptionsSliding, &pNode->pSliding);
×
7151
  }
7152
  if (TSDB_CODE_SUCCESS == code) {
×
7153
    code = jsonToNodeObject(pJson, jkIndexOptionsStreamOptions, &pNode->pStreamOptions);
×
7154
  }
7155

7156
  return code;
×
7157
}
7158

7159
static const char* jkExplainOptionsVerbose = "Verbose";
7160
static const char* jkExplainOptionsRatio = "Ratio";
7161

7162
static int32_t explainOptionsToJson(const void* pObj, SJson* pJson) {
×
7163
  const SExplainOptions* pNode = (const SExplainOptions*)pObj;
×
7164

7165
  int32_t code = tjsonAddBoolToObject(pJson, jkExplainOptionsVerbose, pNode->verbose);
×
7166
  if (TSDB_CODE_SUCCESS == code) {
×
7167
    code = tjsonAddDoubleToObject(pJson, jkExplainOptionsRatio, pNode->ratio);
×
7168
  }
7169

7170
  return code;
×
7171
}
7172

7173
static int32_t jsonToExplainOptions(const SJson* pJson, void* pObj) {
×
7174
  SExplainOptions* pNode = (SExplainOptions*)pObj;
×
7175

7176
  int32_t code = tjsonGetBoolValue(pJson, jkExplainOptionsVerbose, &pNode->verbose);
×
7177
  if (TSDB_CODE_SUCCESS == code) {
×
7178
    code = tjsonGetDoubleValue(pJson, jkExplainOptionsRatio, &pNode->ratio);
×
7179
  }
7180

7181
  return code;
×
7182
}
7183

7184
static const char* jkStreamOptionsTriggerType = "TriggerType";
7185
static const char* jkStreamOptionsDelay = "Delay";
7186
static const char* jkStreamOptionsWatermark = "Watermark";
7187
static const char* jkStreamOptionsDeleteMark = "DeleteMark";
7188
static const char* jkStreamOptionsFillHistory = "FillHistory";
7189
static const char* jkStreamOptionsIgnoreExpired = "IgnoreExpired";
7190
static const char* jkStreamOptionsRecInterval = "RecInterval";
7191

7192
static int32_t streamOptionsToJson(const void* pObj, SJson* pJson) {
×
7193
  const SStreamTriggerOptions* pNode = (const SStreamTriggerOptions*)pObj;
×
7194

7195
  return 0;
×
7196
}
7197

7198
static int32_t jsonToStreamOptions(const SJson* pJson, void* pObj) {
×
7199
  SStreamTriggerOptions* pNode = (SStreamTriggerOptions*)pObj;
×
7200

7201
  return 0;
×
7202
}
7203

7204
static const char* jkStreamNotifyOptionsAddrUrls = "AddrUrls";
7205
static const char* jkStreamNotifyOptionsEventType = "EventType";
7206
static const char* jkStreamNotifyOptionsErrorHandle = "ErrorHandle";
7207
static const char* jkStreamNotifyOptionsNotifyHistory = "NotifyHistory";
7208

7209
static int32_t streamNotifyOptionsToJson(const void* pObj, SJson* pJson) {
×
7210
  const SStreamNotifyOptions* pNotifyOption = (const SStreamNotifyOptions*)pObj;
×
7211
  int32_t                     code = nodeListToJson(pJson, jkStreamNotifyOptionsAddrUrls, pNotifyOption->pAddrUrls);
×
7212

7213
  return code;
×
7214
}
7215

7216
static int32_t jsonToStreamNotifyOptions(const SJson* pJson, void* pObj) {
×
7217
  SStreamNotifyOptions* pNotifyOption = (SStreamNotifyOptions*)pObj;
×
7218
  int32_t               code = jsonToNodeList(pJson, jkStreamNotifyOptionsAddrUrls, &pNotifyOption->pAddrUrls);
×
7219
  int32_t               val = 0;
×
7220

7221
  return code;
×
7222
}
7223

7224
static const char* jkColumnReferenceColumnName = "ColumnName";
7225
static const char* jkColumnReferenceRefDbName = "RefDbName";
7226
static const char* jkColumnReferenceRefTableName = "RefTableName";
7227
static const char* jkColumnReferenceRefColumnName = "RefColumnName";
7228
static int32_t     columnReferenceToJson(const void* pObj, SJson* pJson) {
×
7229
  const SColumnRefNode* pNode = (const SColumnRefNode*)pObj;
×
7230
  int32_t               code = tjsonAddStringToObject(pJson, jkColumnReferenceColumnName, pNode->colName);
×
7231
  if (TSDB_CODE_SUCCESS == code) {
×
7232
    code = tjsonAddStringToObject(pJson, jkColumnReferenceRefDbName, pNode->refDbName);
×
7233
  }
7234
  if (TSDB_CODE_SUCCESS == code) {
×
7235
    code = tjsonAddStringToObject(pJson, jkColumnReferenceRefTableName, pNode->refTableName);
×
7236
  }
7237
  if (TSDB_CODE_SUCCESS == code) {
×
7238
    code = tjsonAddStringToObject(pJson, jkColumnReferenceRefColumnName, pNode->refColName);
×
7239
  }
7240
  return code;
×
7241
}
7242

7243
static int32_t jsonToColumnReference(const SJson* pJson, void* pObj) {
×
7244
  SColumnRefNode* pNode = (SColumnRefNode*)pObj;
×
7245

7246
  int32_t code = tjsonGetStringValue(pJson, jkColumnReferenceColumnName, pNode->colName);
×
7247
  if (TSDB_CODE_SUCCESS == code) {
×
7248
    code = tjsonGetStringValue(pJson, jkColumnReferenceRefDbName, pNode->refDbName);
×
7249
  }
7250
  if (TSDB_CODE_SUCCESS == code) {
×
7251
    code = tjsonGetStringValue(pJson, jkColumnReferenceRefTableName, pNode->refTableName);
×
7252
  }
7253
  if (TSDB_CODE_SUCCESS == code) {
×
7254
    code = tjsonGetStringValue(pJson, jkColumnReferenceRefColumnName, pNode->refColName);
×
7255
  }
7256
  return code;
×
7257
}
7258

7259
static const char* jkWhenThenWhen = "When";
7260
static const char* jkWhenThenThen = "Then";
7261

7262
static int32_t whenThenNodeToJson(const void* pObj, SJson* pJson) {
1,193,938✔
7263
  const SWhenThenNode* pNode = (const SWhenThenNode*)pObj;
1,193,938✔
7264

7265
  int32_t code = exprNodeToJson(pObj, pJson);
1,193,938✔
7266
  if (TSDB_CODE_SUCCESS == code) {
1,193,938✔
7267
    code = tjsonAddObject(pJson, jkWhenThenWhen, nodeToJson, pNode->pWhen);
1,193,938✔
7268
  }
7269
  if (TSDB_CODE_SUCCESS == code) {
1,193,938✔
7270
    code = tjsonAddObject(pJson, jkWhenThenThen, nodeToJson, pNode->pThen);
1,193,938✔
7271
  }
7272

7273
  return code;
1,193,938✔
7274
}
7275

7276
static int32_t jsonToWhenThenNode(const SJson* pJson, void* pObj) {
1,035✔
7277
  SWhenThenNode* pNode = (SWhenThenNode*)pObj;
1,035✔
7278

7279
  int32_t code = jsonToExprNode(pJson, pObj);
1,035✔
7280
  if (TSDB_CODE_SUCCESS == code) {
1,035✔
7281
    code = jsonToNodeObject(pJson, jkWhenThenWhen, &pNode->pWhen);
1,035✔
7282
  }
7283
  if (TSDB_CODE_SUCCESS == code) {
1,035✔
7284
    code = jsonToNodeObject(pJson, jkWhenThenThen, &pNode->pThen);
1,035✔
7285
  }
7286

7287
  return code;
1,035✔
7288
}
7289

7290
static const char* jkCaseWhenCase = "Case";
7291
static const char* jkCaseWhenWhenThenList = "WhenThenList";
7292
static const char* jkCaseWhenElse = "Else";
7293

7294
static int32_t caseWhenNodeToJson(const void* pObj, SJson* pJson) {
999,850✔
7295
  const SCaseWhenNode* pNode = (const SCaseWhenNode*)pObj;
999,850✔
7296

7297
  int32_t code = exprNodeToJson(pObj, pJson);
999,850✔
7298
  if (TSDB_CODE_SUCCESS == code) {
999,850✔
7299
    code = tjsonAddObject(pJson, jkCaseWhenCase, nodeToJson, pNode->pCase);
999,850✔
7300
  }
7301
  if (TSDB_CODE_SUCCESS == code) {
999,850✔
7302
    code = nodeListToJson(pJson, jkCaseWhenWhenThenList, pNode->pWhenThenList);
999,850✔
7303
  }
7304
  if (TSDB_CODE_SUCCESS == code) {
999,850✔
7305
    code = tjsonAddObject(pJson, jkCaseWhenElse, nodeToJson, pNode->pElse);
999,850✔
7306
  }
7307

7308
  return code;
999,850✔
7309
}
7310

7311
static int32_t jsonToCaseWhenNode(const SJson* pJson, void* pObj) {
1,035✔
7312
  SCaseWhenNode* pNode = (SCaseWhenNode*)pObj;
1,035✔
7313

7314
  int32_t code = jsonToExprNode(pJson, pObj);
1,035✔
7315
  if (TSDB_CODE_SUCCESS == code) {
1,035✔
7316
    code = jsonToNodeObject(pJson, jkCaseWhenCase, &pNode->pCase);
1,035✔
7317
  }
7318
  if (TSDB_CODE_SUCCESS == code) {
1,035✔
7319
    code = jsonToNodeList(pJson, jkCaseWhenWhenThenList, &pNode->pWhenThenList);
1,035✔
7320
  }
7321
  if (TSDB_CODE_SUCCESS == code) {
1,035✔
7322
    code = jsonToNodeObject(pJson, jkCaseWhenElse, &pNode->pElse);
1,035✔
7323
  }
7324

7325
  return code;
1,035✔
7326
}
7327

7328
static const char* jkDataBlockDescDataBlockId = "DataBlockId";
7329
static const char* jkDataBlockDescSlots = "Slots";
7330
static const char* jkDataBlockTotalRowSize = "TotalRowSize";
7331
static const char* jkDataBlockOutputRowSize = "OutputRowSize";
7332
static const char* jkDataBlockPrecision = "Precision";
7333

7334
static int32_t dataBlockDescNodeToJson(const void* pObj, SJson* pJson) {
891,744,173✔
7335
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
891,744,173✔
7336

7337
  int32_t code = tjsonAddIntegerToObject(pJson, jkDataBlockDescDataBlockId, pNode->dataBlockId);
891,744,173✔
7338
  if (TSDB_CODE_SUCCESS == code) {
891,744,195✔
7339
    code = tjsonAddIntegerToObject(pJson, jkDataBlockTotalRowSize, pNode->totalRowSize);
891,744,195✔
7340
  }
7341
  if (TSDB_CODE_SUCCESS == code) {
891,745,905✔
7342
    code = tjsonAddIntegerToObject(pJson, jkDataBlockOutputRowSize, pNode->outputRowSize);
891,745,905✔
7343
  }
7344
  if (TSDB_CODE_SUCCESS == code) {
891,745,895✔
7345
    code = nodeListToJson(pJson, jkDataBlockDescSlots, pNode->pSlots);
891,745,895✔
7346
  }
7347
  if (TSDB_CODE_SUCCESS == code) {
891,738,126✔
7348
    code = tjsonAddIntegerToObject(pJson, jkDataBlockPrecision, pNode->precision);
891,738,126✔
7349
  }
7350

7351
  return code;
891,746,492✔
7352
}
7353

7354
static int32_t jsonToDataBlockDescNode(const SJson* pJson, void* pObj) {
7,328,641✔
7355
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
7,328,641✔
7356

7357
  int32_t code = tjsonGetSmallIntValue(pJson, jkDataBlockDescDataBlockId, &pNode->dataBlockId);
7,328,641✔
7358
  if (TSDB_CODE_SUCCESS == code) {
7,329,557✔
7359
    code = tjsonGetIntValue(pJson, jkDataBlockTotalRowSize, &pNode->totalRowSize);
7,329,557✔
7360
  }
7361
  if (TSDB_CODE_SUCCESS == code) {
7,329,557✔
7362
    code = tjsonGetIntValue(pJson, jkDataBlockOutputRowSize, &pNode->outputRowSize);
7,329,557✔
7363
  }
7364
  if (TSDB_CODE_SUCCESS == code) {
7,329,557✔
7365
    code = jsonToNodeList(pJson, jkDataBlockDescSlots, &pNode->pSlots);
7,329,557✔
7366
  }
7367
  if (TSDB_CODE_SUCCESS == code) {
7,329,557✔
7368
    code = tjsonGetUTinyIntValue(pJson, jkDataBlockPrecision, &pNode->precision);
7,329,557✔
7369
  }
7370

7371
  return code;
7,329,557✔
7372
}
7373

7374
static const char* jkSetOperatorOpType = "OpType";
7375
static const char* jkSetOperatorProjections = "Projections";
7376
static const char* jkSetOperatorLeft = "Left";
7377
static const char* jkSetOperatorRight = "Right";
7378
static const char* jkSetOperatorOrderByList = "OrderByList";
7379
static const char* jkSetOperatorLimit = "Limit";
7380

7381
static int32_t setOperatorToJson(const void* pObj, SJson* pJson) {
×
7382
  const SSetOperator* pNode = (const SSetOperator*)pObj;
×
7383

7384
  int32_t code = tjsonAddIntegerToObject(pJson, jkSetOperatorOpType, pNode->opType);
×
7385
  if (TSDB_CODE_SUCCESS == code) {
×
7386
    code = nodeListToJson(pJson, jkSetOperatorProjections, pNode->pProjectionList);
×
7387
  }
7388
  if (TSDB_CODE_SUCCESS == code) {
×
7389
    code = tjsonAddObject(pJson, jkSetOperatorLeft, nodeToJson, pNode->pLeft);
×
7390
  }
7391
  if (TSDB_CODE_SUCCESS == code) {
×
7392
    code = tjsonAddObject(pJson, jkSetOperatorRight, nodeToJson, pNode->pRight);
×
7393
  }
7394
  if (TSDB_CODE_SUCCESS == code) {
×
7395
    code = nodeListToJson(pJson, jkSetOperatorOrderByList, pNode->pOrderByList);
×
7396
  }
7397
  if (TSDB_CODE_SUCCESS == code) {
×
7398
    code = tjsonAddObject(pJson, jkSetOperatorLimit, nodeToJson, pNode->pLimit);
×
7399
  }
7400

7401
  return code;
×
7402
}
7403

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

7407
  int32_t code = TSDB_CODE_SUCCESS;
×
7408
  tjsonGetNumberValue(pJson, jkSetOperatorOpType, pNode->opType, code);
×
7409
  if (TSDB_CODE_SUCCESS == code) {
×
7410
    code = jsonToNodeList(pJson, jkSetOperatorProjections, &pNode->pProjectionList);
×
7411
  }
7412
  if (TSDB_CODE_SUCCESS == code) {
×
7413
    code = jsonToNodeObject(pJson, jkSetOperatorLeft, &pNode->pLeft);
×
7414
  }
7415
  if (TSDB_CODE_SUCCESS == code) {
×
7416
    code = jsonToNodeObject(pJson, jkSetOperatorRight, &pNode->pRight);
×
7417
  }
7418
  if (TSDB_CODE_SUCCESS == code) {
×
7419
    code = jsonToNodeList(pJson, jkSetOperatorOrderByList, &pNode->pOrderByList);
×
7420
  }
7421
  if (TSDB_CODE_SUCCESS == code) {
×
7422
    code = jsonToNodeObject(pJson, jkSetOperatorLimit, &pNode->pLimit);
×
7423
  }
7424

7425
  return code;
×
7426
}
7427

7428
static const char* jkTimeRangeStart = "start";
7429
static const char* jkTimeRangeEnd = "end";
7430
static const char* jkTimeRangeNeedCalc = "NeedCalc";
7431

7432
static int32_t timeRangeNodeToJson(const void* pObj, SJson* pJson) {
522,310✔
7433
  const STimeRangeNode* pNode = (const STimeRangeNode*)pObj;
522,310✔
7434

7435
  int32_t code = tjsonAddObject(pJson, jkTimeRangeStart, nodeToJson, pNode->pStart);
522,310✔
7436
  if (TSDB_CODE_SUCCESS == code) {
522,310✔
7437
    code = tjsonAddObject(pJson, jkTimeRangeEnd, nodeToJson, pNode->pEnd);
522,310✔
7438
  }
7439
  if (TSDB_CODE_SUCCESS == code) {
522,310✔
7440
    code = tjsonAddBoolToObject(pJson, jkTimeRangeNeedCalc, pNode->needCalc);
522,310✔
7441
  }
7442
  return code;
522,310✔
7443
}
7444

7445
static int32_t jsonToTimeRangeNode(const SJson* pJson, void* pObj) {
545,669✔
7446
  STimeRangeNode* pNode = (STimeRangeNode*)pObj;
545,669✔
7447

7448
  int32_t code = jsonToNodeObject(pJson, jkTimeRangeStart, &pNode->pStart);
545,669✔
7449
  if (TSDB_CODE_SUCCESS == code) {
545,829✔
7450
    code = jsonToNodeObject(pJson, jkTimeRangeEnd, &pNode->pEnd);
545,669✔
7451
  }
7452
  if (TSDB_CODE_SUCCESS == code) {
545,829✔
7453
    code = tjsonGetBoolValue(pJson, jkTimeRangeNeedCalc, &pNode->needCalc);
545,829✔
7454
  }
7455
  return code;
545,829✔
7456
}
7457

7458
static const char* jkSelectStmtDistinct = "Distinct";
7459
static const char* jkSelectStmtProjections = "Projections";
7460
static const char* jkSelectStmtProjectionsBind = "ProjectionsBind";
7461
static const char* jkSelectStmtFrom = "From";
7462
static const char* jkSelectStmtWhere = "Where";
7463
static const char* jkSelectStmtPartitionBy = "PartitionBy";
7464
static const char* jkSelectStmtTags = "Tags";
7465
static const char* jkSelectStmtSubtable = "Subtable";
7466
static const char* jkSelectStmtWindow = "Window";
7467
static const char* jkSelectStmtGroupBy = "GroupBy";
7468
static const char* jkSelectStmtHaving = "Having";
7469
static const char* jkSelectStmtOrderBy = "OrderBy";
7470
static const char* jkSelectStmtLimit = "Limit";
7471
static const char* jkSelectStmtSlimit = "Slimit";
7472
static const char* jkSelectStmtStmtName = "StmtName";
7473
static const char* jkSelectStmtHasAggFuncs = "HasAggFuncs";
7474
static const char* jkSelectStmtInterpFuncs = "HasInterpFuncs";
7475
static const char* jkSelectStmtInterpFill = "InterpFill";
7476
static const char* jkSelectStmtInterpEvery = "InterpEvery";
7477
static const char* jkSelectStmtTwaOrElapsedFuncs = "HasTwaOrElapsedFuncs";
7478

7479
static int32_t selectStmtToJson(const void* pObj, SJson* pJson) {
100,361✔
7480
  const SSelectStmt* pNode = (const SSelectStmt*)pObj;
100,361✔
7481

7482
  int32_t code = tjsonAddBoolToObject(pJson, jkSelectStmtDistinct, pNode->isDistinct);
100,361✔
7483
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
7484
    code = nodeListToJson(pJson, jkSelectStmtProjections, pNode->pProjectionList);
100,361✔
7485
  }
7486
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
7487
    code = nodeListToJson(pJson, jkSelectStmtProjectionsBind, pNode->pProjectionBindList);
100,361✔
7488
  }
7489
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
7490
    code = tjsonAddObject(pJson, jkSelectStmtFrom, nodeToJson, pNode->pFromTable);
100,361✔
7491
  }
7492
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
7493
    code = tjsonAddObject(pJson, jkSelectStmtWhere, nodeToJson, pNode->pWhere);
100,361✔
7494
  }
7495
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
7496
    code = nodeListToJson(pJson, jkSelectStmtPartitionBy, pNode->pPartitionByList);
100,361✔
7497
  }
7498
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
7499
    code = tjsonAddObject(pJson, jkSelectStmtWindow, nodeToJson, pNode->pWindow);
100,361✔
7500
  }
7501
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
7502
    code = nodeListToJson(pJson, jkSelectStmtGroupBy, pNode->pGroupByList);
100,361✔
7503
  }
7504
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
7505
    code = tjsonAddObject(pJson, jkSelectStmtHaving, nodeToJson, pNode->pHaving);
100,361✔
7506
  }
7507
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
7508
    code = nodeListToJson(pJson, jkSelectStmtOrderBy, pNode->pOrderByList);
100,361✔
7509
  }
7510
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
7511
    code = tjsonAddObject(pJson, jkSelectStmtLimit, nodeToJson, pNode->pLimit);
100,361✔
7512
  }
7513
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
7514
    code = tjsonAddObject(pJson, jkSelectStmtSlimit, nodeToJson, pNode->pSlimit);
100,361✔
7515
  }
7516
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
7517
    code = tjsonAddStringToObject(pJson, jkSelectStmtStmtName, pNode->stmtName);
100,361✔
7518
  }
7519
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
7520
    code = tjsonAddBoolToObject(pJson, jkSelectStmtHasAggFuncs, pNode->hasAggFuncs);
100,361✔
7521
  }
7522
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
7523
    code = tjsonAddBoolToObject(pJson, jkSelectStmtInterpFuncs, pNode->hasInterpFunc);
100,361✔
7524
  }
7525
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
7526
    code = tjsonAddBoolToObject(pJson, jkSelectStmtTwaOrElapsedFuncs, pNode->hasTwaOrElapsedFunc);
100,361✔
7527
  }
7528
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
7529
    code = tjsonAddObject(pJson, jkSelectStmtInterpFill, nodeToJson, pNode->pFill);
100,361✔
7530
  }
7531
  if (TSDB_CODE_SUCCESS == code) {
100,361✔
7532
    code = tjsonAddObject(pJson, jkSelectStmtInterpEvery, nodeToJson, pNode->pEvery);
100,361✔
7533
  }
7534

7535
  return code;
100,361✔
7536
}
7537

7538
static int32_t jsonToSelectStmt(const SJson* pJson, void* pObj) {
90,544✔
7539
  SSelectStmt* pNode = (SSelectStmt*)pObj;
90,544✔
7540

7541
  int32_t code = tjsonGetBoolValue(pJson, jkSelectStmtDistinct, &pNode->isDistinct);
90,544✔
7542
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
7543
    code = jsonToNodeList(pJson, jkSelectStmtProjections, &pNode->pProjectionList);
90,544✔
7544
  }
7545
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
7546
    code = jsonToNodeList(pJson, jkSelectStmtProjectionsBind, &pNode->pProjectionBindList);
90,544✔
7547
  }
7548
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
7549
    code = jsonToNodeObject(pJson, jkSelectStmtFrom, &pNode->pFromTable);
90,544✔
7550
  }
7551
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
7552
    code = jsonToNodeObject(pJson, jkSelectStmtWhere, &pNode->pWhere);
90,544✔
7553
  }
7554
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
7555
    code = jsonToNodeList(pJson, jkSelectStmtPartitionBy, &pNode->pPartitionByList);
90,544✔
7556
  }
7557
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
7558
    code = jsonToNodeObject(pJson, jkSelectStmtWindow, &pNode->pWindow);
90,544✔
7559
  }
7560
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
7561
    code = jsonToNodeList(pJson, jkSelectStmtGroupBy, &pNode->pGroupByList);
90,544✔
7562
  }
7563
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
7564
    code = jsonToNodeObject(pJson, jkSelectStmtHaving, &pNode->pHaving);
90,544✔
7565
  }
7566
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
7567
    code = jsonToNodeList(pJson, jkSelectStmtOrderBy, &pNode->pOrderByList);
90,544✔
7568
  }
7569
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
7570
    code = jsonToNodeObject(pJson, jkSelectStmtLimit, (SNode**)&pNode->pLimit);
90,544✔
7571
  }
7572
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
7573
    code = jsonToNodeObject(pJson, jkSelectStmtSlimit, (SNode**)&pNode->pSlimit);
90,544✔
7574
  }
7575
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
7576
    code = tjsonGetStringValue(pJson, jkSelectStmtStmtName, pNode->stmtName);
90,544✔
7577
  }
7578
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
7579
    code = tjsonGetBoolValue(pJson, jkSelectStmtHasAggFuncs, &pNode->hasAggFuncs);
90,544✔
7580
  }
7581
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
7582
    code = tjsonGetBoolValue(pJson, jkSelectStmtInterpFuncs, &pNode->hasInterpFunc);
90,544✔
7583
  }
7584
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
7585
    code = tjsonGetBoolValue(pJson, jkSelectStmtTwaOrElapsedFuncs, &pNode->hasTwaOrElapsedFunc);
90,544✔
7586
  }
7587
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
7588
    code = jsonToNodeObject(pJson, jkSelectStmtInterpFill, &pNode->pFill);
90,544✔
7589
  }
7590
  if (TSDB_CODE_SUCCESS == code) {
90,544✔
7591
    code = jsonToNodeObject(pJson, jkSelectStmtInterpEvery, &pNode->pEvery);
90,544✔
7592
  }
7593

7594
  return code;
90,544✔
7595
}
7596

7597
static const char* jkVnodeModifyOpStmtSqlNodeType = "SqlNodeType";
7598
static const char* jkVnodeModifyOpStmtTotalRowsNum = "TotalRowsNum";
7599
static const char* jkVnodeModifyOpStmtTotalTbNum = "TotalTbNum";
7600

7601
static int32_t vnodeModifyStmtToJson(const void* pObj, SJson* pJson) {
×
7602
  const SVnodeModifyOpStmt* pNode = (const SVnodeModifyOpStmt*)pObj;
×
7603

7604
  int32_t code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType);
×
7605
  if (TSDB_CODE_SUCCESS == code) {
×
7606
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalRowsNum, pNode->totalRowsNum);
×
7607
  }
7608
  if (TSDB_CODE_SUCCESS == code) {
×
7609
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalTbNum, pNode->totalTbNum);
×
7610
  }
7611

7612
  return code;
×
7613
}
7614

7615
static int32_t jsonToVnodeModifyStmt(const SJson* pJson, void* pObj) {
×
7616
  SVnodeModifyOpStmt* pNode = (SVnodeModifyOpStmt*)pObj;
×
7617

7618
  int32_t code = TSDB_CODE_SUCCESS;
×
7619
  tjsonGetNumberValue(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType, code);
×
7620
  if (TSDB_CODE_SUCCESS == code) {
×
7621
    code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalRowsNum, &pNode->totalRowsNum);
×
7622
  }
7623
  if (TSDB_CODE_SUCCESS == code) {
×
7624
    code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalTbNum, &pNode->totalTbNum);
×
7625
  }
7626

7627
  return code;
×
7628
}
7629

7630
static const char* jkCreateDatabaseStmtDbName = "DbName";
7631
static const char* jkCreateDatabaseStmtIgnoreExists = "IgnoreExists";
7632
static const char* jkCreateDatabaseStmtOptions = "Options";
7633

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

7637
  int32_t code = tjsonAddStringToObject(pJson, jkCreateDatabaseStmtDbName, pNode->dbName);
×
7638
  if (TSDB_CODE_SUCCESS == code) {
×
7639
    code = tjsonAddBoolToObject(pJson, jkCreateDatabaseStmtIgnoreExists, pNode->ignoreExists);
×
7640
  }
7641
  if (TSDB_CODE_SUCCESS == code) {
×
7642
    code = tjsonAddObject(pJson, jkCreateDatabaseStmtOptions, nodeToJson, pNode->pOptions);
×
7643
  }
7644

7645
  return code;
×
7646
}
7647

7648
static int32_t jsonToCreateDatabaseStmt(const SJson* pJson, void* pObj) {
×
7649
  SCreateDatabaseStmt* pNode = (SCreateDatabaseStmt*)pObj;
×
7650

7651
  int32_t code = tjsonGetStringValue(pJson, jkCreateDatabaseStmtDbName, pNode->dbName);
×
7652
  if (TSDB_CODE_SUCCESS == code) {
×
7653
    code = tjsonGetBoolValue(pJson, jkCreateDatabaseStmtIgnoreExists, &pNode->ignoreExists);
×
7654
  }
7655
  if (TSDB_CODE_SUCCESS == code) {
×
7656
    code = jsonToNodeObject(pJson, jkCreateDatabaseStmtOptions, (SNode**)&pNode->pOptions);
×
7657
  }
7658

7659
  return code;
×
7660
}
7661

7662
static const char* jkAlterDatabaseStmtDbName = "DbName";
7663
static const char* jkAlterDatabaseStmtOptions = "Options";
7664

7665
static int32_t alterDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
7666
  const SAlterDatabaseStmt* pNode = (const SAlterDatabaseStmt*)pObj;
×
7667

7668
  int32_t code = tjsonAddStringToObject(pJson, jkAlterDatabaseStmtDbName, pNode->dbName);
×
7669
  if (TSDB_CODE_SUCCESS == code) {
×
7670
    code = tjsonAddObject(pJson, jkAlterDatabaseStmtOptions, nodeToJson, pNode->pOptions);
×
7671
  }
7672

7673
  return code;
×
7674
}
7675

7676
static int32_t jsonToAlterDatabaseStmt(const SJson* pJson, void* pObj) {
×
7677
  SAlterDatabaseStmt* pNode = (SAlterDatabaseStmt*)pObj;
×
7678

7679
  int32_t code = tjsonGetStringValue(pJson, jkAlterDatabaseStmtDbName, pNode->dbName);
×
7680
  if (TSDB_CODE_SUCCESS == code) {
×
7681
    code = jsonToNodeObject(pJson, jkAlterDatabaseStmtOptions, (SNode**)&pNode->pOptions);
×
7682
  }
7683

7684
  return code;
×
7685
}
7686

7687
static const char* jkTrimDatabaseStmtDbName = "DbName";
7688
static const char* jkTrimDatabaseStmtMaxSpeed = "MaxSpeed";
7689

7690
static int32_t trimDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
7691
  const STrimDatabaseStmt* pNode = (const STrimDatabaseStmt*)pObj;
×
7692

7693
  int32_t code = tjsonAddStringToObject(pJson, jkTrimDatabaseStmtDbName, pNode->dbName);
×
7694
  if (TSDB_CODE_SUCCESS == code) {
×
7695
    code = tjsonAddIntegerToObject(pJson, jkTrimDatabaseStmtMaxSpeed, pNode->maxSpeed);
×
7696
  }
7697

7698
  return code;
×
7699
}
7700

7701
static int32_t jsonToTrimDatabaseStmt(const SJson* pJson, void* pObj) {
×
7702
  STrimDatabaseStmt* pNode = (STrimDatabaseStmt*)pObj;
×
7703

7704
  int32_t code = tjsonGetStringValue(pJson, jkTrimDatabaseStmtDbName, pNode->dbName);
×
7705
  if (TSDB_CODE_SUCCESS == code) {
×
7706
    code = tjsonGetIntValue(pJson, jkTrimDatabaseStmtMaxSpeed, &pNode->maxSpeed);
×
7707
  }
7708

7709
  return code;
×
7710
}
7711

7712
static const char* jkSsMigrateDatabaseStmtDbName = "DbName";
7713

7714
static int32_t ssMigrateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
7715
  const SSsMigrateDatabaseStmt* pNode = (const SSsMigrateDatabaseStmt*)pObj;
×
7716

7717
  int32_t code = tjsonAddStringToObject(pJson, jkSsMigrateDatabaseStmtDbName, pNode->dbName);
×
7718

7719
  return code;
×
7720
}
7721

7722
static int32_t jsonToSsMigrateDatabaseStmt(const SJson* pJson, void* pObj) {
×
7723
  SSsMigrateDatabaseStmt* pNode = (SSsMigrateDatabaseStmt*)pObj;
×
7724

7725
  int32_t code = tjsonGetStringValue(pJson, jkSsMigrateDatabaseStmtDbName, pNode->dbName);
×
7726

7727
  return code;
×
7728
}
7729

7730
static const char* jkMountStmtMountName = "MountName";
7731
static const char* jkMountStmtIgnoreExists = "IgnoreExists";
7732
static const char* jkMountStmtIgnoreNotExists = "IgnoreNotExists";
7733
static const char* jkMountStmtDnode = "Dnode";
7734
static const char* jkMountStmtMountPath = "MountPath";
7735

7736
static int32_t createMountStmtToJson(const void* pObj, SJson* pJson) {
×
7737
  const SCreateMountStmt* pNode = (const SCreateMountStmt*)pObj;
×
7738

7739
  int32_t code = tjsonAddStringToObject(pJson, jkMountStmtMountName, pNode->mountName);
×
7740
  if (TSDB_CODE_SUCCESS == code) {
×
7741
    code = tjsonAddBoolToObject(pJson, jkMountStmtIgnoreExists, pNode->ignoreExists);
×
7742
  }
7743
  if (TSDB_CODE_SUCCESS == code) {
×
7744
    code = tjsonAddIntegerToObject(pJson, jkMountStmtDnode, pNode->dnodeId);
×
7745
  }
7746
  if (TSDB_CODE_SUCCESS == code) {
×
7747
    code = tjsonAddStringToObject(pJson, jkMountStmtMountPath, pNode->mountPath);
×
7748
  }
7749

7750
  return code;
×
7751
}
7752

7753
static int32_t jsonToCreateMountStmt(const SJson* pJson, void* pObj) {
×
7754
  SCreateMountStmt* pNode = (SCreateMountStmt*)pObj;
×
7755

7756
  int32_t code = tjsonGetStringValue(pJson, jkMountStmtMountName, pNode->mountName);
×
7757
  if (TSDB_CODE_SUCCESS == code) {
×
7758
    code = tjsonGetBoolValue(pJson, jkMountStmtIgnoreExists, &pNode->ignoreExists);
×
7759
  }
7760
  if (TSDB_CODE_SUCCESS == code) {
×
7761
    code = tjsonGetIntValue(pJson, jkMountStmtDnode, &pNode->dnodeId);
×
7762
  }
7763
  if (TSDB_CODE_SUCCESS == code) {
×
7764
    code = tjsonGetStringValue(pJson, jkMountStmtMountPath, pNode->mountPath);
×
7765
  }
7766

7767
  return code;
×
7768
}
7769

7770
static int32_t dropMountStmtToJson(const void* pObj, SJson* pJson) {
×
7771
  const SDropMountStmt* pNode = (const SDropMountStmt*)pObj;
×
7772

7773
  int32_t code = tjsonAddStringToObject(pJson, jkMountStmtMountName, pNode->mountName);
×
7774
  if (TSDB_CODE_SUCCESS == code) {
×
7775
    code = tjsonAddBoolToObject(pJson, jkMountStmtIgnoreNotExists, pNode->ignoreNotExists);
×
7776
  }
7777
  return code;
×
7778
}
7779

7780
static int32_t jsonToDropMountStmt(const SJson* pJson, void* pObj) {
×
7781
  SDropMountStmt* pNode = (SDropMountStmt*)pObj;
×
7782

7783
  int32_t code = tjsonGetStringValue(pJson, jkMountStmtMountName, pNode->mountName);
×
7784
  if (TSDB_CODE_SUCCESS == code) {
×
7785
    code = tjsonGetBoolValue(pJson, jkMountStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7786
  }
7787
  return code;
×
7788
}
7789

7790
static const char* jkCreateTableStmtDbName = "DbName";
7791
static const char* jkCreateTableStmtTableName = "TableName";
7792
static const char* jkCreateTableStmtIgnoreExists = "IgnoreExists";
7793
static const char* jkCreateTableStmtCols = "Cols";
7794
static const char* jkCreateTableStmtTags = "Tags";
7795
static const char* jkCreateTableStmtOptions = "Options";
7796

7797
static int32_t createTableStmtToJson(const void* pObj, SJson* pJson) {
×
7798
  const SCreateTableStmt* pNode = (const SCreateTableStmt*)pObj;
×
7799

7800
  int32_t code = tjsonAddStringToObject(pJson, jkCreateTableStmtDbName, pNode->dbName);
×
7801
  if (TSDB_CODE_SUCCESS == code) {
×
7802
    code = tjsonAddStringToObject(pJson, jkCreateTableStmtTableName, pNode->tableName);
×
7803
  }
7804
  if (TSDB_CODE_SUCCESS == code) {
×
7805
    code = tjsonAddBoolToObject(pJson, jkCreateTableStmtIgnoreExists, pNode->ignoreExists);
×
7806
  }
7807
  if (TSDB_CODE_SUCCESS == code) {
×
7808
    code = nodeListToJson(pJson, jkCreateTableStmtCols, pNode->pCols);
×
7809
  }
7810
  if (TSDB_CODE_SUCCESS == code) {
×
7811
    code = nodeListToJson(pJson, jkCreateTableStmtTags, pNode->pTags);
×
7812
  }
7813
  if (TSDB_CODE_SUCCESS == code) {
×
7814
    code = tjsonAddObject(pJson, jkCreateTableStmtOptions, nodeToJson, pNode->pOptions);
×
7815
  }
7816

7817
  return code;
×
7818
}
7819

7820
static int32_t jsonToCreateTableStmt(const SJson* pJson, void* pObj) {
×
7821
  SCreateTableStmt* pNode = (SCreateTableStmt*)pObj;
×
7822

7823
  int32_t code = tjsonGetStringValue(pJson, jkCreateTableStmtDbName, pNode->dbName);
×
7824
  if (TSDB_CODE_SUCCESS == code) {
×
7825
    code = tjsonGetStringValue(pJson, jkCreateTableStmtTableName, pNode->tableName);
×
7826
  }
7827
  if (TSDB_CODE_SUCCESS == code) {
×
7828
    code = tjsonGetBoolValue(pJson, jkCreateTableStmtIgnoreExists, &pNode->ignoreExists);
×
7829
  }
7830
  if (TSDB_CODE_SUCCESS == code) {
×
7831
    code = jsonToNodeList(pJson, jkCreateTableStmtCols, &pNode->pCols);
×
7832
  }
7833
  if (TSDB_CODE_SUCCESS == code) {
×
7834
    code = jsonToNodeList(pJson, jkCreateTableStmtTags, &pNode->pTags);
×
7835
  }
7836
  if (TSDB_CODE_SUCCESS == code) {
×
7837
    code = jsonToNodeObject(pJson, jkCreateTableStmtOptions, (SNode**)&pNode->pOptions);
×
7838
  }
7839

7840
  return code;
×
7841
}
7842

7843
static const char* jkCreateSubTableClauseDbName = "DbName";
7844
static const char* jkCreateSubTableClauseTableName = "TableName";
7845
static const char* jkCreateSubTableClauseUseDbName = "UseDbName";
7846
static const char* jkCreateSubTableClauseUseTableName = "UseTableName";
7847
static const char* jkCreateSubTableClauseIgnoreExists = "IgnoreExists";
7848
static const char* jkCreateSubTableClauseSpecificTags = "SpecificTags";
7849
static const char* jkCreateSubTableClauseValsOfTags = "ValsOfTags";
7850
static const char* jkCreateSubTableClauseOptions = "Options";
7851

7852
static int32_t createSubTableClauseToJson(const void* pObj, SJson* pJson) {
×
7853
  const SCreateSubTableClause* pNode = (const SCreateSubTableClause*)pObj;
×
7854

7855
  int32_t code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseDbName, pNode->dbName);
×
7856
  if (TSDB_CODE_SUCCESS == code) {
×
7857
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseTableName, pNode->tableName);
×
7858
  }
7859
  if (TSDB_CODE_SUCCESS == code) {
×
7860
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseUseDbName, pNode->useDbName);
×
7861
  }
7862
  if (TSDB_CODE_SUCCESS == code) {
×
7863
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseUseTableName, pNode->useTableName);
×
7864
  }
7865
  if (TSDB_CODE_SUCCESS == code) {
×
7866
    code = tjsonAddBoolToObject(pJson, jkCreateSubTableClauseIgnoreExists, pNode->ignoreExists);
×
7867
  }
7868
  if (TSDB_CODE_SUCCESS == code) {
×
7869
    code = nodeListToJson(pJson, jkCreateSubTableClauseSpecificTags, pNode->pSpecificTags);
×
7870
  }
7871
  if (TSDB_CODE_SUCCESS == code) {
×
7872
    code = nodeListToJson(pJson, jkCreateSubTableClauseValsOfTags, pNode->pValsOfTags);
×
7873
  }
7874
  if (TSDB_CODE_SUCCESS == code) {
×
7875
    code = tjsonAddObject(pJson, jkCreateSubTableClauseOptions, nodeToJson, pNode->pOptions);
×
7876
  }
7877

7878
  return code;
×
7879
}
7880

7881
static int32_t jsonToCreateSubTableClause(const SJson* pJson, void* pObj) {
×
7882
  SCreateSubTableClause* pNode = (SCreateSubTableClause*)pObj;
×
7883

7884
  int32_t code = tjsonGetStringValue(pJson, jkCreateSubTableClauseDbName, pNode->dbName);
×
7885
  if (TSDB_CODE_SUCCESS == code) {
×
7886
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseTableName, pNode->tableName);
×
7887
  }
7888
  if (TSDB_CODE_SUCCESS == code) {
×
7889
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseUseDbName, pNode->useDbName);
×
7890
  }
7891
  if (TSDB_CODE_SUCCESS == code) {
×
7892
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseUseTableName, pNode->useTableName);
×
7893
  }
7894
  if (TSDB_CODE_SUCCESS == code) {
×
7895
    code = tjsonGetBoolValue(pJson, jkCreateSubTableClauseIgnoreExists, &pNode->ignoreExists);
×
7896
  }
7897
  if (TSDB_CODE_SUCCESS == code) {
×
7898
    code = jsonToNodeList(pJson, jkCreateSubTableClauseSpecificTags, &pNode->pSpecificTags);
×
7899
  }
7900
  if (TSDB_CODE_SUCCESS == code) {
×
7901
    code = jsonToNodeList(pJson, jkCreateSubTableClauseValsOfTags, &pNode->pValsOfTags);
×
7902
  }
7903
  if (TSDB_CODE_SUCCESS == code) {
×
7904
    code = jsonToNodeObject(pJson, jkCreateSubTableClauseOptions, (SNode**)&pNode->pOptions);
×
7905
  }
7906

7907
  return code;
×
7908
}
7909

7910
static const char* jkCreateMultiTablesStmtSubTables = "SubTables";
7911

7912
static int32_t createMultiTablesStmtToJson(const void* pObj, SJson* pJson) {
×
7913
  const SCreateMultiTablesStmt* pNode = (const SCreateMultiTablesStmt*)pObj;
×
7914
  return nodeListToJson(pJson, jkCreateMultiTablesStmtSubTables, pNode->pSubTables);
×
7915
}
7916

7917
static int32_t jsonToCreateMultiTablesStmt(const SJson* pJson, void* pObj) {
×
7918
  SCreateMultiTablesStmt* pNode = (SCreateMultiTablesStmt*)pObj;
×
7919
  return jsonToNodeList(pJson, jkCreateMultiTablesStmtSubTables, &pNode->pSubTables);
×
7920
}
7921

7922
static const char* jkCreateVTableStmtDbName = "DbName";
7923
static const char* jkCreateVTableStmtTableName = "TableName";
7924
static const char* jkCreateVTableStmtIgnoreExists = "IgnoreExists";
7925
static const char* jkCreateVTableStmtCols = "Cols";
7926

7927
static int32_t createVTableStmtToJson(const void* pObj, SJson* pJson) {
×
7928
  const SCreateVTableStmt* pNode = (const SCreateVTableStmt*)pObj;
×
7929

7930
  int32_t code = tjsonAddStringToObject(pJson, jkCreateVTableStmtDbName, pNode->dbName);
×
7931
  if (TSDB_CODE_SUCCESS == code) {
×
7932
    code = tjsonAddStringToObject(pJson, jkCreateVTableStmtTableName, pNode->tableName);
×
7933
  }
7934
  if (TSDB_CODE_SUCCESS == code) {
×
7935
    code = tjsonAddBoolToObject(pJson, jkCreateVTableStmtIgnoreExists, pNode->ignoreExists);
×
7936
  }
7937
  if (TSDB_CODE_SUCCESS == code) {
×
7938
    code = nodeListToJson(pJson, jkCreateVTableStmtCols, pNode->pCols);
×
7939
  }
7940
  return code;
×
7941
}
7942

7943

7944
static int32_t jsonToCreateVTableStmt(const SJson* pJson, void* pObj) {
×
7945
  SCreateVTableStmt* pNode = (SCreateVTableStmt*)pObj;
×
7946

7947
  int32_t code = tjsonGetStringValue(pJson, jkCreateTableStmtDbName, pNode->dbName);
×
7948
  if (TSDB_CODE_SUCCESS == code) {
×
7949
    code = tjsonGetStringValue(pJson, jkCreateTableStmtTableName, pNode->tableName);
×
7950
  }
7951
  if (TSDB_CODE_SUCCESS == code) {
×
7952
    code = tjsonGetBoolValue(pJson, jkCreateTableStmtIgnoreExists, &pNode->ignoreExists);
×
7953
  }
7954
  if (TSDB_CODE_SUCCESS == code) {
×
7955
    code = jsonToNodeList(pJson, jkCreateTableStmtCols, &pNode->pCols);
×
7956
  }
7957
  return code;
×
7958
}
7959

7960
static const char* jkCreateVSubTableStmtDbName = "DbName";
7961
static const char* jkCreateVSubTableStmtTableName = "TableName";
7962
static const char* jkCreateVSubTableStmtUseDbName = "UseDbName";
7963
static const char* jkCreateVSubTableStmtUseTableName = "UseTableName";
7964
static const char* jkCreateVSubTableStmtIgnoreExists = "IgnoreExists";
7965
static const char* jkCreateVSubTableStmtSpecificTags = "SpecificTags";
7966
static const char* jkCreateVSubTableStmtValsOfTags = "ValsOfTags";
7967
static const char* jkCreateVSubTableStmtSpecificColRefs = "SpecificColRefs";
7968
static const char* jkCreateVSubTableStmtValsOfColRefs = "ValsOfColRefs";
7969

7970
static int32_t createVSubTableStmtToJson(const void* pObj, SJson* pJson) {
×
7971
  const SCreateVSubTableStmt* pNode = (const SCreateVSubTableStmt*)pObj;
×
7972

7973
  int32_t code = tjsonAddStringToObject(pJson, jkCreateVSubTableStmtDbName, pNode->dbName);
×
7974
  if (TSDB_CODE_SUCCESS == code) {
×
7975
    code = tjsonAddStringToObject(pJson, jkCreateVSubTableStmtTableName, pNode->tableName);
×
7976
  }
7977
  if (TSDB_CODE_SUCCESS == code) {
×
7978
    code = tjsonAddStringToObject(pJson, jkCreateVSubTableStmtUseDbName, pNode->useDbName);
×
7979
  }
7980
  if (TSDB_CODE_SUCCESS == code) {
×
7981
    code = tjsonAddStringToObject(pJson, jkCreateVSubTableStmtUseTableName, pNode->useTableName);
×
7982
  }
7983
  if (TSDB_CODE_SUCCESS == code) {
×
7984
    code = tjsonAddBoolToObject(pJson, jkCreateVSubTableStmtIgnoreExists, pNode->ignoreExists);
×
7985
  }
7986
  if (TSDB_CODE_SUCCESS == code) {
×
7987
    code = nodeListToJson(pJson, jkCreateVSubTableStmtSpecificTags, pNode->pSpecificTags);
×
7988
  }
7989
  if (TSDB_CODE_SUCCESS == code) {
×
7990
    code = nodeListToJson(pJson, jkCreateVSubTableStmtValsOfTags, pNode->pValsOfTags);
×
7991
  }
7992
  if (TSDB_CODE_SUCCESS == code) {
×
7993
    code = nodeListToJson(pJson, jkCreateVSubTableStmtSpecificColRefs, pNode->pSpecificColRefs);
×
7994
  }
7995
  if (TSDB_CODE_SUCCESS == code) {
×
7996
    code = nodeListToJson(pJson, jkCreateVSubTableStmtValsOfColRefs, pNode->pColRefs);
×
7997
  }
7998
  return code;
×
7999
}
8000

8001
static int32_t jsonToCreateVSubTableStmt(const SJson* pJson, void* pObj) {
×
8002
  SCreateVSubTableStmt* pNode = (SCreateVSubTableStmt*)pObj;
×
8003

8004
  int32_t code = tjsonGetStringValue(pJson, jkCreateVSubTableStmtDbName, pNode->dbName);
×
8005
  if (TSDB_CODE_SUCCESS == code) {
×
8006
    code = tjsonGetStringValue(pJson, jkCreateVSubTableStmtTableName, pNode->tableName);
×
8007
  }
8008
  if (TSDB_CODE_SUCCESS == code) {
×
8009
    code = tjsonGetStringValue(pJson, jkCreateVSubTableStmtUseDbName, pNode->useDbName);
×
8010
  }
8011
  if (TSDB_CODE_SUCCESS == code) {
×
8012
    code = tjsonGetStringValue(pJson, jkCreateVSubTableStmtUseTableName, pNode->useTableName);
×
8013
  }
8014
  if (TSDB_CODE_SUCCESS == code) {
×
8015
    code = tjsonGetBoolValue(pJson, jkCreateVSubTableStmtIgnoreExists, &pNode->ignoreExists);
×
8016
  }
8017
  if (TSDB_CODE_SUCCESS == code) {
×
8018
    code = jsonToNodeList(pJson, jkCreateVSubTableStmtSpecificTags, &pNode->pSpecificTags);
×
8019
  }
8020
  if (TSDB_CODE_SUCCESS == code) {
×
8021
    code = jsonToNodeList(pJson, jkCreateVSubTableStmtValsOfTags, &pNode->pValsOfTags);
×
8022
  }
8023
  if (TSDB_CODE_SUCCESS == code) {
×
8024
    code = jsonToNodeList(pJson, jkCreateVSubTableStmtSpecificColRefs, &pNode->pSpecificColRefs);
×
8025
  }
8026
  if (TSDB_CODE_SUCCESS == code) {
×
8027
    code = jsonToNodeList(pJson, jkCreateVSubTableStmtValsOfColRefs, &pNode->pColRefs);
×
8028
  }
8029

8030
  return code;
×
8031
}
8032

8033
static const char* jkDropTableClauseDbName = "DbName";
8034
static const char* jkDropTableClauseTableName = "TableName";
8035
static const char* jkDropTableClauseIgnoreNotExists = "IgnoreNotExists";
8036

8037
static int32_t dropTableClauseToJson(const void* pObj, SJson* pJson) {
×
8038
  const SDropTableClause* pNode = (const SDropTableClause*)pObj;
×
8039

8040
  int32_t code = tjsonAddStringToObject(pJson, jkDropTableClauseDbName, pNode->dbName);
×
8041
  if (TSDB_CODE_SUCCESS == code) {
×
8042
    code = tjsonAddStringToObject(pJson, jkDropTableClauseTableName, pNode->tableName);
×
8043
  }
8044
  if (TSDB_CODE_SUCCESS == code) {
×
8045
    code = tjsonAddBoolToObject(pJson, jkDropTableClauseIgnoreNotExists, pNode->ignoreNotExists);
×
8046
  }
8047

8048
  return code;
×
8049
}
8050

8051
static int32_t jsonToDropTableClause(const SJson* pJson, void* pObj) {
×
8052
  SDropTableClause* pNode = (SDropTableClause*)pObj;
×
8053

8054
  int32_t code = tjsonGetStringValue(pJson, jkDropTableClauseDbName, pNode->dbName);
×
8055
  if (TSDB_CODE_SUCCESS == code) {
×
8056
    code = tjsonGetStringValue(pJson, jkDropTableClauseTableName, pNode->tableName);
×
8057
  }
8058
  if (TSDB_CODE_SUCCESS == code) {
×
8059
    code = tjsonGetBoolValue(pJson, jkDropTableClauseIgnoreNotExists, &pNode->ignoreNotExists);
×
8060
  }
8061

8062
  return code;
×
8063
}
8064

8065
static const char* jkDropTableStmtTables = "Tables";
8066

8067
static int32_t dropTableStmtToJson(const void* pObj, SJson* pJson) {
×
8068
  const SDropTableStmt* pNode = (const SDropTableStmt*)pObj;
×
8069
  return nodeListToJson(pJson, jkDropTableStmtTables, pNode->pTables);
×
8070
}
8071

8072
static int32_t jsonToDropTableStmt(const SJson* pJson, void* pObj) {
×
8073
  SDropTableStmt* pNode = (SDropTableStmt*)pObj;
×
8074
  return jsonToNodeList(pJson, jkDropTableStmtTables, &pNode->pTables);
×
8075
}
8076

8077
static const char* jkDropSuperTableStmtDbName = "DbName";
8078
static const char* jkDropSuperTableStmtTableName = "TableName";
8079
static const char* jkDropSuperTableStmtIgnoreNotExists = "IgnoreNotExists";
8080
static const char* jkDropSuperTableStmtwithOpt = "withOpt";
8081

8082
static int32_t dropStableStmtToJson(const void* pObj, SJson* pJson) {
×
8083
  const SDropSuperTableStmt* pNode = (const SDropSuperTableStmt*)pObj;
×
8084

8085
  int32_t code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
×
8086
  if (TSDB_CODE_SUCCESS == code) {
×
8087
    code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtTableName, pNode->tableName);
×
8088
  }
8089
  if (TSDB_CODE_SUCCESS == code) {
×
8090
    code = tjsonAddBoolToObject(pJson, jkDropSuperTableStmtIgnoreNotExists, pNode->ignoreNotExists);
×
8091
  }
8092
  if (TSDB_CODE_SUCCESS == code) {
×
8093
    code = tjsonAddBoolToObject(pJson, jkDropSuperTableStmtwithOpt, pNode->withOpt);
×
8094
  }
8095

8096
  return code;
×
8097
}
8098

8099
static int32_t jsonToDropStableStmt(const SJson* pJson, void* pObj) {
×
8100
  SDropSuperTableStmt* pNode = (SDropSuperTableStmt*)pObj;
×
8101

8102
  int32_t code = tjsonGetStringValue(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
×
8103
  if (TSDB_CODE_SUCCESS == code) {
×
8104
    code = tjsonGetStringValue(pJson, jkDropSuperTableStmtTableName, pNode->tableName);
×
8105
  }
8106
  if (TSDB_CODE_SUCCESS == code) {
×
8107
    code = tjsonGetBoolValue(pJson, jkDropSuperTableStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
8108
  }
8109
  if (TSDB_CODE_SUCCESS == code) {
×
8110
    code = tjsonGetBoolValue(pJson, jkDropSuperTableStmtwithOpt, &pNode->withOpt);
×
8111
  }
8112

8113
  return code;
×
8114
}
8115

8116
static const char* jkDropVirtualTableStmtDbName = "DbName";
8117
static const char* jkDropVirtualTableStmtTableName = "TableName";
8118
static const char* jkDropVirtualTableStmtIgnoreNotExists = "IgnoreNotExists";
8119
static const char* jkDropVirtualTableStmtwithOpt = "withOpt";
8120

8121
static int32_t dropVtableStmtToJson(const void* pObj, SJson* pJson) {
×
8122
  const SDropVirtualTableStmt* pNode = (const SDropVirtualTableStmt*)pObj;
×
8123

8124
  int32_t code = tjsonAddStringToObject(pJson, jkDropVirtualTableStmtDbName, pNode->dbName);
×
8125
  if (TSDB_CODE_SUCCESS == code) {
×
8126
    code = tjsonAddStringToObject(pJson, jkDropVirtualTableStmtTableName, pNode->tableName);
×
8127
  }
8128
  if (TSDB_CODE_SUCCESS == code) {
×
8129
    code = tjsonAddBoolToObject(pJson, jkDropVirtualTableStmtIgnoreNotExists, pNode->ignoreNotExists);
×
8130
  }
8131
  if (TSDB_CODE_SUCCESS == code) {
×
8132
    code = tjsonAddBoolToObject(pJson, jkDropVirtualTableStmtwithOpt, pNode->withOpt);
×
8133
  }
8134

8135
  return code;
×
8136
}
8137

8138
static int32_t jsonToDropVtableStmt(const SJson* pJson, void* pObj) {
×
8139
  SDropVirtualTableStmt* pNode = (SDropVirtualTableStmt*)pObj;
×
8140

8141
  int32_t code = tjsonGetStringValue(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
×
8142
  if (TSDB_CODE_SUCCESS == code) {
×
8143
    code = tjsonGetStringValue(pJson, jkDropVirtualTableStmtTableName, pNode->tableName);
×
8144
  }
8145
  if (TSDB_CODE_SUCCESS == code) {
×
8146
    code = tjsonGetBoolValue(pJson, jkDropVirtualTableStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
8147
  }
8148
  if (TSDB_CODE_SUCCESS == code) {
×
8149
    code = tjsonGetBoolValue(pJson, jkDropVirtualTableStmtwithOpt, &pNode->withOpt);
×
8150
  }
8151

8152
  return code;
×
8153
}
8154

8155
static const char* jkAlterTableStmtDbName = "DbName";
8156
static const char* jkAlterTableStmtTableName = "TableName";
8157
static const char* jkAlterTableStmtAlterType = "AlterType";
8158
static const char* jkAlterTableStmtColName = "ColName";
8159
static const char* jkAlterTableStmtNewColName = "NewColName";
8160
static const char* jkAlterTableStmtOptions = "Options";
8161
static const char* jkAlterTableStmtNewDataType = "NewDataType";
8162
static const char* jkAlterTableStmtNewTagVal = "NewTagVal";
8163

8164
static int32_t alterTableStmtToJson(const void* pObj, SJson* pJson) {
×
8165
  const SAlterTableStmt* pNode = (const SAlterTableStmt*)pObj;
×
8166

8167
  int32_t code = tjsonAddStringToObject(pJson, jkAlterTableStmtDbName, pNode->dbName);
×
8168
  if (TSDB_CODE_SUCCESS == code) {
×
8169
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtTableName, pNode->tableName);
×
8170
  }
8171
  if (TSDB_CODE_SUCCESS == code) {
×
8172
    code = tjsonAddIntegerToObject(pJson, jkAlterTableStmtAlterType, pNode->alterType);
×
8173
  }
8174
  if (TSDB_CODE_SUCCESS == code) {
×
8175
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtColName, pNode->colName);
×
8176
  }
8177
  if (TSDB_CODE_SUCCESS == code) {
×
8178
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtNewColName, pNode->newColName);
×
8179
  }
8180
  if (TSDB_CODE_SUCCESS == code) {
×
8181
    code = tjsonAddObject(pJson, jkAlterTableStmtOptions, nodeToJson, pNode->pOptions);
×
8182
  }
8183
  if (TSDB_CODE_SUCCESS == code) {
×
8184
    code = tjsonAddObject(pJson, jkAlterTableStmtNewDataType, dataTypeToJson, &pNode->dataType);
×
8185
  }
8186
  if (TSDB_CODE_SUCCESS == code) {
×
8187
    code = tjsonAddObject(pJson, jkAlterTableStmtOptions, nodeToJson, pNode->pVal);
×
8188
  }
8189

8190
  return code;
×
8191
}
8192

8193
static int32_t jsonToAlterTableStmt(const SJson* pJson, void* pObj) {
×
8194
  SAlterTableStmt* pNode = (SAlterTableStmt*)pObj;
×
8195

8196
  int32_t code = tjsonGetStringValue(pJson, jkAlterTableStmtDbName, pNode->dbName);
×
8197
  if (TSDB_CODE_SUCCESS == code) {
×
8198
    code = tjsonGetStringValue(pJson, jkAlterTableStmtTableName, pNode->tableName);
×
8199
  }
8200
  if (TSDB_CODE_SUCCESS == code) {
×
8201
    code = tjsonGetTinyIntValue(pJson, jkAlterTableStmtAlterType, &pNode->alterType);
×
8202
  }
8203
  if (TSDB_CODE_SUCCESS == code) {
×
8204
    code = tjsonGetStringValue(pJson, jkAlterTableStmtColName, pNode->colName);
×
8205
  }
8206
  if (TSDB_CODE_SUCCESS == code) {
×
8207
    code = tjsonGetStringValue(pJson, jkAlterTableStmtNewColName, pNode->newColName);
×
8208
  }
8209
  if (TSDB_CODE_SUCCESS == code) {
×
8210
    code = jsonToNodeObject(pJson, jkAlterTableStmtOptions, (SNode**)&pNode->pOptions);
×
8211
  }
8212
  if (TSDB_CODE_SUCCESS == code) {
×
8213
    code = tjsonToObject(pJson, jkAlterTableStmtNewDataType, jsonToDataType, &pNode->dataType);
×
8214
  }
8215
  if (TSDB_CODE_SUCCESS == code) {
×
8216
    code = jsonToNodeObject(pJson, jkAlterTableStmtOptions, (SNode**)&pNode->pVal);
×
8217
  }
8218

8219
  return code;
×
8220
}
8221

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

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

8226
static const char* jkCreateUserStmtUserName = "UserName";
8227
static const char* jkCreateUserStmtPassword = "Password";
8228
static const char* jkCreateUserStmtSysinfo = "Sysinfo";
8229

8230
static int32_t createUserStmtToJson(const void* pObj, SJson* pJson) {
×
8231
  const SCreateUserStmt* pNode = (const SCreateUserStmt*)pObj;
×
8232

8233
  int32_t code = tjsonAddStringToObject(pJson, jkCreateUserStmtUserName, pNode->userName);
×
8234
  if (TSDB_CODE_SUCCESS == code) {
×
8235
    code = tjsonAddStringToObject(pJson, jkCreateUserStmtPassword, pNode->password);
×
8236
  }
8237
  if (TSDB_CODE_SUCCESS == code) {
×
8238
    code = tjsonAddIntegerToObject(pJson, jkCreateUserStmtSysinfo, pNode->sysinfo);
×
8239
  }
8240

8241
  return code;
×
8242
}
8243

8244
static int32_t createEncryptAlgrStmtToJson(const void* pObj, SJson* pJson) {
×
8245
  const SCreateEncryptAlgrStmt* pNode = (const SCreateEncryptAlgrStmt*)pObj;
×
8246

8247
  int32_t code = tjsonAddStringToObject(pJson, "algorithm_id", pNode->algorithmId);
×
8248
  if (TSDB_CODE_SUCCESS == code) {
×
8249
    code = tjsonAddStringToObject(pJson, "name", pNode->name);
×
8250
  }
8251
  if (TSDB_CODE_SUCCESS == code) {
×
8252
    code = tjsonAddStringToObject(pJson, "desc", pNode->desc);
×
8253
  }
8254
  if (TSDB_CODE_SUCCESS == code) {
×
8255
    code = tjsonAddStringToObject(pJson, "type", pNode->algrType);
×
8256
  }
8257
  if (TSDB_CODE_SUCCESS == code) {
×
8258
    code = tjsonAddStringToObject(pJson, "ossl_algr_name", pNode->osslAlgrName);
×
8259
  }
8260

8261
  return code;
×
8262
}
8263

8264
static int32_t jsonToCreateUserStmt(const SJson* pJson, void* pObj) {
×
8265
  SCreateUserStmt* pNode = (SCreateUserStmt*)pObj;
×
8266

8267
  int32_t code = tjsonGetStringValue(pJson, jkCreateUserStmtUserName, pNode->userName);
×
8268
  if (TSDB_CODE_SUCCESS == code) {
×
8269
    code = tjsonGetStringValue(pJson, jkCreateUserStmtPassword, pNode->password);
×
8270
  }
8271
  if (TSDB_CODE_SUCCESS == code) {
×
8272
    code = tjsonGetTinyIntValue(pJson, jkCreateUserStmtSysinfo, &pNode->sysinfo);
×
8273
  }
8274

8275
  return code;
×
8276
}
8277

8278
static int32_t jsonToCreateEncryptAlgrStmt(const SJson* pJson, void* pObj) {
×
8279
  SCreateEncryptAlgrStmt* pNode = (SCreateEncryptAlgrStmt*)pObj;
×
8280

8281
  int32_t code = tjsonGetStringValue(pJson, "algorithm_id", pNode->algorithmId);
×
8282
  if (TSDB_CODE_SUCCESS == code) {
×
8283
    code = tjsonGetStringValue(pJson, "name", pNode->name);
×
8284
  }
8285
  if (TSDB_CODE_SUCCESS == code) {
×
8286
    code = tjsonGetStringValue(pJson, "desc", pNode->desc);
×
8287
  }
8288
  if (TSDB_CODE_SUCCESS == code) {
×
8289
    code = tjsonGetStringValue(pJson, "type", pNode->algrType);
×
8290
  }
8291
  if (TSDB_CODE_SUCCESS == code) {
×
8292
    code = tjsonGetStringValue(pJson, "ossl_algr_name", pNode->osslAlgrName);
×
8293
  }
8294

8295
  return code;
×
8296
}
8297

8298
static const char* jkAlterUserStmtUserName = "UserName";
8299
static const char* jkAlterUserStmtAlterType = "AlterType";
8300
static const char* jkAlterUserStmtPassword = "Password";
8301
static const char* jkAlterUserStmtEnable = "Enable";
8302
static const char* jkAlterUserStmtSysinfo = "Sysinfo";
8303
static const char* jkAlterUserStmtCreatedb = "Createdb";
8304

8305
static int32_t alterUserStmtToJson(const void* pObj, SJson* pJson) {
×
8306
  const SAlterUserStmt* pNode = (const SAlterUserStmt*)pObj;
×
8307
  int32_t code = tjsonAddStringToObject(pJson, jkAlterUserStmtUserName, pNode->userName);
×
8308
#if 0
8309
  if (TSDB_CODE_SUCCESS == code) {
8310
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtAlterType, pNode->alterType);
8311
  }
8312
  if (TSDB_CODE_SUCCESS == code) {
8313
    code = tjsonAddStringToObject(pJson, jkAlterUserStmtPassword, pNode->password);
8314
  }
8315
  if (TSDB_CODE_SUCCESS == code) {
8316
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtEnable, pNode->enable);
8317
  }
8318
  if (TSDB_CODE_SUCCESS == code) {
8319
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtSysinfo, pNode->sysinfo);
8320
  }
8321
  if (TSDB_CODE_SUCCESS == code) {
8322
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtCreatedb, pNode->createdb);
8323
  }
8324
#endif
8325
  return code;
×
8326
}
8327

8328
static int32_t jsonToAlterUserStmt(const SJson* pJson, void* pObj) {
×
8329
  SAlterUserStmt* pNode = (SAlterUserStmt*)pObj;
×
8330
  int32_t code = tjsonGetStringValue(pJson, jkAlterUserStmtUserName, pNode->userName);
×
8331
#if 0
8332
  if (TSDB_CODE_SUCCESS == code) {
8333
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtAlterType, &pNode->alterType);
8334
  }
8335
  if (TSDB_CODE_SUCCESS == code) {
8336
    code = tjsonGetStringValue(pJson, jkAlterUserStmtPassword, pNode->password);
8337
  }
8338
  if (TSDB_CODE_SUCCESS == code) {
8339
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtEnable, &pNode->enable);
8340
  }
8341
  if (TSDB_CODE_SUCCESS == code) {
8342
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtSysinfo, &pNode->sysinfo);
8343
  }
8344
  if (TSDB_CODE_SUCCESS == code) {
8345
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtCreatedb, &pNode->createdb);
8346
  }
8347
#endif
8348
  return code;
×
8349
}
8350

8351
static const char* jkDropUserStmtUserName = "UserName";
8352

8353
static int32_t dropUserStmtToJson(const void* pObj, SJson* pJson) {
×
8354
  const SDropUserStmt* pNode = (const SDropUserStmt*)pObj;
×
8355
  return tjsonAddStringToObject(pJson, jkDropUserStmtUserName, pNode->userName);
×
8356
}
8357

8358
static int32_t jsonToDropUserStmt(const SJson* pJson, void* pObj) {
×
8359
  SDropUserStmt* pNode = (SDropUserStmt*)pObj;
×
8360
  return tjsonGetStringValue(pJson, jkDropUserStmtUserName, pNode->userName);
×
8361
}
8362

8363
static const char* jkRoleStmtRoleName = "RoleName";
8364

8365
static int32_t createRoleStmtToJson(const void* pObj, SJson* pJson) {
×
8366
  const SCreateRoleStmt* pNode = (const SCreateRoleStmt*)pObj;
×
8367

8368
  int32_t code = tjsonAddStringToObject(pJson, jkRoleStmtRoleName, pNode->name);
×
8369
  if (TSDB_CODE_SUCCESS == code) {
×
8370
    code = tjsonAddBoolToObject(pJson, jkStmtIgnoreExists, pNode->ignoreExists);
×
8371
  }
8372
  return code;
×
8373
}
8374

8375
static int32_t jsonToCreateRoleStmt(const SJson* pJson, void* pObj) {
×
8376
  SCreateRoleStmt* pNode = (SCreateRoleStmt*)pObj;
×
8377

8378
  int32_t code = tjsonGetStringValue(pJson, jkRoleStmtRoleName, pNode->name);
×
8379
  if (TSDB_CODE_SUCCESS == code) {
×
8380
    code = tjsonGetBoolValue(pJson, jkStmtIgnoreExists, &pNode->ignoreExists);
×
8381
  }
8382
  return code;
×
8383
}
8384

8385
static int32_t dropRoleStmtToJson(const void* pObj, SJson* pJson) {
×
8386
  const SDropRoleStmt* pNode = (const SDropRoleStmt*)pObj;
×
8387

8388
  int32_t code = tjsonAddStringToObject(pJson, jkRoleStmtRoleName, pNode->name);
×
8389
  if (TSDB_CODE_SUCCESS == code) {
×
8390
    code = tjsonAddBoolToObject(pJson, jkStmtIgnoreNotExists, pNode->ignoreNotExists);
×
8391
  }
8392
  return code;
×
8393
}
8394

8395
static int32_t jsonToDropRoleStmt(const SJson* pJson, void* pObj) {
×
8396
  SDropRoleStmt* pNode = (SDropRoleStmt*)pObj;
×
8397

8398
  int32_t code = tjsonGetStringValue(pJson, jkRoleStmtRoleName, pNode->name);
×
8399
  if (TSDB_CODE_SUCCESS == code) {
×
8400
    code = tjsonGetBoolValue(pJson, jkStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
8401
  }
8402
  return code;
×
8403
}
8404

8405
static int32_t alterRoleStmtToJson(const void* pObj, SJson* pJson) {
×
8406
  const SAlterRoleStmt* pNode = (const SAlterRoleStmt*)pObj;
×
8407

8408
  int32_t code = tjsonAddStringToObject(pJson, jkRoleStmtRoleName, pNode->name);
×
8409
  if (TSDB_CODE_SUCCESS == code) {
×
8410
    code = tjsonAddIntegerToObject(pJson, jkValueFlag, pNode->flag);
×
8411
  }
8412
  return code;
×
8413
}
8414

8415
static int32_t jsonToAlterRoleStmt(const SJson* pJson, void* pObj) {
×
8416
  SAlterRoleStmt* pNode = (SAlterRoleStmt*)pObj;
×
8417

8418
  int32_t code = tjsonGetStringValue(pJson, jkRoleStmtRoleName, pNode->name);
×
8419
  if (TSDB_CODE_SUCCESS == code) {
×
8420
    code = tjsonGetUTinyIntValue(pJson, jkValueFlag, &pNode->flag);
×
8421
  }
8422
  return code;
×
8423
}
8424

8425
static const char* jkDropEncryptAlgrStmtUserName = "algorithm_id";
8426

8427
static int32_t dropEncryptAlgrStmtToJson(const void* pObj, SJson* pJson) {
×
8428
  const SDropEncryptAlgrStmt* pNode = (const SDropEncryptAlgrStmt*)pObj;
×
8429
  return tjsonAddStringToObject(pJson, jkDropEncryptAlgrStmtUserName, pNode->algorithmId);
×
8430
}
8431

8432
static int32_t jsonToDropEncryptAlgrStmt(const SJson* pJson, void* pObj) {
×
8433
  SDropEncryptAlgrStmt* pNode = (SDropEncryptAlgrStmt*)pObj;
×
8434
  return tjsonGetStringValue(pJson, jkDropEncryptAlgrStmtUserName, pNode->algorithmId);
×
8435
}
8436

8437
static const char* jkUseDatabaseStmtDbName = "DbName";
8438

8439
static int32_t useDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
8440
  const SUseDatabaseStmt* pNode = (const SUseDatabaseStmt*)pObj;
×
8441
  return tjsonAddStringToObject(pJson, jkUseDatabaseStmtDbName, pNode->dbName);
×
8442
}
8443

8444
static int32_t jsonToUseDatabaseStmt(const SJson* pJson, void* pObj) {
×
8445
  SUseDatabaseStmt* pNode = (SUseDatabaseStmt*)pObj;
×
8446
  return tjsonGetStringValue(pJson, jkUseDatabaseStmtDbName, pNode->dbName);
×
8447
}
8448

8449
static const char* jkCreateDnodeStmtFqdn = "Fqdn";
8450
static const char* jkCreateDnodeStmtPort = "Port";
8451

8452
static int32_t createDnodeStmtToJson(const void* pObj, SJson* pJson) {
×
8453
  const SCreateDnodeStmt* pNode = (const SCreateDnodeStmt*)pObj;
×
8454

8455
  int32_t code = tjsonAddStringToObject(pJson, jkCreateDnodeStmtFqdn, pNode->fqdn);
×
8456
  if (TSDB_CODE_SUCCESS == code) {
×
8457
    code = tjsonAddIntegerToObject(pJson, jkCreateDnodeStmtPort, pNode->port);
×
8458
  }
8459

8460
  return code;
×
8461
}
8462

8463
static int32_t jsonToCreateDnodeStmt(const SJson* pJson, void* pObj) {
×
8464
  SCreateDnodeStmt* pNode = (SCreateDnodeStmt*)pObj;
×
8465

8466
  int32_t code = tjsonGetStringValue(pJson, jkCreateDnodeStmtFqdn, pNode->fqdn);
×
8467
  if (TSDB_CODE_SUCCESS == code) {
×
8468
    code = tjsonGetIntValue(pJson, jkCreateDnodeStmtPort, &pNode->port);
×
8469
  }
8470

8471
  return code;
×
8472
}
8473

8474
static const char* jkAlterDnodeStmtDnodeId = "DnodeId";
8475
static const char* jkAlterDnodeStmtConfig = "Config";
8476
static const char* jkAlterDnodeStmtValue = "Value";
8477

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

8481
  int32_t code = tjsonAddIntegerToObject(pJson, jkAlterDnodeStmtDnodeId, pNode->dnodeId);
×
8482
  if (TSDB_CODE_SUCCESS == code) {
×
8483
    code = tjsonAddStringToObject(pJson, jkAlterDnodeStmtConfig, pNode->config);
×
8484
  }
8485
  if (TSDB_CODE_SUCCESS == code) {
×
8486
    code = tjsonAddStringToObject(pJson, jkAlterDnodeStmtValue, pNode->value);
×
8487
  }
8488

8489
  return code;
×
8490
}
8491

8492
static int32_t jsonToAlterDnodeStmt(const SJson* pJson, void* pObj) {
×
8493
  SAlterDnodeStmt* pNode = (SAlterDnodeStmt*)pObj;
×
8494

8495
  int32_t code = tjsonGetIntValue(pJson, jkAlterDnodeStmtDnodeId, &pNode->dnodeId);
×
8496
  if (TSDB_CODE_SUCCESS == code) {
×
8497
    code = tjsonGetStringValue(pJson, jkAlterDnodeStmtConfig, pNode->config);
×
8498
  }
8499
  if (TSDB_CODE_SUCCESS == code) {
×
8500
    code = tjsonGetStringValue(pJson, jkAlterDnodeStmtValue, pNode->value);
×
8501
  }
8502

8503
  return code;
×
8504
}
8505

8506
static const char* jkCreateIndexStmtIndexType = "IndexType";
8507
static const char* jkCreateIndexStmtIgnoreExists = "IgnoreExists";
8508
static const char* jkCreateIndexStmtIndexDbName = "IndexDbName";
8509
static const char* jkCreateIndexStmtIndexName = "indexName";
8510
static const char* jkCreateIndexStmtDbName = "DbName";
8511
static const char* jkCreateIndexStmtTableName = "TableName";
8512
static const char* jkCreateIndexStmtCols = "Cols";
8513
static const char* jkCreateIndexStmtOptions = "Options";
8514

8515
static int32_t createIndexStmtToJson(const void* pObj, SJson* pJson) {
×
8516
  const SCreateIndexStmt* pNode = (const SCreateIndexStmt*)pObj;
×
8517

8518
  int32_t code = tjsonAddIntegerToObject(pJson, jkCreateIndexStmtIndexType, pNode->indexType);
×
8519
  if (TSDB_CODE_SUCCESS == code) {
×
8520
    code = tjsonAddBoolToObject(pJson, jkCreateIndexStmtIgnoreExists, pNode->ignoreExists);
×
8521
  }
8522
  if (TSDB_CODE_SUCCESS == code) {
×
8523
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtIndexDbName, pNode->indexDbName);
×
8524
  }
8525
  if (TSDB_CODE_SUCCESS == code) {
×
8526
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtIndexName, pNode->indexName);
×
8527
  }
8528
  if (TSDB_CODE_SUCCESS == code) {
×
8529
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtDbName, pNode->dbName);
×
8530
  }
8531
  if (TSDB_CODE_SUCCESS == code) {
×
8532
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtTableName, pNode->tableName);
×
8533
  }
8534
  if (TSDB_CODE_SUCCESS == code) {
×
8535
    code = nodeListToJson(pJson, jkCreateIndexStmtCols, pNode->pCols);
×
8536
  }
8537
  if (TSDB_CODE_SUCCESS == code) {
×
8538
    code = tjsonAddObject(pJson, jkCreateIndexStmtOptions, nodeToJson, pNode->pOptions);
×
8539
  }
8540

8541
  return code;
×
8542
}
8543

8544
static int32_t jsonToCreateIndexStmt(const SJson* pJson, void* pObj) {
×
8545
  SCreateIndexStmt* pNode = (SCreateIndexStmt*)pObj;
×
8546

8547
  int32_t code = TSDB_CODE_SUCCESS;
×
8548
  tjsonGetNumberValue(pJson, jkCreateIndexStmtIndexType, pNode->indexType, code);
×
8549
  if (TSDB_CODE_SUCCESS == code) {
×
8550
    code = tjsonGetBoolValue(pJson, jkCreateIndexStmtIgnoreExists, &pNode->ignoreExists);
×
8551
  }
8552
  if (TSDB_CODE_SUCCESS == code) {
×
8553
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtIndexDbName, pNode->indexDbName);
×
8554
  }
8555
  if (TSDB_CODE_SUCCESS == code) {
×
8556
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtIndexName, pNode->indexName);
×
8557
  }
8558
  if (TSDB_CODE_SUCCESS == code) {
×
8559
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtDbName, pNode->dbName);
×
8560
  }
8561
  if (TSDB_CODE_SUCCESS == code) {
×
8562
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtTableName, pNode->tableName);
×
8563
  }
8564
  if (TSDB_CODE_SUCCESS == code) {
×
8565
    code = jsonToNodeList(pJson, jkCreateIndexStmtCols, &pNode->pCols);
×
8566
  }
8567
  if (TSDB_CODE_SUCCESS == code) {
×
8568
    code = jsonToNodeObject(pJson, jkCreateIndexStmtOptions, (SNode**)&pNode->pOptions);
×
8569
  }
8570

8571
  return code;
×
8572
}
8573

8574
static const char* jkDropIndexStmtIgnoreNotExists = "IgnoreNotExists";
8575
static const char* jkDropIndexStmtIndexDbName = "IndexDbName";
8576
static const char* jkDropIndexStmtIndexName = "IndexName";
8577

8578
static int32_t dropIndexStmtToJson(const void* pObj, SJson* pJson) {
×
8579
  const SDropIndexStmt* pNode = (const SDropIndexStmt*)pObj;
×
8580

8581
  int32_t code = tjsonAddBoolToObject(pJson, jkDropIndexStmtIgnoreNotExists, pNode->ignoreNotExists);
×
8582
  if (TSDB_CODE_SUCCESS == code) {
×
8583
    code = tjsonAddStringToObject(pJson, jkDropIndexStmtIndexDbName, pNode->indexDbName);
×
8584
  }
8585
  if (TSDB_CODE_SUCCESS == code) {
×
8586
    code = tjsonAddStringToObject(pJson, jkDropIndexStmtIndexName, pNode->indexName);
×
8587
  }
8588

8589
  return code;
×
8590
}
8591

8592
static int32_t jsonToDropIndexStmt(const SJson* pJson, void* pObj) {
×
8593
  SDropIndexStmt* pNode = (SDropIndexStmt*)pObj;
×
8594

8595
  int32_t code = tjsonGetBoolValue(pJson, jkDropIndexStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
8596
  if (TSDB_CODE_SUCCESS == code) {
×
8597
    code = tjsonGetStringValue(pJson, jkDropIndexStmtIndexDbName, pNode->indexDbName);
×
8598
  }
8599
  if (TSDB_CODE_SUCCESS == code) {
×
8600
    code = tjsonGetStringValue(pJson, jkDropIndexStmtIndexName, pNode->indexName);
×
8601
  }
8602

8603
  return code;
×
8604
}
8605

8606
static const char* jkCreateComponentNodeStmtDnodeId = "DnodeId";
8607

8608
static int32_t createComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
×
8609
  const SCreateComponentNodeStmt* pNode = (const SCreateComponentNodeStmt*)pObj;
×
8610
  return tjsonAddIntegerToObject(pJson, jkCreateComponentNodeStmtDnodeId, pNode->dnodeId);
×
8611
}
8612

8613
static int32_t jsonToCreateComponentNodeStmt(const SJson* pJson, void* pObj) {
×
8614
  SCreateComponentNodeStmt* pNode = (SCreateComponentNodeStmt*)pObj;
×
8615
  return tjsonGetIntValue(pJson, jkCreateComponentNodeStmtDnodeId, &pNode->dnodeId);
×
8616
}
8617

8618
static const char* jkDropComponentNodeStmtDnodeId = "DnodeId";
8619

8620
static int32_t dropComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
×
8621
  const SDropComponentNodeStmt* pNode = (const SDropComponentNodeStmt*)pObj;
×
8622
  return tjsonAddIntegerToObject(pJson, jkDropComponentNodeStmtDnodeId, pNode->dnodeId);
×
8623
}
8624

8625
static int32_t jsonToDropComponentNodeStmt(const SJson* pJson, void* pObj) {
×
8626
  SDropComponentNodeStmt* pNode = (SDropComponentNodeStmt*)pObj;
×
8627
  return tjsonGetIntValue(pJson, jkDropComponentNodeStmtDnodeId, &pNode->dnodeId);
×
8628
}
8629

8630
static int32_t createQnodeStmtToJson(const void* pObj, SJson* pJson) {
×
8631
  return createComponentNodeStmtToJson(pObj, pJson);
×
8632
}
8633

8634
static int32_t jsonToCreateQnodeStmt(const SJson* pJson, void* pObj) {
×
8635
  return jsonToCreateComponentNodeStmt(pJson, pObj);
×
8636
}
8637

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

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

8642
static const char* jkCreateAnodeStmtUrl = "Url";
8643
static const char* jkUpdateDropANodeStmtId = "AnodeId";
8644

8645
static int32_t createAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
8646
  const SCreateAnodeStmt* pNode = (const SCreateAnodeStmt*)pObj;
×
8647
  return tjsonAddStringToObject(pJson, jkCreateAnodeStmtUrl, pNode->url);
×
8648
}
8649

8650
static int32_t jsonToCreateAnodeStmt(const SJson* pJson, void* pObj) {
×
8651
  SCreateAnodeStmt* pNode = (SCreateAnodeStmt*)pObj;
×
8652
  return tjsonGetStringValue(pJson, jkCreateAnodeStmtUrl, pNode->url);
×
8653
}
8654

8655
static int32_t updateAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
8656
  const SUpdateAnodeStmt* pNode = (const SUpdateAnodeStmt*)pObj;
×
8657
  return tjsonAddIntegerToObject(pJson, jkUpdateDropANodeStmtId, pNode->anodeId);
×
8658
}
8659

8660
static int32_t jsonToUpdateAnodeStmt(const SJson* pJson, void* pObj) {
×
8661
  SUpdateAnodeStmt* pNode = (SUpdateAnodeStmt*)pObj;
×
8662
  return tjsonGetIntValue(pJson, jkUpdateDropANodeStmtId, &pNode->anodeId);
×
8663
}
8664

8665
static int32_t dropAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
8666
  const SDropAnodeStmt* pNode = (const SDropAnodeStmt*)pObj;
×
8667
  return tjsonAddIntegerToObject(pJson, jkUpdateDropANodeStmtId, pNode->anodeId);
×
8668
}
8669

8670
static int32_t jsonToDropAnodeStmt(const SJson* pJson, void* pObj) {
×
8671
  SDropAnodeStmt* pNode = (SDropAnodeStmt*)pObj;
×
8672
  return tjsonGetIntValue(pJson, jkUpdateDropANodeStmtId, &pNode->anodeId);
×
8673
}
8674

8675
static const char* jkUpdateDropBNodeStmtId = "DnodeId";
8676

8677
static int32_t createBnodeStmtToJson(const void* pObj, SJson* pJson) {
×
8678
  const SCreateBnodeStmt* pNode = (const SCreateBnodeStmt*)pObj;
×
8679
  return tjsonAddIntegerToObject(pJson, jkCreateComponentNodeStmtDnodeId, pNode->dnodeId);
×
8680
}
8681

8682
static int32_t jsonToCreateBnodeStmt(const SJson* pJson, void* pObj) {
×
8683
  SCreateBnodeStmt* pNode = (SCreateBnodeStmt*)pObj;
×
8684
  return tjsonGetIntValue(pJson, jkCreateComponentNodeStmtDnodeId, &pNode->dnodeId);
×
8685
}
8686

8687
static int32_t dropBnodeStmtToJson(const void* pObj, SJson* pJson) {
×
8688
  const SDropBnodeStmt* pNode = (const SDropBnodeStmt*)pObj;
×
8689
  return tjsonAddIntegerToObject(pJson, jkUpdateDropBNodeStmtId, pNode->dnodeId);
×
8690
}
8691

8692
static int32_t jsonToDropBnodeStmt(const SJson* pJson, void* pObj) {
×
8693
  SDropBnodeStmt* pNode = (SDropBnodeStmt*)pObj;
×
8694
  return tjsonGetIntValue(pJson, jkUpdateDropBNodeStmtId, &pNode->dnodeId);
×
8695
}
8696

8697
static int32_t createSnodeStmtToJson(const void* pObj, SJson* pJson) {
×
8698
  return createComponentNodeStmtToJson(pObj, pJson);
×
8699
}
8700

8701
static int32_t jsonToCreateSnodeStmt(const SJson* pJson, void* pObj) {
×
8702
  return jsonToCreateComponentNodeStmt(pJson, pObj);
×
8703
}
8704

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

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

8709
static int32_t createMnodeStmtToJson(const void* pObj, SJson* pJson) {
×
8710
  return createComponentNodeStmtToJson(pObj, pJson);
×
8711
}
8712

8713
static int32_t jsonToCreateMnodeStmt(const SJson* pJson, void* pObj) {
×
8714
  return jsonToCreateComponentNodeStmt(pJson, pObj);
×
8715
}
8716

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

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

8721
static const char* jkDropDnodeStmtDnodeId = "DnodeId";
8722
static const char* jkDropDnodeStmtFqdn = "Fqdn";
8723
static const char* jkDropDnodeStmtPort = "Port";
8724
static const char* jkDropDnodeStmtForce = "Force";
8725
static const char* jkDropDnodeStmtUnsafe = "Unsafe";
8726

8727
static int32_t dropDnodeStmtToJson(const void* pObj, SJson* pJson) {
×
8728
  const SDropDnodeStmt* pNode = (const SDropDnodeStmt*)pObj;
×
8729

8730
  int32_t code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtDnodeId, pNode->dnodeId);
×
8731
  if (TSDB_CODE_SUCCESS == code) {
×
8732
    code = tjsonAddStringToObject(pJson, jkDropDnodeStmtFqdn, pNode->fqdn);
×
8733
  }
8734
  if (TSDB_CODE_SUCCESS == code) {
×
8735
    code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtPort, pNode->port);
×
8736
  }
8737
  if (TSDB_CODE_SUCCESS == code) {
×
8738
    code = tjsonAddBoolToObject(pJson, jkDropDnodeStmtForce, pNode->force);
×
8739
  }
8740
  if (TSDB_CODE_SUCCESS == code) {
×
8741
    code = tjsonAddBoolToObject(pJson, jkDropDnodeStmtUnsafe, pNode->unsafe);
×
8742
  }
8743

8744
  return code;
×
8745
}
8746

8747
static int32_t jsonToDropDnodeStmt(const SJson* pJson, void* pObj) {
×
8748
  SDropDnodeStmt* pNode = (SDropDnodeStmt*)pObj;
×
8749

8750
  int32_t code = tjsonGetIntValue(pJson, jkDropDnodeStmtDnodeId, &pNode->dnodeId);
×
8751
  if (TSDB_CODE_SUCCESS == code) {
×
8752
    code = tjsonGetStringValue(pJson, jkDropDnodeStmtFqdn, pNode->fqdn);
×
8753
  }
8754
  if (TSDB_CODE_SUCCESS == code) {
×
8755
    code = tjsonGetIntValue(pJson, jkDropDnodeStmtPort, &pNode->port);
×
8756
  }
8757
  if (TSDB_CODE_SUCCESS == code) {
×
8758
    code = tjsonGetBoolValue(pJson, jkDropDnodeStmtForce, &pNode->force);
×
8759
  }
8760
  if (TSDB_CODE_SUCCESS == code) {
×
8761
    code = tjsonGetBoolValue(pJson, jkDropDnodeStmtUnsafe, &pNode->unsafe);
×
8762
  }
8763

8764
  return code;
×
8765
}
8766

8767
static const char* jkRestoreComponentNodeStmtDnodeId = "DnodeId";
8768

8769
static int32_t restoreComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
×
8770
  const SRestoreComponentNodeStmt* pNode = (const SRestoreComponentNodeStmt*)pObj;
×
8771
  return tjsonAddIntegerToObject(pJson, jkRestoreComponentNodeStmtDnodeId, pNode->dnodeId);
×
8772
}
8773

8774
static int32_t jsonToRestoreComponentNodeStmt(const SJson* pJson, void* pObj) {
×
8775
  SRestoreComponentNodeStmt* pNode = (SRestoreComponentNodeStmt*)pObj;
×
8776
  return tjsonGetIntValue(pJson, jkRestoreComponentNodeStmtDnodeId, &pNode->dnodeId);
×
8777
}
8778

8779
static int32_t jsonToRestoreDnodeStmt(const SJson* pJson, void* pObj) {
×
8780
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
8781
}
8782
static int32_t jsonToRestoreQnodeStmt(const SJson* pJson, void* pObj) {
×
8783
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
8784
}
8785
static int32_t jsonToRestoreMnodeStmt(const SJson* pJson, void* pObj) {
×
8786
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
8787
}
8788
static int32_t jsonToRestoreVnodeStmt(const SJson* pJson, void* pObj) {
×
8789
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
8790
}
8791

8792
static const char* jkCreateTopicStmtTopicName = "TopicName";
8793
static const char* jkCreateTopicStmtSubscribeDbName = "SubscribeDbName";
8794
static const char* jkCreateTopicStmtIgnoreExists = "IgnoreExists";
8795
static const char* jkCreateTopicStmtQuery = "Query";
8796

8797
static int32_t createTopicStmtToJson(const void* pObj, SJson* pJson) {
×
8798
  const SCreateTopicStmt* pNode = (const SCreateTopicStmt*)pObj;
×
8799

8800
  int32_t code = tjsonAddStringToObject(pJson, jkCreateTopicStmtTopicName, pNode->topicName);
×
8801
  if (TSDB_CODE_SUCCESS == code) {
×
8802
    code = tjsonAddStringToObject(pJson, jkCreateTopicStmtSubscribeDbName, pNode->subDbName);
×
8803
  }
8804
  if (TSDB_CODE_SUCCESS == code) {
×
8805
    code = tjsonAddBoolToObject(pJson, jkCreateTopicStmtIgnoreExists, pNode->ignoreExists);
×
8806
  }
8807
  if (TSDB_CODE_SUCCESS == code) {
×
8808
    code = tjsonAddObject(pJson, jkCreateTopicStmtQuery, nodeToJson, pNode->pQuery);
×
8809
  }
8810

8811
  return code;
×
8812
}
8813

8814
static int32_t jsonToCreateTopicStmt(const SJson* pJson, void* pObj) {
×
8815
  SCreateTopicStmt* pNode = (SCreateTopicStmt*)pObj;
×
8816

8817
  int32_t code = tjsonGetStringValue(pJson, jkCreateTopicStmtTopicName, pNode->topicName);
×
8818
  if (TSDB_CODE_SUCCESS == code) {
×
8819
    code = tjsonGetStringValue(pJson, jkCreateTopicStmtSubscribeDbName, pNode->subDbName);
×
8820
  }
8821
  if (TSDB_CODE_SUCCESS == code) {
×
8822
    code = tjsonGetBoolValue(pJson, jkCreateTopicStmtIgnoreExists, &pNode->ignoreExists);
×
8823
  }
8824
  if (TSDB_CODE_SUCCESS == code) {
×
8825
    code = jsonToNodeObject(pJson, jkCreateTopicStmtQuery, &pNode->pQuery);
×
8826
  }
8827

8828
  return code;
×
8829
}
8830

8831
static const char* jkDropTopicStmtTopicName = "TopicName";
8832
static const char* jkDropTopicStmtIgnoreNotExists = "IgnoreNotExists";
8833

8834
static int32_t dropTopicStmtToJson(const void* pObj, SJson* pJson) {
×
8835
  const SDropTopicStmt* pNode = (const SDropTopicStmt*)pObj;
×
8836

8837
  int32_t code = tjsonAddStringToObject(pJson, jkDropTopicStmtTopicName, pNode->topicName);
×
8838
  if (TSDB_CODE_SUCCESS == code) {
×
8839
    code = tjsonAddBoolToObject(pJson, jkDropTopicStmtIgnoreNotExists, pNode->ignoreNotExists);
×
8840
  }
8841

8842
  return code;
×
8843
}
8844

8845
static int32_t jsonToDropTopicStmt(const SJson* pJson, void* pObj) {
×
8846
  SDropTopicStmt* pNode = (SDropTopicStmt*)pObj;
×
8847

8848
  int32_t code = tjsonGetStringValue(pJson, jkDropTopicStmtTopicName, pNode->topicName);
×
8849
  if (TSDB_CODE_SUCCESS == code) {
×
8850
    code = tjsonGetBoolValue(pJson, jkDropTopicStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
8851
  }
8852

8853
  return code;
×
8854
}
8855

8856
static const char* jkDropCGroupStmtTopicName = "TopicName";
8857
static const char* jkDropCGroupStmtConsumerGroup = "ConsumerGroup";
8858
static const char* jkDropCGroupStmtIgnoreNotExists = "IgnoreNotExists";
8859

8860
static int32_t dropConsumerGroupStmtToJson(const void* pObj, SJson* pJson) {
×
8861
  const SDropCGroupStmt* pNode = (const SDropCGroupStmt*)pObj;
×
8862

8863
  int32_t code = tjsonAddStringToObject(pJson, jkDropCGroupStmtTopicName, pNode->topicName);
×
8864
  if (TSDB_CODE_SUCCESS == code) {
×
8865
    code = tjsonAddStringToObject(pJson, jkDropCGroupStmtConsumerGroup, pNode->cgroup);
×
8866
  }
8867
  if (TSDB_CODE_SUCCESS == code) {
×
8868
    code = tjsonAddBoolToObject(pJson, jkDropCGroupStmtIgnoreNotExists, pNode->ignoreNotExists);
×
8869
  }
8870

8871
  return code;
×
8872
}
8873

8874
static int32_t jsonToDropConsumerGroupStmt(const SJson* pJson, void* pObj) {
×
8875
  SDropCGroupStmt* pNode = (SDropCGroupStmt*)pObj;
×
8876

8877
  int32_t code = tjsonGetStringValue(pJson, jkDropCGroupStmtTopicName, pNode->topicName);
×
8878
  if (TSDB_CODE_SUCCESS == code) {
×
8879
    code = tjsonGetStringValue(pJson, jkDropCGroupStmtConsumerGroup, pNode->cgroup);
×
8880
  }
8881
  if (TSDB_CODE_SUCCESS == code) {
×
8882
    code = tjsonGetBoolValue(pJson, jkDropCGroupStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
8883
  }
8884

8885
  return code;
×
8886
}
8887

8888
static const char* jkAlterClusterStmtConfig = "Config";
8889
static const char* jkAlterClusterStmtValue = "Value";
8890

8891
static int32_t alterClusterStmtToJson(const void* pObj, SJson* pJson) {
×
8892
  const SAlterClusterStmt* pNode = (const SAlterClusterStmt*)pObj;
×
8893

8894
  int32_t code = tjsonAddStringToObject(pJson, jkAlterClusterStmtConfig, pNode->config);
×
8895
  if (TSDB_CODE_SUCCESS == code) {
×
8896
    code = tjsonAddStringToObject(pJson, jkAlterClusterStmtValue, pNode->value);
×
8897
  }
8898

8899
  return code;
×
8900
}
8901

8902
static int32_t jsonToAlterClusterStmt(const SJson* pJson, void* pObj) {
×
8903
  SAlterClusterStmt* pNode = (SAlterClusterStmt*)pObj;
×
8904

8905
  int32_t code = tjsonGetStringValue(pJson, jkAlterClusterStmtConfig, pNode->config);
×
8906
  if (TSDB_CODE_SUCCESS == code) {
×
8907
    code = tjsonGetStringValue(pJson, jkAlterClusterStmtValue, pNode->value);
×
8908
  }
8909

8910
  return code;
×
8911
}
8912

8913
static const char* jkAlterLocalStmtConfig = "Config";
8914
static const char* jkAlterLocalStmtValue = "Value";
8915

8916
static int32_t alterLocalStmtToJson(const void* pObj, SJson* pJson) {
×
8917
  const SAlterLocalStmt* pNode = (const SAlterLocalStmt*)pObj;
×
8918

8919
  int32_t code = tjsonAddStringToObject(pJson, jkAlterLocalStmtConfig, pNode->config);
×
8920
  if (TSDB_CODE_SUCCESS == code) {
×
8921
    code = tjsonAddStringToObject(pJson, jkAlterLocalStmtValue, pNode->value);
×
8922
  }
8923

8924
  return code;
×
8925
}
8926

8927
static int32_t jsonToAlterLocalStmt(const SJson* pJson, void* pObj) {
×
8928
  SAlterLocalStmt* pNode = (SAlterLocalStmt*)pObj;
×
8929

8930
  int32_t code = tjsonGetStringValue(pJson, jkAlterLocalStmtConfig, pNode->config);
×
8931
  if (TSDB_CODE_SUCCESS == code) {
×
8932
    code = tjsonGetStringValue(pJson, jkAlterLocalStmtValue, pNode->value);
×
8933
  }
8934

8935
  return code;
×
8936
}
8937

8938
static const char* jkAlterEncryptKeyStmtKeyType = "KeyType";
8939
static const char* jkAlterEncryptKeyStmtNewKey = "NewKey";
8940

8941
static int32_t alterEncryptKeyStmtToJson(const void* pObj, SJson* pJson) {
×
8942
  const SAlterEncryptKeyStmt* pNode = (const SAlterEncryptKeyStmt*)pObj;
×
8943

8944
  int32_t code = tjsonAddIntegerToObject(pJson, jkAlterEncryptKeyStmtKeyType, pNode->keyType);
×
8945
  if (TSDB_CODE_SUCCESS == code) {
×
8946
    code = tjsonAddStringToObject(pJson, jkAlterEncryptKeyStmtNewKey, pNode->newKey);
×
8947
  }
8948

8949
  return code;
×
8950
}
8951

8952
static int32_t jsonToAlterEncryptKeyStmt(const SJson* pJson, void* pObj) {
×
8953
  SAlterEncryptKeyStmt* pNode = (SAlterEncryptKeyStmt*)pObj;
×
8954

8955
  int32_t code = tjsonGetTinyIntValue(pJson, jkAlterEncryptKeyStmtKeyType, &pNode->keyType);
×
8956
  if (TSDB_CODE_SUCCESS == code) {
×
8957
    code = tjsonGetStringValue(pJson, jkAlterEncryptKeyStmtNewKey, pNode->newKey);
×
8958
  }
8959

8960
  return code;
×
8961
}
8962

8963
static const char* jkExplainStmtAnalyze = "Analyze";
8964
static const char* jkExplainStmtOptions = "Options";
8965
static const char* jkExplainStmtQuery = "Query";
8966

8967
static int32_t explainStmtToJson(const void* pObj, SJson* pJson) {
×
8968
  const SExplainStmt* pNode = (const SExplainStmt*)pObj;
×
8969

8970
  int32_t code = tjsonAddBoolToObject(pJson, jkExplainStmtAnalyze, pNode->analyze);
×
8971
  if (TSDB_CODE_SUCCESS == code) {
×
8972
    code = tjsonAddObject(pJson, jkExplainStmtOptions, nodeToJson, pNode->pOptions);
×
8973
  }
8974
  if (TSDB_CODE_SUCCESS == code) {
×
8975
    code = tjsonAddObject(pJson, jkExplainStmtQuery, nodeToJson, pNode->pQuery);
×
8976
  }
8977

8978
  return code;
×
8979
}
8980

8981
static int32_t jsonToExplainStmt(const SJson* pJson, void* pObj) {
×
8982
  SExplainStmt* pNode = (SExplainStmt*)pObj;
×
8983

8984
  int32_t code = tjsonGetBoolValue(pJson, jkExplainStmtAnalyze, &pNode->analyze);
×
8985
  if (TSDB_CODE_SUCCESS == code) {
×
8986
    code = jsonToNodeObject(pJson, jkExplainStmtOptions, (SNode**)&pNode->pOptions);
×
8987
  }
8988
  if (TSDB_CODE_SUCCESS == code) {
×
8989
    code = jsonToNodeObject(pJson, jkExplainStmtQuery, &pNode->pQuery);
×
8990
  }
8991

8992
  return code;
×
8993
}
8994

8995
static const char* jkDescribeStmtDbName = "DbName";
8996
static const char* jkDescribeStmtTableName = "TableName";
8997

8998
static int32_t describeStmtToJson(const void* pObj, SJson* pJson) {
×
8999
  const SDescribeStmt* pNode = (const SDescribeStmt*)pObj;
×
9000

9001
  int32_t code = tjsonAddStringToObject(pJson, jkDescribeStmtDbName, pNode->dbName);
×
9002
  if (TSDB_CODE_SUCCESS == code) {
×
9003
    code = tjsonAddStringToObject(pJson, jkDescribeStmtTableName, pNode->tableName);
×
9004
  }
9005

9006
  return code;
×
9007
}
9008

9009
static int32_t jsonToDescribeStmt(const SJson* pJson, void* pObj) {
×
9010
  SDescribeStmt* pNode = (SDescribeStmt*)pObj;
×
9011

9012
  int32_t code = tjsonGetStringValue(pJson, jkDescribeStmtDbName, pNode->dbName);
×
9013
  if (TSDB_CODE_SUCCESS == code) {
×
9014
    code = tjsonGetStringValue(pJson, jkDescribeStmtTableName, pNode->tableName);
×
9015
  }
9016

9017
  return code;
×
9018
}
9019

9020
static const char* jkCompactDatabaseStmtDbName = "DbName";
9021
static const char* jkScanDatabaseStmtDbName = "DbName";
9022

9023
static int32_t compactDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
9024
  const SCompactDatabaseStmt* pNode = (const SCompactDatabaseStmt*)pObj;
×
9025
  return tjsonAddStringToObject(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
×
9026
}
9027

9028
static int32_t jsonToCompactDatabaseStmt(const SJson* pJson, void* pObj) {
×
9029
  SCompactDatabaseStmt* pNode = (SCompactDatabaseStmt*)pObj;
×
9030
  return tjsonGetStringValue(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
×
9031
}
9032

9033
static int32_t rollupDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
9034
  const SRollupDatabaseStmt* pNode = (const SRollupDatabaseStmt*)pObj;
×
9035
  return tjsonAddStringToObject(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
×
9036
}
9037

9038
static int32_t jsonToRollupDatabaseStmt(const SJson* pJson, void* pObj) {
×
9039
  SRollupDatabaseStmt* pNode = (SRollupDatabaseStmt*)pObj;
×
9040
  return tjsonGetStringValue(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
×
9041
}
9042

9043
static int32_t scanDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
9044
  const SScanDatabaseStmt* pNode = (const SScanDatabaseStmt*)pObj;
×
9045
  return tjsonAddStringToObject(pJson, jkScanDatabaseStmtDbName, pNode->dbName);
×
9046
}
9047

9048
static int32_t jsonToScanDatabaseStmt(const SJson* pJson, void* pObj) {
×
9049
  SScanDatabaseStmt* pNode = (SScanDatabaseStmt*)pObj;
×
9050
  return tjsonGetStringValue(pJson, jkScanDatabaseStmtDbName, pNode->dbName);
×
9051
}
9052

9053
static int32_t compactVgroupsStmtToJson(const void* pObj, SJson* pJson) {
×
9054
  const SCompactVgroupsStmt* pNode = (const SCompactVgroupsStmt*)pObj;
×
9055
  return 0;
×
9056
}
9057

9058
static int32_t jsonToCompactVgroupsStmt(const SJson* pJson, void* pObj) {
×
9059
  SCompactVgroupsStmt* pNode = (SCompactVgroupsStmt*)pObj;
×
9060
  return 0;
×
9061
}
9062

9063
static int32_t rollupVgroupsStmtToJson(const void* pObj, SJson* pJson) {
×
9064
  const SRollupVgroupsStmt* pNode = (const SRollupVgroupsStmt*)pObj;
×
9065
  return 0;
×
9066
}
9067

9068
static int32_t jsonToRollupVgroupsStmt(const SJson* pJson, void* pObj) {
×
9069
  SRollupVgroupsStmt* pNode = (SRollupVgroupsStmt*)pObj;
×
9070
  return 0;
×
9071
}
9072

9073
static int32_t scanVgroupsStmtToJson(const void* pObj, SJson* pJson) {
×
9074
  const SScanVgroupsStmt* pNode = (const SScanVgroupsStmt*)pObj;
×
9075
  return 0;
×
9076
}
9077

9078
static int32_t jsonToScanVgroupsStmt(const SJson* pJson, void* pObj) {
×
9079
  SScanVgroupsStmt* pNode = (SScanVgroupsStmt*)pObj;
×
9080
  return 0;
×
9081
}
9082

9083
static const char* jkCreateStreamStmtStreamDbName = "StreamDbName";
9084
static const char* jkCreateStreamStmtStreamName = "StreamName";
9085
static const char* jkCreateStreamStmtTargetDbName = "TargetDbName";
9086
static const char* jkCreateStreamStmtTargetTabName = "TargetTabName";
9087
static const char* jkCreateStreamStmtIgnoreExists = "IgnoreExists";
9088
static const char* jkCreateStreamStmtTrigger = "Trigger";
9089
static const char* jkCreateStreamStmtQuery = "Query";
9090
static const char* jkCreateStreamStmtTags = "Tags";
9091
static const char* jkCreateStreamStmtSubtable = "Subtable";
9092
static const char* jkCreateStreamStmtCols = "Cols";
9093

9094
static int32_t createStreamStmtToJson(const void* pObj, SJson* pJson) {
×
9095
  const SCreateStreamStmt* pNode = (const SCreateStreamStmt*)pObj;
×
9096

9097
  int32_t code = tjsonAddStringToObject(pJson, jkCreateStreamStmtStreamDbName, pNode->streamDbName);
×
9098
  if (TSDB_CODE_SUCCESS == code) {
×
9099
    code = tjsonAddStringToObject(pJson, jkCreateStreamStmtStreamName, pNode->streamName);
×
9100
  }
9101
  if (TSDB_CODE_SUCCESS == code) {
×
9102
    code = tjsonAddStringToObject(pJson, jkCreateStreamStmtTargetDbName, pNode->targetDbName);
×
9103
  }
9104
  if (TSDB_CODE_SUCCESS == code) {
×
9105
    code = tjsonAddStringToObject(pJson, jkCreateStreamStmtTargetTabName, pNode->targetTabName);
×
9106
  }
9107
  if (TSDB_CODE_SUCCESS == code) {
×
9108
    code = tjsonAddBoolToObject(pJson, jkCreateStreamStmtIgnoreExists, pNode->ignoreExists);
×
9109
  }
9110
  if (TSDB_CODE_SUCCESS == code) {
×
9111
    code = tjsonAddObject(pJson, jkCreateStreamStmtQuery, nodeToJson, pNode->pTrigger);
×
9112
  }
9113
  if (TSDB_CODE_SUCCESS == code) {
×
9114
    code = tjsonAddObject(pJson, jkCreateStreamStmtQuery, nodeToJson, pNode->pQuery);
×
9115
  }
9116
  if (TSDB_CODE_SUCCESS == code) {
×
9117
    code = tjsonAddObject(pJson, jkCreateStreamStmtSubtable, nodeToJson, pNode->pSubtable);
×
9118
  }
9119
  if (TSDB_CODE_SUCCESS == code) {
×
9120
    code = nodeListToJson(pJson, jkCreateStreamStmtTags, pNode->pTags);
×
9121
  }
9122
  if (TSDB_CODE_SUCCESS == code) {
×
9123
    code = nodeListToJson(pJson, jkCreateStreamStmtCols, pNode->pCols);
×
9124
  }
9125
  return code;
×
9126
}
9127

9128
static int32_t jsonToCreateStreamStmt(const SJson* pJson, void* pObj) {
×
9129
  SCreateStreamStmt* pNode = (SCreateStreamStmt*)pObj;
×
9130

9131
  int32_t code = tjsonGetStringValue(pJson, jkCreateStreamStmtStreamDbName, pNode->streamDbName);
×
9132
  if (TSDB_CODE_SUCCESS == code) {
×
9133
    code = tjsonGetStringValue(pJson, jkCreateStreamStmtStreamName, pNode->streamName);
×
9134
  }
9135
  if (TSDB_CODE_SUCCESS == code) {
×
9136
    code = tjsonGetStringValue(pJson, jkCreateStreamStmtTargetDbName, pNode->targetDbName);
×
9137
  }
9138
  if (TSDB_CODE_SUCCESS == code) {
×
9139
    code = tjsonGetStringValue(pJson, jkCreateStreamStmtTargetTabName, pNode->targetTabName);
×
9140
  }
9141
  if (TSDB_CODE_SUCCESS == code) {
×
9142
    code = tjsonGetBoolValue(pJson, jkCreateStreamStmtIgnoreExists, &pNode->ignoreExists);
×
9143
  }
9144
  if (TSDB_CODE_SUCCESS == code) {
×
9145
    code = jsonToNodeObject(pJson, jkCreateStreamStmtTrigger, &pNode->pTrigger);
×
9146
  }
9147
  if (TSDB_CODE_SUCCESS == code) {
×
9148
    code = jsonToNodeObject(pJson, jkCreateStreamStmtQuery, &pNode->pQuery);
×
9149
  }
9150
  if (TSDB_CODE_SUCCESS == code) {
×
9151
    code = jsonToNodeObject(pJson, jkCreateStreamStmtSubtable, &pNode->pSubtable);
×
9152
  }
9153
  if (TSDB_CODE_SUCCESS == code) {
×
9154
    code = jsonToNodeList(pJson, jkCreateStreamStmtTags, &pNode->pTags);
×
9155
  }
9156
  if (TSDB_CODE_SUCCESS == code) {
×
9157
    code = jsonToNodeList(pJson, jkCreateStreamStmtCols, &pNode->pCols);
×
9158
  }
9159
  return code;
×
9160
}
9161

9162
static const char* jkDropStreamStmtStreamList = "StreamList";
9163
static const char* jkDropStreamStmtIgnoreNotExists = "IgnoreNotExists";
9164

9165
static int32_t dropStreamStmtToJson(const void* pObj, SJson* pJson) {
×
UNCOV
9166
  const SDropStreamStmt* pNode = (const SDropStreamStmt*)pObj;
×
9167

NEW
9168
  int32_t code = tjsonAddBoolToObject(pJson, jkDropStreamStmtIgnoreNotExists, pNode->ignoreNotExists);
×
9169
  if (TSDB_CODE_SUCCESS == code) {
×
NEW
9170
    code = nodeListToJson(pJson, jkDropStreamStmtStreamList, pNode->pStreamList);
×
9171
  }
9172

9173
  return code;
×
9174
}
9175

9176
static int32_t jsonToDropStreamStmt(const SJson* pJson, void* pObj) {
×
9177
  SDropStreamStmt* pNode = (SDropStreamStmt*)pObj;
×
9178

NEW
9179
  int32_t code = tjsonGetBoolValue(pJson, jkDropStreamStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
9180
  if (TSDB_CODE_SUCCESS == code) {
×
NEW
9181
    code = jsonToNodeList(pJson, jkDropStreamStmtStreamList, &pNode->pStreamList);
×
9182
  }
9183

9184
  return code;
×
9185
}
9186

9187
static const char* jkMergeVgroupStmtVgroupId1 = "VgroupId1";
9188
static const char* jkMergeVgroupStmtVgroupId2 = "VgroupId2";
9189

UNCOV
9190
static int32_t mergeVgroupStmtToJson(const void* pObj, SJson* pJson) {
×
9191
  const SMergeVgroupStmt* pNode = (const SMergeVgroupStmt*)pObj;
×
9192

UNCOV
9193
  int32_t code = tjsonAddIntegerToObject(pJson, jkMergeVgroupStmtVgroupId1, pNode->vgId1);
×
9194
  if (TSDB_CODE_SUCCESS == code) {
×
9195
    code = tjsonAddIntegerToObject(pJson, jkMergeVgroupStmtVgroupId2, pNode->vgId2);
×
9196
  }
9197

9198
  return code;
×
9199
}
9200

UNCOV
9201
static int32_t jsonToMergeVgroupStmt(const SJson* pJson, void* pObj) {
×
9202
  SMergeVgroupStmt* pNode = (SMergeVgroupStmt*)pObj;
×
9203

UNCOV
9204
  int32_t code = tjsonGetIntValue(pJson, jkMergeVgroupStmtVgroupId1, &pNode->vgId1);
×
UNCOV
9205
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9206
    code = tjsonGetIntValue(pJson, jkMergeVgroupStmtVgroupId2, &pNode->vgId2);
×
9207
  }
9208

UNCOV
9209
  return code;
×
9210
}
9211

9212
static const char* jkRedistributeVgroupStmtVgroupId = "VgroupId";
9213
static const char* jkRedistributeVgroupStmtDnodeId1 = "DnodeId1";
9214
static const char* jkRedistributeVgroupStmtDnodeId2 = "DnodeId2";
9215
static const char* jkRedistributeVgroupStmtDnodeId3 = "DnodeId3";
9216
static const char* jkRedistributeVgroupStmtDnodes = "Dnodes";
9217

9218
static int32_t redistributeVgroupStmtToJson(const void* pObj, SJson* pJson) {
×
9219
  const SRedistributeVgroupStmt* pNode = (const SRedistributeVgroupStmt*)pObj;
×
9220

9221
  int32_t code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtVgroupId, pNode->vgId);
×
9222
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9223
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId1, pNode->dnodeId1);
×
9224
  }
9225
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9226
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId2, pNode->dnodeId2);
×
9227
  }
9228
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9229
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId3, pNode->dnodeId3);
×
9230
  }
9231
  if (TSDB_CODE_SUCCESS == code) {
×
9232
    code = nodeListToJson(pJson, jkRedistributeVgroupStmtDnodes, pNode->pDnodes);
×
9233
  }
9234

9235
  return code;
×
9236
}
9237

9238
static int32_t jsonToRedistributeVgroupStmt(const SJson* pJson, void* pObj) {
×
9239
  SRedistributeVgroupStmt* pNode = (SRedistributeVgroupStmt*)pObj;
×
9240

9241
  int32_t code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtVgroupId, &pNode->vgId);
×
9242
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9243
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId1, &pNode->dnodeId1);
×
9244
  }
9245
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9246
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId2, &pNode->dnodeId2);
×
9247
  }
9248
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9249
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId3, &pNode->dnodeId3);
×
9250
  }
UNCOV
9251
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9252
    code = jsonToNodeList(pJson, jkRedistributeVgroupStmtDnodes, &pNode->pDnodes);
×
9253
  }
9254

9255
  return code;
×
9256
}
9257

9258
static const char* jkSplitVgroupStmtVgroupId = "VgroupId";
9259
static const char* jkSplitVgroupStmtForce = "Force";
9260

9261
static int32_t splitVgroupStmtToJson(const void* pObj, SJson* pJson) {
×
UNCOV
9262
  const SSplitVgroupStmt* pNode = (const SSplitVgroupStmt*)pObj;
×
UNCOV
9263
  int32_t code = tjsonAddIntegerToObject(pJson, jkSplitVgroupStmtVgroupId, pNode->vgId);
×
9264
  if (TSDB_CODE_SUCCESS == code) {
×
9265
    code = tjsonAddBoolToObject(pJson, jkSplitVgroupStmtForce, pNode->force);
×
9266
  }
9267

9268
  return code;
×
9269
}
9270

9271
static int32_t jsonToSplitVgroupStmt(const SJson* pJson, void* pObj) {
×
UNCOV
9272
  SSplitVgroupStmt* pNode = (SSplitVgroupStmt*)pObj;
×
UNCOV
9273
  int32_t code = tjsonGetIntValue(pJson, jkSplitVgroupStmtVgroupId, &pNode->vgId);
×
UNCOV
9274
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9275
    code = tjsonGetBoolValue(pJson, jkSplitVgroupStmtForce, &pNode->force);
×
9276
  }
9277

9278
  return code;
×
9279
}
9280

9281
static const char* jkGrantStmtUserName = "UserName";
9282
static const char* jkGrantStmtObjName = "ObjName";
9283
static const char* jkGrantStmtPrivileges = "Privileges";
9284

9285
static int32_t grantStmtToJson(const void* pObj, SJson* pJson) {
×
9286
  const SGrantStmt* pNode = (const SGrantStmt*)pObj;
×
9287

9288
  int32_t code = tjsonAddStringToObject(pJson, jkGrantStmtUserName, pNode->principal);
×
9289
  if (TSDB_CODE_SUCCESS == code) {
×
9290
    code = tjsonAddStringToObject(pJson, jkGrantStmtObjName, pNode->objName);
×
9291
  }
9292
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9293
    char    privSet[256] = {0};
×
UNCOV
9294
    int32_t len = 0;
×
9295
    for (int32_t i = 0; i < PRIV_GROUP_CNT; ++i) {
×
UNCOV
9296
      len += snprintf(privSet + len, sizeof(privSet) - len, "%" PRIu64 ",", pNode->privileges.privSet.set[i]);
×
9297
      if (len >= sizeof(privSet)) {
×
9298
        code = TSDB_CODE_OUT_OF_RANGE;
×
UNCOV
9299
        break;
×
9300
      }
9301
    }
9302
    if (len > 0) privSet[len - 1] = '\0';
×
9303

UNCOV
9304
    if (TSDB_CODE_SUCCESS == code) {
×
9305
      code = tjsonAddStringToObject(pJson, jkGrantStmtPrivileges, privSet);
×
9306
    }
9307
  }
9308

9309
  return code;
×
9310
}
9311

9312
static int32_t jsonToGrantStmt(const SJson* pJson, void* pObj) {
×
9313
  SGrantStmt* pNode = (SGrantStmt*)pObj;
×
9314

9315
  int32_t code = tjsonGetStringValue(pJson, jkGrantStmtUserName, pNode->principal);
×
9316
  if (TSDB_CODE_SUCCESS == code) {
×
9317
    code = tjsonGetStringValue(pJson, jkGrantStmtObjName, pNode->objName);
×
9318
  }
9319
  if (TSDB_CODE_SUCCESS == code) {
×
9320
    char privSet[256] = {0};
×
9321
    code = tjsonGetStringValue(pJson, jkGrantStmtPrivileges, privSet);
×
UNCOV
9322
    if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9323
      char*   token = strtok(privSet, ",");
×
9324
      int32_t i = 0;
×
9325

UNCOV
9326
      while (token != NULL && i < PRIV_GROUP_CNT) {
×
9327
        char* cleaned_token = token;
×
9328
        while (*cleaned_token == ' ') cleaned_token++;
×
9329

9330
        char*    endptr;
UNCOV
9331
        uint64_t value = 0;
×
9332
        TAOS_CHECK_RETURN(taosStr2Uint64(cleaned_token, &value));
×
9333

9334
        if (endptr == cleaned_token || *endptr != '\0') {
×
UNCOV
9335
          code = TSDB_CODE_INVALID_PARA;
×
UNCOV
9336
          break;
×
9337
        }
9338

UNCOV
9339
        pNode->privileges.privSet.set[i] = value;
×
UNCOV
9340
        i++;
×
UNCOV
9341
        token = strtok(NULL, ",");
×
9342
      }
9343

UNCOV
9344
      if (TSDB_CODE_SUCCESS == code && i != PRIV_GROUP_CNT) {
×
UNCOV
9345
        code = TSDB_CODE_INVALID_PARA;
×
9346
      }
9347
    }
9348
  }
9349

UNCOV
9350
  return code;
×
9351
}
9352

UNCOV
9353
static int32_t revokeStmtToJson(const void* pObj, SJson* pJson) { return grantStmtToJson(pObj, pJson); }
×
9354

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

9357
static const char* jkShowStmtDbName = "DbName";
9358
static const char* jkShowStmtTbName = "TbName";
9359
static const char* jkShowStmtTableCondType = "TableCondType";
9360

9361
static int32_t showStmtToJson(const void* pObj, SJson* pJson) {
×
9362
  const SShowStmt* pNode = (const SShowStmt*)pObj;
×
9363

UNCOV
9364
  int32_t code = tjsonAddObject(pJson, jkShowStmtDbName, nodeToJson, pNode->pDbName);
×
9365
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9366
    code = tjsonAddObject(pJson, jkShowStmtTbName, nodeToJson, pNode->pTbName);
×
9367
  }
9368
  if (TSDB_CODE_SUCCESS == code) {
×
9369
    code = tjsonAddIntegerToObject(pJson, jkShowStmtTableCondType, pNode->tableCondType);
×
9370
  }
9371

9372
  return code;
×
9373
}
9374

9375
static int32_t jsonToShowStmt(const SJson* pJson, void* pObj) {
×
9376
  SShowStmt* pNode = (SShowStmt*)pObj;
×
9377

UNCOV
9378
  int32_t code = jsonToNodeObject(pJson, jkShowStmtDbName, &pNode->pDbName);
×
9379
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9380
    code = jsonToNodeObject(pJson, jkShowStmtTbName, &pNode->pTbName);
×
9381
  }
9382
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9383
    tjsonGetNumberValue(pJson, jkShowStmtTableCondType, pNode->tableCondType, code);
×
9384
  }
9385

9386
  return code;
×
9387
}
9388

UNCOV
9389
static int32_t showDnodesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9390

UNCOV
9391
static int32_t jsonToShowDnodesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9392

UNCOV
9393
static int32_t showMnodesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9394

UNCOV
9395
static int32_t jsonToShowMnodesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9396

UNCOV
9397
static int32_t showQnodesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9398

UNCOV
9399
static int32_t jsonToShowQnodesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9400

UNCOV
9401
static int32_t showAnodesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9402

UNCOV
9403
static int32_t jsonToShowAnodesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9404

UNCOV
9405
static int32_t showAnodesFullStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9406

UNCOV
9407
static int32_t jsonToShowAnodesFullStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9408

UNCOV
9409
static int32_t showArbGroupsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9410

UNCOV
9411
static int32_t jsonToShowArbGroupsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9412

UNCOV
9413
static int32_t showClusterStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9414

UNCOV
9415
static int32_t jsonToShowClusterStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9416

UNCOV
9417
static int32_t showDatabasesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9418

UNCOV
9419
static int32_t jsonToShowDatabasesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9420

UNCOV
9421
static int32_t showFunctionsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9422

UNCOV
9423
static int32_t jsonToShowFunctionsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9424

UNCOV
9425
static int32_t showIndexesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9426

UNCOV
9427
static int32_t jsonToShowIndexesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9428

UNCOV
9429
static int32_t showStablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9430

UNCOV
9431
static int32_t jsonToShowStablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9432

UNCOV
9433
static int32_t showStreamsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9434

UNCOV
9435
static int32_t jsonToShowStreamsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9436

UNCOV
9437
static int32_t showTablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9438

UNCOV
9439
static int32_t jsonToShowTablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9440

UNCOV
9441
static int32_t showTagsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9442

UNCOV
9443
static int32_t jsonToShowTagsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9444

UNCOV
9445
static int32_t showUsersStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9446

UNCOV
9447
static int32_t jsonToShowUsersStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9448

UNCOV
9449
static int32_t showRolesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9450

UNCOV
9451
static int32_t jsonToShowRolesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9452

UNCOV
9453
static int32_t showVgroupsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9454

UNCOV
9455
static int32_t jsonToShowVgroupsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9456

UNCOV
9457
static int32_t showConsumersStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9458

UNCOV
9459
static int32_t jsonToShowConsumersStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9460

UNCOV
9461
static int32_t showVariablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9462

UNCOV
9463
static int32_t jsonToShowVariablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9464

UNCOV
9465
static int32_t showGrantsFullStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9466

UNCOV
9467
static int32_t jsonToShowGrantsFullStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9468

UNCOV
9469
static int32_t showGrantsLogsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9470

UNCOV
9471
static int32_t showClusterMachinesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9472

UNCOV
9473
static int32_t showEncryptionsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9474

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

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

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

UNCOV
9481
static int32_t showUsageStmtStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
UNCOV
9482
static int32_t jsonToShowUsageStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
UNCOV
9483
static int32_t showMountsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9484
static int32_t jsonToShowMountsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9485
static int32_t showRsmasStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
UNCOV
9486
static int32_t jsonToShowRsmasStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9487

9488
static const char* jkShowDnodeVariablesStmtDnodeId = "DnodeId";
9489
static const char* jkShowDnodeVariablesStmtLikePattern = "LikePattern";
9490

UNCOV
9491
static int32_t showDnodeVariablesStmtToJson(const void* pObj, SJson* pJson) {
×
9492
  const SShowDnodeVariablesStmt* pNode = (const SShowDnodeVariablesStmt*)pObj;
×
9493

UNCOV
9494
  int32_t code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtDnodeId, nodeToJson, pNode->pDnodeId);
×
9495
  if (TSDB_CODE_SUCCESS == code) {
×
9496
    code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtLikePattern, nodeToJson, pNode->pLikePattern);
×
9497
  }
9498

9499
  return code;
×
9500
}
9501

UNCOV
9502
static int32_t jsonToShowDnodeVariablesStmt(const SJson* pJson, void* pObj) {
×
9503
  SShowDnodeVariablesStmt* pNode = (SShowDnodeVariablesStmt*)pObj;
×
9504

UNCOV
9505
  int32_t code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtDnodeId, &pNode->pDnodeId);
×
9506
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9507
    code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtLikePattern, &pNode->pLikePattern);
×
9508
  }
9509

9510
  return code;
×
9511
}
9512

UNCOV
9513
static int32_t showTransactionsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9514

UNCOV
9515
static int32_t jsonToShowTransactionsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9516

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

UNCOV
9519
static int32_t jsonToShowSubscriptionsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9520

9521
static const char* jkShowVnodesStmtDnodeId = "DnodeId";
9522
static const char* jkShowVnodesStmtDnodeEndpoint = "DnodeEndpoint";
9523

UNCOV
9524
static int32_t showVnodesStmtToJson(const void* pObj, SJson* pJson) {
×
9525
  const SShowVnodesStmt* pNode = (const SShowVnodesStmt*)pObj;
×
9526

UNCOV
9527
  int32_t code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeId, nodeToJson, pNode->pDnodeId);
×
9528
  if (TSDB_CODE_SUCCESS == code) {
×
9529
    code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeEndpoint, nodeToJson, pNode->pDnodeEndpoint);
×
9530
  }
9531

9532
  return code;
×
9533
}
9534

UNCOV
9535
static int32_t jsonToShowVnodesStmt(const SJson* pJson, void* pObj) {
×
9536
  SShowVnodesStmt* pNode = (SShowVnodesStmt*)pObj;
×
9537

UNCOV
9538
  int32_t code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeId, &pNode->pDnodeId);
×
9539
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9540
    code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeEndpoint, &pNode->pDnodeEndpoint);
×
9541
  }
9542

9543
  return code;
×
9544
}
9545

UNCOV
9546
static int32_t showUserPrivilegesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9547

UNCOV
9548
static int32_t jsonToShowUserPrivilegesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9549

9550
static int32_t showRolePrivilegesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9551

UNCOV
9552
static int32_t jsonToShowRolePrivilegesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
9553

9554
static const char* jkShowCreateDatabaseStmtDbName = "DbName";
9555

9556
static int32_t showCreateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
UNCOV
9557
  const SShowCreateDatabaseStmt* pNode = (const SShowCreateDatabaseStmt*)pObj;
×
UNCOV
9558
  return tjsonAddStringToObject(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
×
9559
}
9560

UNCOV
9561
static int32_t jsonToShowCreateDatabaseStmt(const SJson* pJson, void* pObj) {
×
9562
  SShowCreateDatabaseStmt* pNode = (SShowCreateDatabaseStmt*)pObj;
×
9563
  return tjsonGetStringValue(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
×
9564
}
9565

9566
static const char* jkShowCreateTableStmtDbName = "DbName";
9567
static const char* jkShowCreateTableStmtTableName = "TableName";
9568

UNCOV
9569
static int32_t showCreateTableStmtToJson(const void* pObj, SJson* pJson) {
×
9570
  const SShowCreateTableStmt* pNode = (const SShowCreateTableStmt*)pObj;
×
9571

UNCOV
9572
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
×
9573
  if (TSDB_CODE_SUCCESS == code) {
×
9574
    code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
×
9575
  }
9576

9577
  return code;
×
9578
}
9579

UNCOV
9580
static int32_t jsonToShowCreateTableStmt(const SJson* pJson, void* pObj) {
×
9581
  SShowCreateTableStmt* pNode = (SShowCreateTableStmt*)pObj;
×
9582

UNCOV
9583
  int32_t code = tjsonGetStringValue(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
×
9584
  if (TSDB_CODE_SUCCESS == code) {
×
9585
    code = tjsonGetStringValue(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
×
9586
  }
9587

9588
  return code;
×
9589
}
9590

UNCOV
9591
static int32_t showCreateStableStmtToJson(const void* pObj, SJson* pJson) {
×
UNCOV
9592
  return showCreateTableStmtToJson(pObj, pJson);
×
9593
}
9594

9595
static int32_t jsonToShowCreateStableStmt(const SJson* pJson, void* pObj) {
×
9596
  return jsonToShowCreateTableStmt(pJson, pObj);
×
9597
}
9598

9599
static const char* jkShowCreateViewStmtDbName = "DbName";
9600
static const char* jkShowCreateViewStmtViewName = "ViewName";
9601

UNCOV
9602
static int32_t showCreateViewStmtToJson(const void* pObj, SJson* pJson) {
×
9603
  const SShowCreateViewStmt* pNode = (const SShowCreateViewStmt*)pObj;
×
9604

UNCOV
9605
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtDbName, pNode->dbName);
×
9606
  if (TSDB_CODE_SUCCESS == code) {
×
9607
    code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtViewName, pNode->viewName);
×
9608
  }
9609

9610
  return code;
×
9611
}
9612

UNCOV
9613
static int32_t jsonToShowCreateViewStmt(const SJson* pJson, void* pObj) {
×
9614
  SShowCreateViewStmt* pNode = (SShowCreateViewStmt*)pObj;
×
9615

UNCOV
9616
  int32_t code = tjsonGetStringValue(pJson, jkShowCreateViewStmtDbName, pNode->dbName);
×
UNCOV
9617
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9618
    code = tjsonGetStringValue(pJson, jkShowCreateViewStmtViewName, pNode->viewName);
×
9619
  }
9620

9621
  return code;
×
9622
}
9623

9624
static const char* jkShowTableDistributedStmtDbName = "DbName";
9625
static const char* jkShowTableDistributedStmtTableName = "TableName";
9626

UNCOV
9627
static int32_t showTableDistributedStmtToJson(const void* pObj, SJson* pJson) {
×
9628
  const SShowTableDistributedStmt* pNode = (const SShowTableDistributedStmt*)pObj;
×
9629

UNCOV
9630
  int32_t code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
×
9631
  if (TSDB_CODE_SUCCESS == code) {
×
9632
    code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
×
9633
  }
9634

9635
  return code;
×
9636
}
9637

UNCOV
9638
static int32_t jsonToShowTableDistributedStmt(const SJson* pJson, void* pObj) {
×
9639
  SShowTableDistributedStmt* pNode = (SShowTableDistributedStmt*)pObj;
×
9640

UNCOV
9641
  int32_t code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
×
9642
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9643
    code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
×
9644
  }
9645

UNCOV
9646
  return code;
×
9647
}
9648

UNCOV
9649
static int32_t showLocalVariablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
9650

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

9653
static const char* jkShowTableTagsStmtDbName = "DbName";
9654
static const char* jkShowTableTagsStmtTbName = "TbName";
9655
static const char* jkShowTableTagsStmtTags = "Tags";
9656

9657
static int32_t showTableTagsStmtToJson(const void* pObj, SJson* pJson) {
×
9658
  const SShowTableTagsStmt* pNode = (const SShowTableTagsStmt*)pObj;
×
9659

UNCOV
9660
  int32_t code = tjsonAddObject(pJson, jkShowTableTagsStmtDbName, nodeToJson, pNode->pDbName);
×
9661
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9662
    code = tjsonAddObject(pJson, jkShowTableTagsStmtTbName, nodeToJson, pNode->pTbName);
×
9663
  }
9664
  if (TSDB_CODE_SUCCESS == code) {
×
9665
    code = nodeListToJson(pJson, jkShowTableTagsStmtTags, pNode->pTags);
×
9666
  }
9667

9668
  return code;
×
9669
}
9670

9671
static int32_t jsonToShowTableTagsStmt(const SJson* pJson, void* pObj) {
×
9672
  SShowTableTagsStmt* pNode = (SShowTableTagsStmt*)pObj;
×
9673

UNCOV
9674
  int32_t code = jsonToNodeObject(pJson, jkShowTableTagsStmtDbName, &pNode->pDbName);
×
9675
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9676
    code = jsonToNodeObject(pJson, jkShowTableTagsStmtTbName, &pNode->pTbName);
×
9677
  }
UNCOV
9678
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9679
    code = jsonToNodeList(pJson, jkShowTableTagsStmtTags, &pNode->pTags);
×
9680
  }
9681

UNCOV
9682
  return code;
×
9683
}
9684

9685
static const char* jkDeleteStmtFromTable = "FromTable";
9686
static const char* jkDeleteStmtWhere = "Where";
9687
static const char* jkDeleteStmtCountFunc = "CountFunc";
9688
static const char* jkDeleteStmtTagIndexCond = "TagIndexCond";
9689
static const char* jkDeleteStmtTimeRangeStartKey = "TimeRangeStartKey";
9690
static const char* jkDeleteStmtTimeRangeEndKey = "TimeRangeEndKey";
9691
static const char* jkDeleteStmtPrecision = "Precision";
9692
static const char* jkDeleteStmtDeleteZeroRows = "DeleteZeroRows";
9693

9694
static int32_t deleteStmtToJson(const void* pObj, SJson* pJson) {
×
9695
  const SDeleteStmt* pNode = (const SDeleteStmt*)pObj;
×
9696

9697
  int32_t code = tjsonAddObject(pJson, jkDeleteStmtFromTable, nodeToJson, pNode->pFromTable);
×
9698
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9699
    code = tjsonAddObject(pJson, jkDeleteStmtWhere, nodeToJson, pNode->pWhere);
×
9700
  }
9701
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9702
    code = tjsonAddObject(pJson, jkDeleteStmtCountFunc, nodeToJson, pNode->pCountFunc);
×
9703
  }
9704
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9705
    code = tjsonAddObject(pJson, jkDeleteStmtTagIndexCond, nodeToJson, pNode->pTagCond);
×
9706
  }
9707
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9708
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtTimeRangeStartKey, pNode->timeRange.skey);
×
9709
  }
9710
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9711
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtTimeRangeEndKey, pNode->timeRange.ekey);
×
9712
  }
9713
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9714
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtPrecision, pNode->precision);
×
9715
  }
9716
  if (TSDB_CODE_SUCCESS == code) {
×
9717
    code = tjsonAddBoolToObject(pJson, jkDeleteStmtDeleteZeroRows, pNode->deleteZeroRows);
×
9718
  }
9719

9720
  return code;
×
9721
}
9722

9723
static int32_t jsonToDeleteStmt(const SJson* pJson, void* pObj) {
×
9724
  SDeleteStmt* pNode = (SDeleteStmt*)pObj;
×
9725

9726
  int32_t code = jsonToNodeObject(pJson, jkDeleteStmtFromTable, &pNode->pFromTable);
×
9727
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9728
    code = jsonToNodeObject(pJson, jkDeleteStmtWhere, &pNode->pWhere);
×
9729
  }
9730
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9731
    code = jsonToNodeObject(pJson, jkDeleteStmtCountFunc, &pNode->pCountFunc);
×
9732
  }
9733
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9734
    code = jsonToNodeObject(pJson, jkDeleteStmtTagIndexCond, &pNode->pTagCond);
×
9735
  }
9736
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9737
    code = tjsonGetBigIntValue(pJson, jkDeleteStmtTimeRangeStartKey, &pNode->timeRange.skey);
×
9738
  }
9739
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9740
    code = tjsonGetBigIntValue(pJson, jkDeleteStmtTimeRangeEndKey, &pNode->timeRange.ekey);
×
9741
  }
9742
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9743
    code = tjsonGetUTinyIntValue(pJson, jkDeleteStmtPrecision, &pNode->precision);
×
9744
  }
UNCOV
9745
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9746
    code = tjsonGetBoolValue(pJson, jkDeleteStmtDeleteZeroRows, &pNode->deleteZeroRows);
×
9747
  }
9748

UNCOV
9749
  return code;
×
9750
}
9751

9752
static const char* jkInsertStmtTable = "Table";
9753
static const char* jkInsertStmtCols = "Cols";
9754
static const char* jkInsertStmtQuery = "Query";
9755
static const char* jkInsertStmtPrecision = "Precision";
9756

9757
static int32_t insertStmtToJson(const void* pObj, SJson* pJson) {
×
9758
  const SInsertStmt* pNode = (const SInsertStmt*)pObj;
×
9759

9760
  int32_t code = tjsonAddObject(pJson, jkInsertStmtTable, nodeToJson, pNode->pTable);
×
9761
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9762
    code = nodeListToJson(pJson, jkInsertStmtCols, pNode->pCols);
×
9763
  }
9764
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9765
    code = tjsonAddObject(pJson, jkInsertStmtQuery, nodeToJson, pNode->pQuery);
×
9766
  }
9767
  if (TSDB_CODE_SUCCESS == code) {
×
9768
    code = tjsonAddIntegerToObject(pJson, jkInsertStmtPrecision, pNode->precision);
×
9769
  }
9770

9771
  return code;
×
9772
}
9773

9774
static int32_t jsonToInsertStmt(const SJson* pJson, void* pObj) {
×
9775
  SInsertStmt* pNode = (SInsertStmt*)pObj;
×
9776

9777
  int32_t code = jsonToNodeObject(pJson, jkInsertStmtTable, &pNode->pTable);
×
9778
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9779
    code = jsonToNodeList(pJson, jkInsertStmtCols, &pNode->pCols);
×
9780
  }
9781
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9782
    code = jsonToNodeObject(pJson, jkInsertStmtQuery, &pNode->pQuery);
×
9783
  }
UNCOV
9784
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9785
    code = tjsonGetUTinyIntValue(pJson, jkInsertStmtPrecision, &pNode->precision);
×
9786
  }
9787

UNCOV
9788
  return code;
×
9789
}
9790

9791
static const char* jkTSMAOptionFuncs = "Funcs";
9792
static const char* jkTSMAOptionCols = "Cols";
9793
static const char* jkTSMAOptionInterval = "Interval";
9794
static const char* jkTSMAOptionTsPrecision = "Precision";
9795

9796
static int32_t tsmaOptionToJson(const void* pObj, SJson* pJson) {
×
UNCOV
9797
  const STSMAOptions* pNode = (const STSMAOptions*)pObj;
×
9798
  int32_t             code = nodeListToJson(pJson, jkTSMAOptionFuncs, pNode->pFuncs);
×
UNCOV
9799
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9800
    code = tjsonAddObject(pJson, jkTSMAOptionInterval, nodeToJson, pNode->pInterval);
×
9801
  }
9802
  if (TSDB_CODE_SUCCESS == code) {
×
9803
    code = tjsonAddIntegerToObject(pJson, jkTSMAOptionTsPrecision, pNode->tsPrecision);
×
9804
  }
9805
  return code;
×
9806
}
9807

9808
static int32_t jsonToTSMAOption(const SJson* pJson, void* pObj) {
×
UNCOV
9809
  STSMAOptions* pNode = (STSMAOptions*)pObj;
×
9810
  int32_t       code = jsonToNodeList(pJson, jkTSMAOptionFuncs, &pNode->pFuncs);
×
UNCOV
9811
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9812
    code = jsonToNodeObject(pJson, jkTSMAOptionInterval, &pNode->pInterval);
×
9813
  }
UNCOV
9814
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9815
    code = tjsonGetUTinyIntValue(pJson, jkTSMAOptionTsPrecision, &pNode->tsPrecision);
×
9816
  }
UNCOV
9817
  return code;
×
9818
}
9819

9820
static const char* jkCreateTSMAStmtIgnoreExists = "IgnoreExists";
9821
static const char* jkCreateTSMAStmtTsmaName = "TSMAName";
9822
static const char* jkCreateTSMAStmtDbName = "DbName";
9823
static const char* jkCreateTSMAStmtTableName = "TableName";
9824
static const char* jkCreateTSMAStmtpOptions = "Options";
9825

9826
static int32_t createTSMAStmtToJson(const void* pObj, SJson* pJson) {
×
UNCOV
9827
  const SCreateTSMAStmt* pNode = (const SCreateTSMAStmt*)pObj;
×
9828
  int32_t                code = tjsonAddBoolToObject(pJson, jkCreateTSMAStmtIgnoreExists, pNode->ignoreExists);
×
9829
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9830
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtTsmaName, pNode->tsmaName);
×
9831
  }
9832
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9833
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtDbName, pNode->dbName);
×
9834
  }
UNCOV
9835
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9836
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtTableName, pNode->tableName);
×
9837
  }
9838
  if (TSDB_CODE_SUCCESS == code) {
×
9839
    code = tjsonAddObject(pJson, jkCreateTSMAStmtpOptions, nodeToJson, pNode->pOptions);
×
9840
  }
9841
  return code;
×
9842
}
9843

9844
static int32_t jsonToCreateTSMAStmt(const SJson* pJson, void* pObj) {
×
UNCOV
9845
  SCreateTSMAStmt* pNode = (SCreateTSMAStmt*)pObj;
×
9846
  int32_t          code = tjsonGetBoolValue(pJson, jkCreateTSMAStmtIgnoreExists, &pNode->ignoreExists);
×
9847
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9848
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtTsmaName, pNode->tsmaName);
×
9849
  }
9850
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9851
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtDbName, pNode->dbName);
×
9852
  }
UNCOV
9853
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9854
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtTableName, pNode->tableName);
×
9855
  }
UNCOV
9856
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9857
    code = jsonToNodeObject(pJson, jkCreateTSMAStmtpOptions, (SNode**)&pNode->pOptions);
×
9858
  }
9859
  return code;
×
9860
}
9861

9862
static const char* jkDropTSMAStmtIgnoreNotExists = "IgnoreNotExists";
9863
static const char* jkDropTSMAStmtDbName = "DbName";
9864
static const char* jkDropTSMAStmtTsmaName = "TSMAName";
9865

9866
static int32_t dropTSMAStmtToJson(const void* pObj, SJson* pJson) {
×
UNCOV
9867
  const SDropTSMAStmt* pNode = (const SDropTSMAStmt*)pObj;
×
9868
  int32_t              code = tjsonAddBoolToObject(pJson, jkDropTSMAStmtIgnoreNotExists, pNode->ignoreNotExists);
×
UNCOV
9869
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9870
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtDbName, pNode->dbName);
×
9871
  }
9872
  if (TSDB_CODE_SUCCESS == code) {
×
9873
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName);
×
9874
  }
9875
  return code;
×
9876
}
9877

9878
static int32_t jsonToDropTSMAStmt(const SJson* pJson, void* pObj) {
×
UNCOV
9879
  SDropTSMAStmt* pNode = (SDropTSMAStmt*)pObj;
×
9880
  int32_t        code = tjsonGetBoolValue(pJson, jkDropTSMAStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
UNCOV
9881
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9882
    code = tjsonGetStringValue(pJson, jkDropTSMAStmtDbName, pNode->dbName);
×
9883
  }
UNCOV
9884
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
9885
    code = tjsonGetStringValue(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName);
×
9886
  }
UNCOV
9887
  return code;
×
9888
}
9889

9890
static int32_t specificNodeToJson(const void* pObj, SJson* pJson) {
2,147,483,647✔
9891
  switch (nodeType(pObj)) {
2,147,483,647✔
9892
    case QUERY_NODE_COLUMN:
2,147,483,647✔
9893
      return columnNodeToJson(pObj, pJson);
2,147,483,647✔
9894
    case QUERY_NODE_VALUE:
405,896,660✔
9895
      return valueNodeToJson(pObj, pJson);
405,896,660✔
9896
    case QUERY_NODE_OPERATOR:
235,285,330✔
9897
      return operatorNodeToJson(pObj, pJson);
235,285,330✔
9898
    case QUERY_NODE_LOGIC_CONDITION:
57,639,980✔
9899
      return logicConditionNodeToJson(pObj, pJson);
57,639,980✔
9900
    case QUERY_NODE_FUNCTION:
530,103,823✔
9901
      return functionNodeToJson(pObj, pJson);
530,103,823✔
9902
    case QUERY_NODE_REAL_TABLE:
100,361✔
9903
      return realTableNodeToJson(pObj, pJson);
100,361✔
9904
    case QUERY_NODE_TEMP_TABLE:
×
9905
      return tempTableNodeToJson(pObj, pJson);
×
9906
    case QUERY_NODE_JOIN_TABLE:
×
9907
      return joinTableNodeToJson(pObj, pJson);
×
9908
    case QUERY_NODE_VIRTUAL_TABLE:
×
9909
      return virtualTableNodeToJson(pObj, pJson);
×
9910
    case QUERY_NODE_PLACE_HOLDER_TABLE:
×
9911
      return placeHolderTableNodeToJson(pObj, pJson);
×
9912
    case QUERY_NODE_SLIDING_WINDOW :
×
9913
      return slidingWindowNodeToJson(pObj, pJson);
×
9914
    case QUERY_NODE_PERIOD_WINDOW:
×
9915
      return periodWindowNodeToJson(pObj, pJson);
×
9916
    case QUERY_NODE_STREAM_TRIGGER:
×
9917
      return streamTriggerNodeToJson(pObj, pJson);
×
9918
    case QUERY_NODE_STREAM:
×
UNCOV
9919
      return streamNodeToJson(pObj, pJson);
×
UNCOV
9920
    case QUERY_NODE_STREAM_TAG_DEF:
×
UNCOV
9921
      return streamTagDefNodeToJson(pObj, pJson);
×
UNCOV
9922
    case QUERY_NODE_EXTERNAL_WINDOW:
×
9923
      return externalWindowNodeToJson(pObj, pJson);
×
9924
    case QUERY_NODE_GROUPING_SET:
×
9925
      return groupingSetNodeToJson(pObj, pJson);
×
9926
    case QUERY_NODE_ORDER_BY_EXPR:
62,826,553✔
9927
      return orderByExprNodeToJson(pObj, pJson);
62,826,553✔
9928
    case QUERY_NODE_LIMIT:
34,709,702✔
9929
      return limitNodeToJson(pObj, pJson);
34,709,702✔
UNCOV
9930
    case QUERY_NODE_STATE_WINDOW:
×
9931
      return stateWindowNodeToJson(pObj, pJson);
×
9932
    case QUERY_NODE_SESSION_WINDOW:
×
9933
      return sessionWindowNodeToJson(pObj, pJson);
×
9934
    case QUERY_NODE_INTERVAL_WINDOW:
×
UNCOV
9935
      return intervalWindowNodeToJson(pObj, pJson);
×
9936
    case QUERY_NODE_NODE_LIST:
643,748,502✔
9937
      return nodeListNodeToJson(pObj, pJson);
643,748,502✔
UNCOV
9938
    case QUERY_NODE_FILL:
×
UNCOV
9939
      return fillNodeToJson(pObj, pJson);
×
UNCOV
9940
    case QUERY_NODE_RAW_EXPR:
×
9941
      break;
×
9942
    case QUERY_NODE_TARGET:
2,147,483,647✔
9943
      return targetNodeToJson(pObj, pJson);
2,147,483,647✔
9944
    case QUERY_NODE_DATABLOCK_DESC:
891,745,428✔
9945
      return dataBlockDescNodeToJson(pObj, pJson);
891,745,428✔
9946
    case QUERY_NODE_SLOT_DESC:
2,147,483,647✔
9947
      return slotDescNodeToJson(pObj, pJson);
2,147,483,647✔
9948
    case QUERY_NODE_COLUMN_DEF:
×
9949
      return columnDefNodeToJson(pObj, pJson);
×
9950
    case QUERY_NODE_DOWNSTREAM_SOURCE:
888,990✔
9951
      return downstreamSourceNodeToJson(pObj, pJson);
888,990✔
9952
    case QUERY_NODE_DATABASE_OPTIONS:
×
9953
      return databaseOptionsToJson(pObj, pJson);
×
9954
    case QUERY_NODE_TABLE_OPTIONS:
×
9955
      return tableOptionsToJson(pObj, pJson);
×
9956
    case QUERY_NODE_COLUMN_OPTIONS:
×
UNCOV
9957
      return columnOptionsToJson(pObj, pJson);
×
UNCOV
9958
    case QUERY_NODE_INDEX_OPTIONS:
×
9959
      return indexOptionsToJson(pObj, pJson);
×
9960
    case QUERY_NODE_EXPLAIN_OPTIONS:
×
UNCOV
9961
      return explainOptionsToJson(pObj, pJson);
×
UNCOV
9962
    case QUERY_NODE_STREAM_TRIGGER_OPTIONS:
×
UNCOV
9963
      return streamOptionsToJson(pObj, pJson);
×
9964
    case QUERY_NODE_LEFT_VALUE:
7,883,216✔
9965
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to serialize.
7,883,216✔
9966
    case QUERY_NODE_COLUMN_REF:
×
UNCOV
9967
      return columnReferenceToJson(pObj, pJson);
×
9968
    case QUERY_NODE_WHEN_THEN:
1,193,938✔
9969
      return whenThenNodeToJson(pObj, pJson);
1,193,938✔
9970
    case QUERY_NODE_CASE_WHEN:
999,850✔
9971
      return caseWhenNodeToJson(pObj, pJson);
999,850✔
9972
    case QUERY_NODE_EVENT_WINDOW:
×
9973
      return eventWindowNodeToJson(pObj, pJson);
×
9974
    case QUERY_NODE_WINDOW_OFFSET:
283,679✔
9975
      return windowOffsetNodeToJson(pObj, pJson);
283,679✔
UNCOV
9976
    case QUERY_NODE_COUNT_WINDOW:
×
9977
      return countWindowNodeToJson(pObj, pJson);
×
9978
    case QUERY_NODE_ANOMALY_WINDOW:
×
UNCOV
9979
      return anomalyWindowNodeToJson(pObj, pJson);
×
UNCOV
9980
    case QUERY_NODE_STREAM_NOTIFY_OPTIONS:
×
UNCOV
9981
      return streamNotifyOptionsToJson(pObj, pJson);
×
9982
    case QUERY_NODE_REMOTE_VALUE:
2,641✔
9983
      return remoteValueToJson(pObj, pJson);
2,641✔
9984
    case QUERY_NODE_SET_OPERATOR:
×
9985
      return setOperatorToJson(pObj, pJson);
×
9986
    case QUERY_NODE_TIME_RANGE:
522,310✔
9987
      return timeRangeNodeToJson(pObj, pJson);
522,310✔
9988
    case QUERY_NODE_SELECT_STMT:
100,361✔
9989
      return selectStmtToJson(pObj, pJson);
100,361✔
9990
    case QUERY_NODE_VNODE_MODIFY_STMT:
×
9991
      return vnodeModifyStmtToJson(pObj, pJson);
×
9992
    case QUERY_NODE_CREATE_DATABASE_STMT:
×
9993
      return createDatabaseStmtToJson(pObj, pJson);
×
9994
    case QUERY_NODE_ALTER_DATABASE_STMT:
×
9995
      return alterDatabaseStmtToJson(pObj, pJson);
×
9996
    case QUERY_NODE_TRIM_DATABASE_STMT:
×
9997
      return trimDatabaseStmtToJson(pObj, pJson);
×
9998
    case QUERY_NODE_SSMIGRATE_DATABASE_STMT:
×
9999
      return ssMigrateDatabaseStmtToJson(pObj, pJson);
×
10000
    case QUERY_NODE_CREATE_TABLE_STMT:
×
10001
      return createTableStmtToJson(pObj, pJson);
×
10002
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
×
10003
      return createSubTableClauseToJson(pObj, pJson);
×
10004
    case QUERY_NODE_CREATE_VIRTUAL_TABLE_STMT:
×
10005
      return createVTableStmtToJson(pObj, pJson);
×
10006
    case QUERY_NODE_CREATE_VIRTUAL_SUBTABLE_STMT:
×
10007
      return createVSubTableStmtToJson(pObj, pJson);
×
10008
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
×
10009
      return createMultiTablesStmtToJson(pObj, pJson);
×
10010
    case QUERY_NODE_DROP_TABLE_CLAUSE:
×
10011
      return dropTableClauseToJson(pObj, pJson);
×
10012
    case QUERY_NODE_DROP_TABLE_STMT:
×
10013
      return dropTableStmtToJson(pObj, pJson);
×
10014
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
×
10015
      return dropStableStmtToJson(pObj, pJson);
×
10016
    case QUERY_NODE_DROP_VIRTUAL_TABLE_STMT:
×
10017
      return dropVtableStmtToJson(pObj, pJson);
×
10018
    case QUERY_NODE_ALTER_TABLE_STMT:
×
10019
      return alterTableStmtToJson(pObj, pJson);
×
10020
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
×
10021
      return alterStableStmtToJson(pObj, pJson);
×
10022
    case QUERY_NODE_CREATE_USER_STMT:
×
10023
      return createUserStmtToJson(pObj, pJson);
×
10024
    case QUERY_NODE_CREATE_ENCRYPT_ALGORITHMS_STMT:
×
10025
      return createEncryptAlgrStmtToJson(pObj, pJson);
×
10026
    case QUERY_NODE_DROP_ENCRYPT_ALGR_STMT:
×
10027
      return dropEncryptAlgrStmtToJson(pObj, pJson);
×
10028
    case QUERY_NODE_ALTER_USER_STMT:
×
10029
      return alterUserStmtToJson(pObj, pJson);
×
10030
    case QUERY_NODE_DROP_USER_STMT:
×
10031
      return dropUserStmtToJson(pObj, pJson);
×
10032
    case QUERY_NODE_CREATE_ROLE_STMT:
×
10033
      return createRoleStmtToJson(pObj, pJson);
×
10034
    case QUERY_NODE_DROP_ROLE_STMT:
×
10035
      return dropRoleStmtToJson(pObj, pJson);
×
10036
    case QUERY_NODE_ALTER_ROLE_STMT:
×
10037
      return alterRoleStmtToJson(pObj, pJson);
×
10038
    case QUERY_NODE_USE_DATABASE_STMT:
×
10039
      return useDatabaseStmtToJson(pObj, pJson);
×
10040
    case QUERY_NODE_CREATE_DNODE_STMT:
×
10041
      return createDnodeStmtToJson(pObj, pJson);
×
10042
    case QUERY_NODE_DROP_DNODE_STMT:
×
10043
      return dropDnodeStmtToJson(pObj, pJson);
×
10044
    case QUERY_NODE_ALTER_DNODE_STMT:
×
10045
      return alterDnodeStmtToJson(pObj, pJson);
×
10046
    case QUERY_NODE_ALTER_DNODES_RELOAD_TLS_STMT:
×
10047
      return alterDnodeStmtToJson(pObj, pJson);
×
10048
    case QUERY_NODE_ALTER_ENCRYPT_KEY_STMT:
×
10049
      return alterEncryptKeyStmtToJson(pObj, pJson);
×
10050
    case QUERY_NODE_CREATE_INDEX_STMT:
×
10051
      return createIndexStmtToJson(pObj, pJson);
×
10052
    case QUERY_NODE_DROP_INDEX_STMT:
×
10053
      return dropIndexStmtToJson(pObj, pJson);
×
10054
    case QUERY_NODE_CREATE_QNODE_STMT:
×
10055
      return createQnodeStmtToJson(pObj, pJson);
×
10056
    case QUERY_NODE_DROP_QNODE_STMT:
×
10057
      return dropQnodeStmtToJson(pObj, pJson);
×
10058
    case QUERY_NODE_CREATE_ANODE_STMT:
×
10059
      return createAnodeStmtToJson(pObj, pJson);
×
10060
    case QUERY_NODE_DROP_ANODE_STMT:
×
10061
      return dropAnodeStmtToJson(pObj, pJson);
×
10062
    case QUERY_NODE_UPDATE_ANODE_STMT:
×
10063
      return updateAnodeStmtToJson(pObj, pJson);
×
10064
    case QUERY_NODE_CREATE_BNODE_STMT:
×
10065
      return createBnodeStmtToJson(pObj, pJson);
×
10066
    case QUERY_NODE_DROP_BNODE_STMT:
×
10067
      return dropBnodeStmtToJson(pObj, pJson);
×
10068
    case QUERY_NODE_CREATE_SNODE_STMT:
×
10069
      return createSnodeStmtToJson(pObj, pJson);
×
10070
    case QUERY_NODE_DROP_SNODE_STMT:
×
10071
      return dropSnodeStmtToJson(pObj, pJson);
×
10072
    case QUERY_NODE_CREATE_MNODE_STMT:
×
10073
      return createMnodeStmtToJson(pObj, pJson);
×
10074
    case QUERY_NODE_DROP_MNODE_STMT:
×
10075
      return dropMnodeStmtToJson(pObj, pJson);
×
10076
    case QUERY_NODE_CREATE_TOPIC_STMT:
×
10077
      return createTopicStmtToJson(pObj, pJson);
×
10078
    case QUERY_NODE_DROP_TOPIC_STMT:
×
10079
      return dropTopicStmtToJson(pObj, pJson);
×
10080
    case QUERY_NODE_DROP_CGROUP_STMT:
×
10081
      return dropConsumerGroupStmtToJson(pObj, pJson);
×
10082
    case QUERY_NODE_ALTER_LOCAL_STMT:
×
10083
      return alterLocalStmtToJson(pObj, pJson);
×
10084
    case QUERY_NODE_EXPLAIN_STMT:
×
10085
      return explainStmtToJson(pObj, pJson);
×
10086
    case QUERY_NODE_DESCRIBE_STMT:
×
10087
      return describeStmtToJson(pObj, pJson);
×
10088
    case QUERY_NODE_COMPACT_DATABASE_STMT:
×
10089
      return compactDatabaseStmtToJson(pObj, pJson);
×
10090
    case QUERY_NODE_ROLLUP_DATABASE_STMT:
×
10091
      return rollupDatabaseStmtToJson(pObj, pJson);
×
10092
    case QUERY_NODE_SCAN_DATABASE_STMT:
×
10093
      return scanDatabaseStmtToJson(pObj, pJson);
×
10094
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
×
10095
      return compactVgroupsStmtToJson(pObj, pJson);
×
10096
    case QUERY_NODE_ROLLUP_VGROUPS_STMT:
×
10097
      return rollupVgroupsStmtToJson(pObj, pJson);
×
10098
    case QUERY_NODE_SCAN_VGROUPS_STMT:
×
10099
      return scanVgroupsStmtToJson(pObj, pJson);
×
10100
    case QUERY_NODE_CREATE_STREAM_STMT:
×
10101
      return createStreamStmtToJson(pObj, pJson);
×
10102
    case QUERY_NODE_DROP_STREAM_STMT:
×
10103
      return dropStreamStmtToJson(pObj, pJson);
×
10104
    case QUERY_NODE_BALANCE_VGROUP_STMT:
×
10105
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to serialize.
×
10106
    case QUERY_NODE_ASSIGN_LEADER_STMT:
×
10107
      return TSDB_CODE_SUCCESS;
×
10108
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
×
10109
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupLeaderStmt has no fields to serialize.
×
10110
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
10111
      return TSDB_CODE_SUCCESS;
×
10112
    case QUERY_NODE_SET_VGROUP_KEEP_VERSION_STMT:
×
10113
      return TSDB_CODE_SUCCESS;  // SSetVgroupKeepVersionStmt has simple fields, no need to serialize.
×
10114
    case QUERY_NODE_TRIM_DATABASE_WAL_STMT:
×
10115
      return TSDB_CODE_SUCCESS;  // STrimDbWalStmt has simple fields, no need to serialize.
×
10116
    case QUERY_NODE_MERGE_VGROUP_STMT:
×
10117
      return mergeVgroupStmtToJson(pObj, pJson);
×
10118
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
×
10119
      return redistributeVgroupStmtToJson(pObj, pJson);
×
10120
    case QUERY_NODE_SPLIT_VGROUP_STMT:
×
10121
      return splitVgroupStmtToJson(pObj, pJson);
×
10122
    case QUERY_NODE_GRANT_STMT:
×
10123
      return grantStmtToJson(pObj, pJson);
×
10124
    case QUERY_NODE_REVOKE_STMT:
×
10125
      return revokeStmtToJson(pObj, pJson);
×
10126
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
10127
      return alterClusterStmtToJson(pObj, pJson);
×
10128
    case QUERY_NODE_CREATE_MOUNT_STMT:
×
10129
      return createDatabaseStmtToJson(pObj, pJson);
×
10130
    case QUERY_NODE_DROP_MOUNT_STMT:
×
10131
      return createDatabaseStmtToJson(pObj, pJson);
×
10132
    case QUERY_NODE_SHOW_DNODES_STMT:
×
10133
      return showDnodesStmtToJson(pObj, pJson);
×
10134
    case QUERY_NODE_SHOW_MNODES_STMT:
×
10135
      return showMnodesStmtToJson(pObj, pJson);
×
10136
    case QUERY_NODE_SHOW_QNODES_STMT:
×
10137
      return showQnodesStmtToJson(pObj, pJson);
×
10138
    case QUERY_NODE_SHOW_ANODES_STMT:
×
10139
      return showAnodesStmtToJson(pObj, pJson);
×
10140
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
10141
      return showAnodesFullStmtToJson(pObj, pJson);
×
10142
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
10143
      return showArbGroupsStmtToJson(pObj, pJson);
×
10144
    case QUERY_NODE_SHOW_CLUSTER_STMT:
×
10145
      return showClusterStmtToJson(pObj, pJson);
×
10146
    case QUERY_NODE_SHOW_DATABASES_STMT:
×
10147
      return showDatabasesStmtToJson(pObj, pJson);
×
10148
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
×
10149
      return showFunctionsStmtToJson(pObj, pJson);
×
UNCOV
10150
    case QUERY_NODE_SHOW_INDEXES_STMT:
×
10151
      return showIndexesStmtToJson(pObj, pJson);
×
10152
    case QUERY_NODE_SHOW_STABLES_STMT:
×
10153
      return showStablesStmtToJson(pObj, pJson);
×
10154
    case QUERY_NODE_SHOW_STREAMS_STMT:
×
UNCOV
10155
      return showStreamsStmtToJson(pObj, pJson);
×
10156
    case QUERY_NODE_SHOW_TABLES_STMT:
×
10157
    case QUERY_NODE_SHOW_VTABLES_STMT:
10158
      return showTablesStmtToJson(pObj, pJson);
×
10159
    case QUERY_NODE_SHOW_TAGS_STMT:
×
10160
      return showTagsStmtToJson(pObj, pJson);
×
10161
    case QUERY_NODE_SHOW_USERS_STMT:
×
10162
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
10163
      return showUsersStmtToJson(pObj, pJson);
×
10164
    case QUERY_NODE_SHOW_ROLES_STMT:
×
10165
      return showRolesStmtToJson(pObj, pJson);
×
10166
    case QUERY_NODE_SHOW_VGROUPS_STMT:
×
10167
      return showVgroupsStmtToJson(pObj, pJson);
×
10168
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
×
10169
      return showConsumersStmtToJson(pObj, pJson);
×
10170
    case QUERY_NODE_SHOW_VARIABLES_STMT:
×
10171
      return showVariablesStmtToJson(pObj, pJson);
×
10172
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
10173
      return showGrantsFullStmtToJson(pObj, pJson);
×
10174
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
10175
      return showGrantsLogsStmtToJson(pObj, pJson);
×
10176
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
10177
      return showClusterMachinesStmtToJson(pObj, pJson);
×
10178
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
10179
      return showEncryptionsStmtToJson(pObj, pJson);
×
10180
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
×
10181
      return showDnodeVariablesStmtToJson(pObj, pJson);
×
10182
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
×
10183
      return showTransactionsStmtToJson(pObj, pJson);
×
10184
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
×
10185
      return showSubscriptionsStmtToJson(pObj, pJson);
×
10186
    case QUERY_NODE_SHOW_VNODES_STMT:
×
10187
      return showVnodesStmtToJson(pObj, pJson);
×
10188
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
×
10189
      return showUserPrivilegesStmtToJson(pObj, pJson);
×
UNCOV
10190
    case QUERY_NODE_SHOW_ROLE_PRIVILEGES_STMT:
×
10191
      return showRolePrivilegesStmtToJson(pObj, pJson);
×
10192
    case QUERY_NODE_SHOW_ROLE_COL_PRIVILEGES_STMT:
×
10193
      return showRolePrivilegesStmtToJson(pObj, pJson);
×
10194
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
×
10195
      return showCreateDatabaseStmtToJson(pObj, pJson);
×
10196
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
×
10197
    case QUERY_NODE_SHOW_CREATE_VTABLE_STMT:
10198
      return showCreateTableStmtToJson(pObj, pJson);
×
10199
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
×
10200
      return showCreateStableStmtToJson(pObj, pJson);
×
10201
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
10202
      return showCreateViewStmtToJson(pObj, pJson);
×
10203
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
×
10204
      return showTableDistributedStmtToJson(pObj, pJson);
×
10205
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
×
10206
      return showLocalVariablesStmtToJson(pObj, pJson);
×
10207
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
×
10208
      return showTableTagsStmtToJson(pObj, pJson);
×
10209
    case QUERY_NODE_SHOW_USAGE_STMT:
×
10210
      return showUsageStmtStmtToJson(pObj, pJson);
×
10211
    case QUERY_NODE_SHOW_MOUNTS_STMT:
×
10212
      return showMountsStmtToJson(pObj, pJson);
×
10213
    case QUERY_NODE_SHOW_RSMAS_STMT:
×
10214
      return showRsmasStmtToJson(pObj, pJson);
×
10215
    case QUERY_NODE_SHOW_RETENTIONS_STMT:
×
10216
      return showRsmasStmtToJson(pObj, pJson);
×
10217
    case QUERY_NODE_SHOW_INSTANCES_STMT:
×
10218
      return showRsmasStmtToJson(pObj, pJson);
×
10219
    case QUERY_NODE_SHOW_RETENTION_DETAILS_STMT:
×
10220
      return showRsmasStmtToJson(pObj, pJson);
×
10221
    case QUERY_NODE_SHOW_ENCRYPT_ALGORITHMS_STMT:
×
UNCOV
10222
      return showStmtToJson(pObj, pJson);
×
UNCOV
10223
    case QUERY_NODE_SHOW_ENCRYPT_STATUS_STMT:
×
10224
      return showStmtToJson(pObj, pJson);
×
10225
    case QUERY_NODE_DELETE_STMT:
×
10226
      return deleteStmtToJson(pObj, pJson);
×
10227
    case QUERY_NODE_INSERT_STMT:
×
10228
      return insertStmtToJson(pObj, pJson);
×
10229
    case QUERY_NODE_LOGIC_PLAN_SCAN:
109,500✔
10230
      return logicScanNodeToJson(pObj, pJson);
109,500✔
UNCOV
10231
    case QUERY_NODE_LOGIC_PLAN_JOIN:
×
10232
      return logicJoinNodeToJson(pObj, pJson);
×
10233
    case QUERY_NODE_LOGIC_PLAN_VIRTUAL_TABLE_SCAN:
×
10234
      return logicVirtualTableScanNodeToJson(pObj, pJson);
×
10235
    case QUERY_NODE_LOGIC_PLAN_AGG:
×
10236
      return logicAggNodeToJson(pObj, pJson);
×
10237
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
65,700✔
10238
      return logicProjectNodeToJson(pObj, pJson);
65,700✔
10239
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
×
10240
      return logicVnodeModifyNodeToJson(pObj, pJson);
×
10241
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
×
10242
      return logicExchangeNodeToJson(pObj, pJson);
×
10243
    case QUERY_NODE_LOGIC_PLAN_MERGE:
×
10244
      return logicMergeNodeToJson(pObj, pJson);
×
10245
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
×
10246
      return logicWindowNodeToJson(pObj, pJson);
×
10247
    case QUERY_NODE_LOGIC_PLAN_FILL:
×
10248
      return logicFillNodeToJson(pObj, pJson);
×
10249
    case QUERY_NODE_LOGIC_PLAN_SORT:
×
10250
      return logicSortNodeToJson(pObj, pJson);
×
10251
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
×
10252
      return logicPartitionNodeToJson(pObj, pJson);
×
10253
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
×
10254
      return logicIndefRowsFuncNodeToJson(pObj, pJson);
×
10255
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
×
10256
      return logicInterpFuncNodeToJson(pObj, pJson);
×
10257
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
UNCOV
10258
      return logicForecastFuncNodeToJson(pObj, pJson);
×
UNCOV
10259
    case QUERY_NODE_LOGIC_PLAN_ANALYSIS_FUNC:
×
10260
      return logicImputationFuncNodeToJson(pObj, pJson);
×
10261
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
UNCOV
10262
      return logicGroupCacheNodeToJson(pObj, pJson);
×
UNCOV
10263
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
UNCOV
10264
      return logicDynQueryCtrlNodeToJson(pObj, pJson);
×
10265
    case QUERY_NODE_LOGIC_SUBPLAN:
109,500✔
10266
      return logicSubplanToJson(pObj, pJson);
109,500✔
UNCOV
10267
    case QUERY_NODE_LOGIC_PLAN:
×
UNCOV
10268
      return logicPlanToJson(pObj, pJson);
×
10269
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
10,627,135✔
10270
      return physiTagScanNodeToJson(pObj, pJson);
10,627,135✔
10271
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
4,956✔
10272
      return physiScanNodeToJson(pObj, pJson);
4,956✔
10273
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
535,791✔
10274
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
10275
      return physiLastRowScanNodeToJson(pObj, pJson);
535,791✔
10276
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
194,532,349✔
10277
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
10278
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
10279
      return physiTableScanNodeToJson(pObj, pJson);
194,532,349✔
10280
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
3,037,245✔
10281
      return physiVirtualTableScanNodeToJson(pObj, pJson);
3,037,245✔
10282
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
15,600,052✔
10283
      return physiSysTableScanNodeToJson(pObj, pJson);
15,600,052✔
10284
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
87,692,328✔
10285
      return physiProjectNodeToJson(pObj, pJson);
87,692,328✔
10286
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
13,608,488✔
10287
      return physiMergeJoinNodeToJson(pObj, pJson);
13,608,488✔
10288
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
1,794,619✔
10289
      return physiHashJoinNodeToJson(pObj, pJson);
1,794,619✔
10290
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
104,689,403✔
10291
      return physiAggNodeToJson(pObj, pJson);
104,689,403✔
10292
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
107,108,773✔
10293
      return physiExchangeNodeToJson(pObj, pJson);
107,108,773✔
10294
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
15,528,445✔
10295
      return physiMergeNodeToJson(pObj, pJson);
15,528,445✔
10296
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
32,220,662✔
10297
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
10298
      return physiSortNodeToJson(pObj, pJson);
32,220,662✔
10299
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
5,624,179✔
10300
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
10301
      return physiIntervalNodeToJson(pObj, pJson);
5,624,179✔
10302
    case QUERY_NODE_PHYSICAL_PLAN_EXTERNAL_WINDOW:
329,900✔
10303
    case QUERY_NODE_PHYSICAL_PLAN_HASH_EXTERNAL:
10304
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_EXTERNAL:
10305
      return physiExternalNodeToJson(pObj, pJson);
329,900✔
10306
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
406,998✔
10307
      return physiFillNodeToJson(pObj, pJson);
406,998✔
10308
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
605,216✔
10309
      return physiSessionWindowNodeToJson(pObj, pJson);
605,216✔
10310
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
725,396✔
10311
      return physiStateWindowNodeToJson(pObj, pJson);
725,396✔
10312
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
387,924✔
10313
      return physiEventWindowNodeToJson(pObj, pJson);
387,924✔
10314
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
378,074✔
10315
      return physiCountWindowNodeToJson(pObj, pJson);
378,074✔
UNCOV
10316
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
10317
      return physiAnomalyWindowNodeToJson(pObj, pJson);
×
10318
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
3,141,929✔
10319
      return physiPartitionNodeToJson(pObj, pJson);
3,141,929✔
10320
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
3,790,964✔
10321
      return physiIndefRowsFuncNodeToJson(pObj, pJson);
3,790,964✔
10322
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
2,228,021✔
10323
      return physiInterpFuncNodeToJson(pObj, pJson);
2,228,021✔
UNCOV
10324
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
UNCOV
10325
      return physiForecastFuncNodeToJson(pObj, pJson);
×
UNCOV
10326
    case QUERY_NODE_PHYSICAL_PLAN_ANALYSIS_FUNC:
×
UNCOV
10327
      return physiForecastFuncNodeToJson(pObj, pJson);
×
10328
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
279,712,425✔
10329
      return physiDispatchNodeToJson(pObj, pJson);
279,712,425✔
10330
    case QUERY_NODE_PHYSICAL_PLAN_INSERT:
549,071,472✔
10331
      break;
549,071,472✔
10332
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
200,020✔
10333
      return physiQueryInsertNodeToJson(pObj, pJson);
200,020✔
10334
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
1,649,879✔
10335
      return physiDeleteNodeToJson(pObj, pJson);
1,649,879✔
10336
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
1,793,899✔
10337
      return physiGroupCacheNodeToJson(pObj, pJson);
1,793,899✔
10338
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
3,787,195✔
10339
      return physiDynQueryCtrlNodeToJson(pObj, pJson);
3,787,195✔
10340
    case QUERY_NODE_PHYSICAL_SUBPLAN:
830,811,006✔
10341
      return subplanToJson(pObj, pJson);
830,811,006✔
10342
    case QUERY_NODE_PHYSICAL_PLAN:
634,915,637✔
10343
      return planToJson(pObj, pJson);
634,915,637✔
UNCOV
10344
    default:
×
UNCOV
10345
      break;
×
10346
  }
10347
  nodesWarn("specificNodeToJson unknown node = %s", nodesNodeName(nodeType(pObj)));
549,071,472✔
10348
  return TSDB_CODE_SUCCESS;
549,072,239✔
10349
}
10350

10351
static int32_t jsonToSpecificNode(const SJson* pJson, void* pObj) {
112,023,413✔
10352
  switch (nodeType(pObj)) {
112,023,413✔
10353
    case QUERY_NODE_COLUMN:
22,581,865✔
10354
      return jsonToColumnNode(pJson, pObj);
22,581,865✔
10355
    case QUERY_NODE_VALUE:
6,006,156✔
10356
      return jsonToValueNode(pJson, pObj);
6,006,156✔
10357
    case QUERY_NODE_OPERATOR:
1,904,311✔
10358
      return jsonToOperatorNode(pJson, pObj);
1,904,311✔
10359
    case QUERY_NODE_LOGIC_CONDITION:
140,997✔
10360
      return jsonToLogicConditionNode(pJson, pObj);
140,997✔
10361
    case QUERY_NODE_FUNCTION:
6,373,693✔
10362
      return jsonToFunctionNode(pJson, pObj);
6,373,693✔
10363
    case QUERY_NODE_REAL_TABLE:
90,544✔
10364
      return jsonToRealTableNode(pJson, pObj);
90,544✔
10365
    case QUERY_NODE_TEMP_TABLE:
×
10366
      return jsonToTempTableNode(pJson, pObj);
×
10367
    case QUERY_NODE_JOIN_TABLE:
×
10368
      return jsonToJoinTableNode(pJson, pObj);
×
10369
    case QUERY_NODE_VIRTUAL_TABLE:
×
10370
      return jsonToVirtualTableNode(pJson, pObj);
×
10371
    case QUERY_NODE_PLACE_HOLDER_TABLE:
×
10372
      return jsonToPlaceHolderTableNode(pJson, pObj);
×
10373
    case QUERY_NODE_SLIDING_WINDOW :
×
10374
      return jsonToSlidingWindowNode(pJson, pObj);
×
10375
    case QUERY_NODE_PERIOD_WINDOW:
×
10376
      return jsonToPeriodWindowNode(pJson, pObj);
×
10377
    case QUERY_NODE_STREAM_TRIGGER:
×
10378
      return jsonToStreamTriggerNode(pJson, pObj);
×
10379
    case QUERY_NODE_STREAM:
×
UNCOV
10380
      return jsonToStreamNode(pJson, pObj);
×
UNCOV
10381
    case QUERY_NODE_STREAM_TAG_DEF:
×
10382
      return jsonToStreamTagDefNode(pJson, pObj);
×
10383
    case QUERY_NODE_EXTERNAL_WINDOW:
×
10384
      return jsonToExternalWindowNode(pJson, pObj);
×
10385
    case QUERY_NODE_GROUPING_SET:
×
10386
      return jsonToGroupingSetNode(pJson, pObj);
×
10387
    case QUERY_NODE_ORDER_BY_EXPR:
132,742✔
10388
      return jsonToOrderByExprNode(pJson, pObj);
132,742✔
10389
    case QUERY_NODE_LIMIT:
×
UNCOV
10390
      return jsonToLimitNode(pJson, pObj);
×
UNCOV
10391
    case QUERY_NODE_STATE_WINDOW:
×
10392
      return jsonToStateWindowNode(pJson, pObj);
×
10393
    case QUERY_NODE_SESSION_WINDOW:
×
UNCOV
10394
      return jsonToSessionWindowNode(pJson, pObj);
×
UNCOV
10395
    case QUERY_NODE_INTERVAL_WINDOW:
×
UNCOV
10396
      return jsonToIntervalWindowNode(pJson, pObj);
×
10397
    case QUERY_NODE_NODE_LIST:
558,434✔
10398
      return jsonToNodeListNode(pJson, pObj);
558,434✔
UNCOV
10399
    case QUERY_NODE_FILL:
×
10400
      return jsonToFillNode(pJson, pObj);
×
10401
    case QUERY_NODE_TARGET:
19,924,736✔
10402
      return jsonToTargetNode(pJson, pObj);
19,924,736✔
10403
    case QUERY_NODE_DATABLOCK_DESC:
7,328,904✔
10404
      return jsonToDataBlockDescNode(pJson, pObj);
7,328,904✔
10405
    case QUERY_NODE_SLOT_DESC:
35,398,835✔
10406
      return jsonToSlotDescNode(pJson, pObj);
35,398,835✔
10407
    case QUERY_NODE_COLUMN_DEF:
×
10408
      return jsonToColumnDefNode(pJson, pObj);
×
10409
    case QUERY_NODE_DOWNSTREAM_SOURCE:
416,818✔
10410
      return jsonToDownstreamSourceNode(pJson, pObj);
416,818✔
10411
    case QUERY_NODE_DATABASE_OPTIONS:
×
10412
      return jsonToDatabaseOptions(pJson, pObj);
×
10413
    case QUERY_NODE_TABLE_OPTIONS:
×
10414
      return jsonToTableOptions(pJson, pObj);
×
10415
    case QUERY_NODE_COLUMN_OPTIONS:
×
10416
      return jsonToColumnOptions(pJson, pObj);
×
10417
    case QUERY_NODE_INDEX_OPTIONS:
×
10418
      return jsonToIndexOptions(pJson, pObj);
×
10419
    case QUERY_NODE_EXPLAIN_OPTIONS:
×
UNCOV
10420
      return jsonToExplainOptions(pJson, pObj);
×
UNCOV
10421
    case QUERY_NODE_STREAM_TRIGGER_OPTIONS:
×
UNCOV
10422
      return jsonToStreamOptions(pJson, pObj);
×
UNCOV
10423
    case QUERY_NODE_LEFT_VALUE:
×
10424
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to deserialize.
×
10425
    case QUERY_NODE_COLUMN_REF:
×
10426
      return jsonToColumnReference(pJson, pObj);
×
10427
    case QUERY_NODE_WHEN_THEN:
1,035✔
10428
      return jsonToWhenThenNode(pJson, pObj);
1,035✔
10429
    case QUERY_NODE_CASE_WHEN:
1,035✔
10430
      return jsonToCaseWhenNode(pJson, pObj);
1,035✔
10431
    case QUERY_NODE_EVENT_WINDOW:
×
10432
      return jsonToEventWindowNode(pJson, pObj);
×
10433
    case QUERY_NODE_WINDOW_OFFSET:
×
10434
      return jsonToWindowOffsetNode(pJson, pObj);
×
10435
    case QUERY_NODE_COUNT_WINDOW:
×
10436
      return jsonToCountWindowNode(pJson, pObj);
×
10437
    case QUERY_NODE_ANOMALY_WINDOW:
×
UNCOV
10438
      return jsonToAnomalyWindowNode(pJson, pObj);
×
UNCOV
10439
    case QUERY_NODE_STREAM_NOTIFY_OPTIONS:
×
UNCOV
10440
      return jsonToStreamNotifyOptions(pJson, pObj);
×
UNCOV
10441
    case QUERY_NODE_REMOTE_VALUE:
×
10442
      return jsonToRemoteValue(pJson, pObj);
×
10443
    case QUERY_NODE_SET_OPERATOR:
×
10444
      return jsonToSetOperator(pJson, pObj);
×
10445
    case QUERY_NODE_TIME_RANGE:
545,669✔
10446
      return jsonToTimeRangeNode(pJson, pObj);
545,669✔
10447
    case QUERY_NODE_SELECT_STMT:
90,544✔
10448
      return jsonToSelectStmt(pJson, pObj);
90,544✔
10449
    case QUERY_NODE_VNODE_MODIFY_STMT:
×
10450
      return jsonToVnodeModifyStmt(pJson, pObj);
×
10451
    case QUERY_NODE_CREATE_DATABASE_STMT:
×
10452
      return jsonToCreateDatabaseStmt(pJson, pObj);
×
10453
    case QUERY_NODE_ALTER_DATABASE_STMT:
×
10454
      return jsonToAlterDatabaseStmt(pJson, pObj);
×
10455
    case QUERY_NODE_TRIM_DATABASE_STMT:
×
10456
      return jsonToTrimDatabaseStmt(pJson, pObj);
×
10457
    case QUERY_NODE_SSMIGRATE_DATABASE_STMT:
×
10458
      return jsonToSsMigrateDatabaseStmt(pJson, pObj);
×
10459
    case QUERY_NODE_CREATE_TABLE_STMT:
×
10460
      return jsonToCreateTableStmt(pJson, pObj);
×
10461
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
×
10462
      return jsonToCreateSubTableClause(pJson, pObj);
×
10463
    case QUERY_NODE_CREATE_VIRTUAL_TABLE_STMT:
×
10464
      return jsonToCreateVTableStmt(pJson, pObj);
×
10465
    case QUERY_NODE_CREATE_VIRTUAL_SUBTABLE_STMT:
×
10466
      return jsonToCreateVSubTableStmt(pJson, pObj);
×
10467
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
×
10468
      return jsonToCreateMultiTablesStmt(pJson, pObj);
×
10469
    case QUERY_NODE_DROP_TABLE_CLAUSE:
×
10470
      return jsonToDropTableClause(pJson, pObj);
×
10471
    case QUERY_NODE_DROP_TABLE_STMT:
×
10472
      return jsonToDropTableStmt(pJson, pObj);
×
10473
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
×
10474
      return jsonToDropStableStmt(pJson, pObj);
×
10475
    case QUERY_NODE_DROP_VIRTUAL_TABLE_STMT:
×
10476
      return jsonToDropVtableStmt(pJson, pObj);
×
10477
    case QUERY_NODE_ALTER_TABLE_STMT:
×
10478
      return jsonToAlterTableStmt(pJson, pObj);
×
10479
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
×
10480
      return jsonToAlterStableStmt(pJson, pObj);
×
10481
    case QUERY_NODE_CREATE_USER_STMT:
×
10482
      return jsonToCreateUserStmt(pJson, pObj);
×
10483
    case QUERY_NODE_CREATE_ENCRYPT_ALGORITHMS_STMT:
×
10484
      return jsonToCreateEncryptAlgrStmt(pJson, pObj);
×
10485
    case QUERY_NODE_DROP_ENCRYPT_ALGR_STMT:
×
10486
      return jsonToDropEncryptAlgrStmt(pJson, pObj);
×
10487
    case QUERY_NODE_ALTER_USER_STMT:
×
10488
      return jsonToAlterUserStmt(pJson, pObj);
×
10489
    case QUERY_NODE_DROP_USER_STMT:
×
10490
      return jsonToDropUserStmt(pJson, pObj);
×
10491
    case QUERY_NODE_CREATE_ROLE_STMT:
×
10492
      return jsonToCreateRoleStmt(pJson, pObj);
×
10493
    case QUERY_NODE_DROP_ROLE_STMT:
×
10494
      return jsonToDropRoleStmt(pJson, pObj);
×
10495
    case QUERY_NODE_ALTER_ROLE_STMT:
×
10496
      return jsonToAlterRoleStmt(pJson, pObj);
×
10497
    case QUERY_NODE_USE_DATABASE_STMT:
×
10498
      return jsonToUseDatabaseStmt(pJson, pObj);
×
10499
    case QUERY_NODE_CREATE_DNODE_STMT:
×
10500
      return jsonToCreateDnodeStmt(pJson, pObj);
×
10501
    case QUERY_NODE_DROP_DNODE_STMT:
×
10502
      return jsonToDropDnodeStmt(pJson, pObj);
×
10503
    case QUERY_NODE_ALTER_DNODE_STMT:
×
10504
      return jsonToAlterDnodeStmt(pJson, pObj);
×
10505
    case QUERY_NODE_ALTER_DNODES_RELOAD_TLS_STMT:
×
10506
      return jsonToAlterDnodeStmt(pJson, pObj);
×
10507
    case QUERY_NODE_ALTER_ENCRYPT_KEY_STMT:
×
10508
      return jsonToAlterEncryptKeyStmt(pJson, pObj);
×
10509
    case QUERY_NODE_CREATE_INDEX_STMT:
×
10510
      return jsonToCreateIndexStmt(pJson, pObj);
×
10511
    case QUERY_NODE_DROP_INDEX_STMT:
×
10512
      return jsonToDropIndexStmt(pJson, pObj);
×
10513
    case QUERY_NODE_CREATE_QNODE_STMT:
×
10514
      return jsonToCreateQnodeStmt(pJson, pObj);
×
10515
    case QUERY_NODE_DROP_QNODE_STMT:
×
10516
      return jsonToDropQnodeStmt(pJson, pObj);
×
10517
    case QUERY_NODE_CREATE_SNODE_STMT:
×
10518
      return jsonToCreateSnodeStmt(pJson, pObj);
×
10519
    case QUERY_NODE_DROP_SNODE_STMT:
×
10520
      return jsonToDropSnodeStmt(pJson, pObj);
×
10521
    case QUERY_NODE_CREATE_MNODE_STMT:
×
10522
      return jsonToCreateMnodeStmt(pJson, pObj);
×
10523
    case QUERY_NODE_DROP_MNODE_STMT:
×
10524
      return jsonToDropMnodeStmt(pJson, pObj);
×
10525
    case QUERY_NODE_CREATE_TOPIC_STMT:
×
10526
      return jsonToCreateTopicStmt(pJson, pObj);
×
10527
    case QUERY_NODE_DROP_TOPIC_STMT:
×
10528
      return jsonToDropTopicStmt(pJson, pObj);
×
10529
    case QUERY_NODE_DROP_CGROUP_STMT:
×
10530
      return jsonToDropConsumerGroupStmt(pJson, pObj);
×
10531
    case QUERY_NODE_ALTER_LOCAL_STMT:
×
10532
      return jsonToAlterLocalStmt(pJson, pObj);
×
10533
    case QUERY_NODE_EXPLAIN_STMT:
×
10534
      return jsonToExplainStmt(pJson, pObj);
×
10535
    case QUERY_NODE_DESCRIBE_STMT:
×
10536
      return jsonToDescribeStmt(pJson, pObj);
×
10537
    case QUERY_NODE_COMPACT_DATABASE_STMT:
×
10538
      return jsonToCompactDatabaseStmt(pJson, pObj);
×
10539
    case QUERY_NODE_ROLLUP_DATABASE_STMT:
×
10540
      return jsonToRollupDatabaseStmt(pJson, pObj);
×
10541
    case QUERY_NODE_SCAN_DATABASE_STMT:
×
10542
      return jsonToScanDatabaseStmt(pJson, pObj);
×
10543
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
×
10544
      return jsonToCompactVgroupsStmt(pJson, pObj);
×
10545
    case QUERY_NODE_ROLLUP_VGROUPS_STMT:
×
10546
      return jsonToRollupVgroupsStmt(pJson, pObj);
×
10547
    case QUERY_NODE_SCAN_VGROUPS_STMT:
×
10548
      return jsonToScanVgroupsStmt(pJson, pObj);
×
10549
    case QUERY_NODE_CREATE_STREAM_STMT:
×
10550
      return jsonToCreateStreamStmt(pJson, pObj);
×
10551
    case QUERY_NODE_DROP_STREAM_STMT:
×
10552
      return jsonToDropStreamStmt(pJson, pObj);
×
10553
    case QUERY_NODE_BALANCE_VGROUP_STMT:
×
10554
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to deserialize.
×
10555
    case QUERY_NODE_ASSIGN_LEADER_STMT:
×
10556
      return TSDB_CODE_SUCCESS;
×
10557
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
×
10558
      return TSDB_CODE_SUCCESS;
×
10559
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
10560
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupLeaderStmt has no fields to deserialize.
×
10561
    case QUERY_NODE_SET_VGROUP_KEEP_VERSION_STMT:
×
10562
      return TSDB_CODE_SUCCESS;  // SSetVgroupKeepVersionStmt has simple fields, no need to deserialize.
×
10563
    case QUERY_NODE_TRIM_DATABASE_WAL_STMT:
×
10564
      return TSDB_CODE_SUCCESS;  // STrimDbWalStmt has simple fields, no need to deserialize.
×
10565
    case QUERY_NODE_MERGE_VGROUP_STMT:
×
10566
      return jsonToMergeVgroupStmt(pJson, pObj);
×
10567
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
×
10568
      return jsonToRedistributeVgroupStmt(pJson, pObj);
×
10569
    case QUERY_NODE_SPLIT_VGROUP_STMT:
×
10570
      return jsonToSplitVgroupStmt(pJson, pObj);
×
10571
    case QUERY_NODE_GRANT_STMT:
×
10572
      return jsonToGrantStmt(pJson, pObj);
×
10573
    case QUERY_NODE_REVOKE_STMT:
×
10574
      return jsonToRevokeStmt(pJson, pObj);
×
10575
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
10576
      return jsonToAlterClusterStmt(pJson, pObj);
×
10577
    case QUERY_NODE_SHOW_DNODES_STMT:
×
10578
      return jsonToShowDnodesStmt(pJson, pObj);
×
10579
    case QUERY_NODE_SHOW_MNODES_STMT:
×
10580
      return jsonToShowMnodesStmt(pJson, pObj);
×
10581
    case QUERY_NODE_SHOW_QNODES_STMT:
×
10582
      return jsonToShowQnodesStmt(pJson, pObj);
×
10583
    case QUERY_NODE_SHOW_ANODES_STMT:
×
10584
      return jsonToShowAnodesStmt(pJson, pObj);
×
10585
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
10586
      return jsonToShowAnodesFullStmt(pJson, pObj);
×
10587
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
10588
      return jsonToShowArbGroupsStmt(pJson, pObj);
×
10589
    case QUERY_NODE_SHOW_CLUSTER_STMT:
×
10590
      return jsonToShowClusterStmt(pJson, pObj);
×
10591
    case QUERY_NODE_SHOW_DATABASES_STMT:
×
10592
      return jsonToShowDatabasesStmt(pJson, pObj);
×
10593
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
×
10594
      return jsonToShowFunctionsStmt(pJson, pObj);
×
UNCOV
10595
    case QUERY_NODE_SHOW_INDEXES_STMT:
×
10596
      return jsonToShowIndexesStmt(pJson, pObj);
×
10597
    case QUERY_NODE_SHOW_STABLES_STMT:
×
10598
      return jsonToShowStablesStmt(pJson, pObj);
×
10599
    case QUERY_NODE_SHOW_STREAMS_STMT:
×
UNCOV
10600
      return jsonToShowStreamsStmt(pJson, pObj);
×
10601
    case QUERY_NODE_SHOW_TABLES_STMT:
×
10602
    case QUERY_NODE_SHOW_VTABLES_STMT:
10603
      return jsonToShowTablesStmt(pJson, pObj);
×
10604
    case QUERY_NODE_SHOW_TAGS_STMT:
×
10605
      return jsonToShowTagsStmt(pJson, pObj);
×
10606
    case QUERY_NODE_SHOW_USERS_STMT:
×
10607
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
10608
      return jsonToShowUsersStmt(pJson, pObj);
×
10609
    case QUERY_NODE_SHOW_ROLES_STMT:
×
10610
      return jsonToShowRolesStmt(pJson, pObj);
×
10611
    case QUERY_NODE_SHOW_VGROUPS_STMT:
×
10612
      return jsonToShowVgroupsStmt(pJson, pObj);
×
10613
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
×
10614
      return jsonToShowConsumersStmt(pJson, pObj);
×
10615
    case QUERY_NODE_SHOW_VARIABLES_STMT:
×
10616
      return jsonToShowVariablesStmt(pJson, pObj);
×
10617
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
10618
      return jsonToShowGrantsFullStmt(pJson, pObj);
×
10619
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
10620
      return jsonToShowGrantsLogsStmt(pJson, pObj);
×
10621
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
10622
      return jsonToShowClusterMachinesStmt(pJson, pObj);
×
10623
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
10624
      return jsonToShowEncryptionsStmt(pJson, pObj);
×
10625
    case QUERY_NODE_SHOW_ENCRYPT_ALGORITHMS_STMT:
×
10626
      return jsonToShowStmt(pJson, pObj);
×
10627
    case QUERY_NODE_SHOW_ENCRYPT_STATUS_STMT:
×
10628
      return jsonToShowStmt(pJson, pObj);
×
10629
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
×
10630
      return jsonToShowDnodeVariablesStmt(pJson, pObj);
×
10631
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
×
10632
      return jsonToShowTransactionsStmt(pJson, pObj);
×
10633
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
×
10634
      return jsonToShowSubscriptionsStmt(pJson, pObj);
×
10635
    case QUERY_NODE_SHOW_VNODES_STMT:
×
10636
      return jsonToShowVnodesStmt(pJson, pObj);
×
10637
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
×
10638
      return jsonToShowUserPrivilegesStmt(pJson, pObj);
×
UNCOV
10639
    case QUERY_NODE_SHOW_ROLE_PRIVILEGES_STMT:
×
10640
      return jsonToShowRolePrivilegesStmt(pJson, pObj);
×
10641
    case QUERY_NODE_SHOW_ROLE_COL_PRIVILEGES_STMT:
×
10642
      return jsonToShowRolePrivilegesStmt(pJson, pObj);
×
10643
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
×
10644
      return jsonToShowCreateDatabaseStmt(pJson, pObj);
×
10645
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
×
10646
    case QUERY_NODE_SHOW_CREATE_VTABLE_STMT:
10647
      return jsonToShowCreateTableStmt(pJson, pObj);
×
10648
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
×
10649
      return jsonToShowCreateStableStmt(pJson, pObj);
×
10650
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
10651
      return jsonToShowCreateViewStmt(pJson, pObj);
×
10652
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
×
10653
      return jsonToShowTableDistributedStmt(pJson, pObj);
×
10654
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
×
10655
      return jsonToShowLocalVariablesStmt(pJson, pObj);
×
10656
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
×
10657
      return jsonToShowTableTagsStmt(pJson, pObj);
×
10658
    case QUERY_NODE_SHOW_USAGE_STMT:
×
10659
      return jsonToShowUsageStmt(pJson, pObj);
×
10660
    case QUERY_NODE_SHOW_MOUNTS_STMT:
×
10661
      return jsonToShowMountsStmt(pJson, pObj);
×
10662
    case QUERY_NODE_SHOW_RSMAS_STMT:
×
10663
      return jsonToShowRsmasStmt(pJson, pObj);
×
10664
    case QUERY_NODE_SHOW_RETENTIONS_STMT:
×
10665
      return jsonToShowRsmasStmt(pJson, pObj);
×
10666
    case QUERY_NODE_SHOW_INSTANCES_STMT:
×
10667
      return jsonToShowRsmasStmt(pJson, pObj);
×
10668
    case QUERY_NODE_SHOW_RETENTION_DETAILS_STMT:
×
10669
      return jsonToShowRsmasStmt(pJson, pObj);
×
10670
    case QUERY_NODE_DELETE_STMT:
×
10671
      return jsonToDeleteStmt(pJson, pObj);
×
10672
    case QUERY_NODE_INSERT_STMT:
×
10673
      return jsonToInsertStmt(pJson, pObj);
×
10674
    case QUERY_NODE_RESTORE_DNODE_STMT:
×
10675
      return jsonToRestoreDnodeStmt(pJson, pObj);
×
10676
    case QUERY_NODE_RESTORE_QNODE_STMT:
×
10677
      return jsonToRestoreQnodeStmt(pJson, pObj);
×
10678
    case QUERY_NODE_RESTORE_MNODE_STMT:
×
10679
      return jsonToRestoreMnodeStmt(pJson, pObj);
×
10680
    case QUERY_NODE_RESTORE_VNODE_STMT:
×
10681
      return jsonToRestoreVnodeStmt(pJson, pObj);
×
10682
    case QUERY_NODE_LOGIC_PLAN_SCAN:
×
10683
      return jsonToLogicScanNode(pJson, pObj);
×
10684
    case QUERY_NODE_LOGIC_PLAN_JOIN:
×
10685
      return jsonToLogicJoinNode(pJson, pObj);
×
10686
    case QUERY_NODE_LOGIC_PLAN_VIRTUAL_TABLE_SCAN:
×
10687
      return jsonToLogicVirtualTableScanNode(pJson, pObj);
×
10688
    case QUERY_NODE_LOGIC_PLAN_AGG:
×
10689
      return jsonToLogicAggNode(pJson, pObj);
×
10690
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
×
10691
      return jsonToLogicProjectNode(pJson, pObj);
×
10692
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
×
10693
      return jsonToLogicVnodeModifyNode(pJson, pObj);
×
10694
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
×
10695
      return jsonToLogicExchangeNode(pJson, pObj);
×
10696
    case QUERY_NODE_LOGIC_PLAN_MERGE:
×
10697
      return jsonToLogicMergeNode(pJson, pObj);
×
10698
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
×
10699
      return jsonToLogicWindowNode(pJson, pObj);
×
10700
    case QUERY_NODE_LOGIC_PLAN_FILL:
×
10701
      return jsonToLogicFillNode(pJson, pObj);
×
10702
    case QUERY_NODE_LOGIC_PLAN_SORT:
×
10703
      return jsonToLogicSortNode(pJson, pObj);
×
10704
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
×
10705
      return jsonToLogicPartitionNode(pJson, pObj);
×
10706
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
×
10707
      return jsonToLogicIndefRowsFuncNode(pJson, pObj);
×
10708
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
×
10709
      return jsonToLogicInterpFuncNode(pJson, pObj);
×
10710
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
10711
      return jsonToLogicImputationFuncNode(pJson, pObj);
×
10712
    case QUERY_NODE_LOGIC_PLAN_ANALYSIS_FUNC:
×
10713
      return jsonToLogicForecastFuncNode(pJson, pObj);
×
10714
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
UNCOV
10715
      return jsonToLogicGroupCacheNode(pJson, pObj);
×
UNCOV
10716
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
10717
      return jsonToLogicDynQueryCtrlNode(pJson, pObj);
×
UNCOV
10718
    case QUERY_NODE_LOGIC_SUBPLAN:
×
10719
      return jsonToLogicSubplan(pJson, pObj);
×
10720
    case QUERY_NODE_LOGIC_PLAN:
×
10721
      return jsonToLogicPlan(pJson, pObj);
×
10722
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
10,436✔
10723
      return jsonToPhysiTagScanNode(pJson, pObj);
10,436✔
UNCOV
10724
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
×
10725
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
UNCOV
10726
      return jsonToPhysiScanNode(pJson, pObj);
×
UNCOV
10727
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
×
UNCOV
10728
      return jsonToPhysiLastRowScanNode(pJson, pObj);
×
10729
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
1,253,627✔
10730
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
10731
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
10732
      return jsonToPhysiTableScanNode(pJson, pObj);
1,253,627✔
10733
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
127,117✔
10734
      return jsonToPhysiVirtualTableScanNode(pJson, pObj);
127,117✔
10735
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
622,717✔
10736
      return jsonToPhysiSysTableScanNode(pJson, pObj);
622,717✔
10737
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
1,053,168✔
10738
      return jsonToPhysiProjectNode(pJson, pObj);
1,053,168✔
10739
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
1,180✔
10740
      return jsonToPhysiMergeJoinNode(pJson, pObj);
1,180✔
10741
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
1,180✔
10742
      return jsonToPhysiHashJoinNode(pJson, pObj);
1,180✔
10743
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
418,298✔
10744
      return jsonToPhysiAggNode(pJson, pObj);
418,298✔
10745
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
921,287✔
10746
      return jsonToPhysiExchangeNode(pJson, pObj);
921,287✔
10747
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
12,285✔
10748
      return jsonToPhysiMergeNode(pJson, pObj);
12,285✔
10749
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
120,457✔
10750
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
10751
      return jsonToPhysiSortNode(pJson, pObj);
120,457✔
10752
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
2,340✔
10753
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
10754
      return jsonToPhysiIntervalNode(pJson, pObj);
2,340✔
10755
    case QUERY_NODE_PHYSICAL_PLAN_EXTERNAL_WINDOW:
288,669✔
10756
    case QUERY_NODE_PHYSICAL_PLAN_HASH_EXTERNAL:
10757
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_EXTERNAL:
10758
      return jsonToPhysiExternalNode(pJson, pObj);
288,669✔
UNCOV
10759
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
×
UNCOV
10760
      return jsonToPhysiFillNode(pJson, pObj);
×
10761
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
2,340✔
10762
      return jsonToPhysiSessionWindowNode(pJson, pObj);
2,340✔
10763
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
13,140✔
10764
      return jsonToPhysiStateWindowNode(pJson, pObj);
13,140✔
10765
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
2,340✔
10766
      return jsonToPhysiEventWindowNode(pJson, pObj);
2,340✔
10767
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
2,340✔
10768
      return jsonToPhysiCountWindowNode(pJson, pObj);
2,340✔
10769
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
10770
      return jsonToPhysiAnomalyWindowNode(pJson, pObj);
×
UNCOV
10771
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
×
10772
      return jsonToPhysiPartitionNode(pJson, pObj);
×
UNCOV
10773
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
×
UNCOV
10774
      return jsonToPhysiIndefRowsFuncNode(pJson, pObj);
×
10775
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
×
10776
      return jsonToPhysiInterpFuncNode(pJson, pObj);
×
10777
    case QUERY_NODE_PHYSICAL_PLAN_ANALYSIS_FUNC:
×
10778
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
UNCOV
10779
      return jsonToPhysiForecastFuncNode(pJson, pObj);
×
10780
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
2,345,617✔
10781
      return jsonToPhysiDispatchNode(pJson, pObj);
2,345,617✔
UNCOV
10782
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
×
UNCOV
10783
      return jsonToPhysiQueryInsertNode(pJson, pObj);
×
UNCOV
10784
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
×
UNCOV
10785
      return jsonToPhysiDeleteNode(pJson, pObj);
×
10786
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
1,180✔
10787
      return jsonToPhysiGroupCacheNode(pJson, pObj);
1,180✔
10788
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
128,297✔
10789
      return jsonToPhysiDynQueryCtrlNode(pJson, pObj);
128,297✔
10790
    case QUERY_NODE_PHYSICAL_SUBPLAN:
2,663,381✔
10791
      return jsonToSubplan(pJson, pObj);
2,663,381✔
10792
    case QUERY_NODE_PHYSICAL_PLAN:
536,504✔
10793
      return jsonToPlan(pJson, pObj);
536,504✔
UNCOV
10794
    default:
×
UNCOV
10795
      break;
×
10796
  }
UNCOV
10797
  nodesWarn("jsonToSpecificNode unknown node = %s", nodesNodeName(nodeType(pObj)));
×
UNCOV
10798
  return TSDB_CODE_SUCCESS;
×
10799
}
10800

10801
static const char* jkNodeType = "NodeType";
10802
static const char* jkNodeName = "Name";
10803

10804
static int32_t nodeToJson(const void* pObj, SJson* pJson) {
2,147,483,647✔
10805
  const SNode* pNode = (const SNode*)pObj;
2,147,483,647✔
10806

10807
  int32_t code = tjsonAddIntegerToObject(pJson, jkNodeType, pNode->type);
2,147,483,647✔
10808
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
10809
    code = tjsonAddStringToObject(pJson, jkNodeName, nodesNodeName(pNode->type));
2,147,483,647✔
10810
  }
10811
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
10812
    code = tjsonAddObject(pJson, nodesNodeName(pNode->type), specificNodeToJson, pNode);
2,147,483,647✔
10813
    if (TSDB_CODE_SUCCESS != code) {
2,147,483,647✔
UNCOV
10814
      nodesError("%s ToJson error", nodesNodeName(pNode->type));
×
10815
    }
10816
  }
10817

10818
  return code;
2,147,483,647✔
10819
}
10820

10821
static int32_t jsonToNode(const SJson* pJson, void* pObj) {
112,034,323✔
10822
  SNode* pNode = (SNode*)pObj;
112,034,323✔
10823

10824
  int32_t code;
10825
  tjsonGetNumberValue(pJson, jkNodeType, pNode->type, code);
112,034,323✔
10826
  if (TSDB_CODE_SUCCESS == code) {
112,038,777✔
10827
    code = tjsonToObject(pJson, nodesNodeName(pNode->type), jsonToSpecificNode, pNode);
112,038,777✔
10828
    if (TSDB_CODE_SUCCESS != code) {
112,011,576✔
UNCOV
10829
      nodesError("%s toNode error", nodesNodeName(pNode->type));
×
10830
    }
10831
  }
10832

10833
  return code;
112,012,951✔
10834
}
10835

10836
static int32_t makeNodeByJson(const SJson* pJson, SNode** pNode) {
112,023,412✔
10837
  int32_t val = 0;
112,023,412✔
10838
  int32_t code = tjsonGetIntValue(pJson, jkNodeType, &val);
112,024,083✔
10839
  if (TSDB_CODE_SUCCESS == code) {
112,035,842✔
10840
    code = nodesMakeNode(val, pNode);
112,035,637✔
10841
    if (NULL == *pNode) {
112,002,472✔
UNCOV
10842
      return code;
×
10843
    }
10844
    code = jsonToNode(pJson, *pNode);
112,020,432✔
10845
  }
10846

10847
  return code;
112,009,690✔
10848
}
10849

10850
static int32_t jsonToNodeObject(const SJson* pJson, const char* pName, SNode** pNode) {
65,247,047✔
10851
  SJson* pJsonNode = tjsonGetObjectItem(pJson, pName);
65,247,047✔
10852
  if (NULL == pJsonNode) {
65,251,104✔
10853
    return TSDB_CODE_SUCCESS;
26,171,382✔
10854
  }
10855
  return makeNodeByJson(pJsonNode, pNode);
39,079,722✔
10856
}
10857

10858
int32_t nodesNodeToString(const SNode* pNode, bool format, char** pStr, int32_t* pLen) {
636,587,731✔
10859
  if (NULL == pNode || NULL == pStr) {
636,587,731✔
UNCOV
10860
    terrno = TSDB_CODE_FAILED;
×
UNCOV
10861
    return TSDB_CODE_FAILED;
×
10862
  }
10863

10864
  SJson* pJson = tjsonCreateObject();
636,590,090✔
10865
  if (NULL == pJson) {
636,589,224✔
UNCOV
10866
    return terrno;
×
10867
  }
10868

10869
  int32_t code = nodeToJson(pNode, pJson);
636,589,224✔
10870
  if (TSDB_CODE_SUCCESS != code) {
636,591,920✔
10871
    terrno = code;
954✔
UNCOV
10872
    return code;
×
10873
  }
10874

10875
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
636,590,966✔
10876
  tjsonDelete(pJson);
636,591,920✔
10877

10878
  if (NULL != pLen) {
636,591,443✔
10879
    *pLen = strlen(*pStr) + 1;
43,920✔
10880
  }
10881

10882
  return TSDB_CODE_SUCCESS;
636,591,443✔
10883
}
10884

10885
int32_t nodesStringToNode(const char* pStr, SNode** pNode) {
3,695,994✔
10886
  if (NULL == pStr || NULL == pNode) {
3,695,994✔
10887
    return TSDB_CODE_SUCCESS;
505,400✔
10888
  }
10889
  SJson* pJson = tjsonParse(pStr);
3,190,594✔
10890
  if (NULL == pJson) {
3,190,856✔
10891
    return TSDB_CODE_FAILED;
×
10892
  }
10893
  int32_t code = makeNodeByJson(pJson, pNode);
3,190,856✔
10894
  tjsonDelete(pJson);
3,191,150✔
10895
  if (TSDB_CODE_SUCCESS != code) {
3,191,150✔
UNCOV
10896
    nodesDestroyNode(*pNode);
×
UNCOV
10897
    *pNode = NULL;
×
UNCOV
10898
    terrno = code;
×
10899
    return code;
×
10900
  }
10901
  return TSDB_CODE_SUCCESS;
3,191,150✔
10902
}
10903

10904
int32_t nodesListToString(const SNodeList* pList, bool format, char** pStr, int32_t* pLen) {
680,498✔
10905
  if (NULL == pList || NULL == pStr || NULL == pLen) {
680,498✔
UNCOV
10906
    terrno = TSDB_CODE_FAILED;
×
UNCOV
10907
    return TSDB_CODE_FAILED;
×
10908
  }
10909

10910
  if (0 == LIST_LENGTH(pList)) {
680,498✔
10911
    return TSDB_CODE_SUCCESS;
196,918✔
10912
  }
10913

10914
  SJson* pJson = tjsonCreateArray();
483,580✔
10915
  if (NULL == pJson) {
483,580✔
10916
    return terrno;
×
10917
  }
10918

10919
  SNode* pNode;
10920
  FOREACH(pNode, pList) {
1,263,748✔
10921
    int32_t code = tjsonAddItem(pJson, nodeToJson, pNode);
780,168✔
10922
    if (TSDB_CODE_SUCCESS != code) {
780,168✔
UNCOV
10923
      terrno = code;
×
UNCOV
10924
      return code;
×
10925
    }
10926
  }
10927

10928
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
483,580✔
10929
  tjsonDelete(pJson);
483,580✔
10930

10931
  *pLen = strlen(*pStr) + 1;
483,580✔
10932
  return TSDB_CODE_SUCCESS;
483,580✔
10933
}
10934

10935
int32_t nodesStringToList(const char* pStr, SNodeList** pList) {
736,251✔
10936
  if (NULL == pStr || NULL == pList) {
736,251✔
10937
    return TSDB_CODE_SUCCESS;
357,474✔
10938
  }
10939
  SJson* pJson = tjsonParse(pStr);
378,777✔
10940
  if (NULL == pJson) {
378,777✔
10941
    return TSDB_CODE_FAILED;
×
10942
  }
10943
  int32_t code = jsonToNodeListImpl(pJson, pList);
378,777✔
10944
  tjsonDelete(pJson);
378,777✔
10945
  if (TSDB_CODE_SUCCESS != code) {
378,777✔
UNCOV
10946
    nodesDestroyList(*pList);
×
UNCOV
10947
    *pList = NULL;
×
UNCOV
10948
    terrno = code;
×
UNCOV
10949
    return code;
×
10950
  }
10951
  return TSDB_CODE_SUCCESS;
378,777✔
10952
}
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