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

taosdata / TDengine / #5060

17 May 2026 01:15AM UTC coverage: 73.425% (-0.02%) from 73.443%
#5060

push

travis-ci

web-flow
feat (TDgpt): Dynamic Model Synchronization Enhancements (#35344)

* refactor: do some internal refactor.

* fix: fix multiprocess sync issue.

* feat: add dynamic anomaly detection and forecasting services

* fix: log error message for undeploying model in exception handling

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* fix: handle undeploy when model exists only on disk

Agent-Logs-Url: https://github.com/taosdata/TDengine/sessions/286aafa0-c3ce-4c27-b803-2707571e9dc1

Co-authored-by: hjxilinx <8252296+hjxilinx@users.noreply.github.com>

* fix: guard dynamic registry concurrent access

Agent-Logs-Url: https://github.com/taosdata/TDengine/sessions/5e4db858-6458-40f4-ac28-d1b1b7f97c18

Co-authored-by: hjxilinx <8252296+hjxilinx@users.noreply.github.com>

* fix: tighten service list locking scope

Agent-Logs-Url: https://github.com/taosdata/TDengine/sessions/5e4db858-6458-40f4-ac28-d1b1b7f97c18

Co-authored-by: hjxilinx <8252296+hjxilinx@users.noreply.github.com>

* fix: restore prophet support and update tests per review feedback

Agent-Logs-Url: https://github.com/taosdata/TDengine/sessions/92298ae1-7da6-4d07-b20e-101c7cd0b26b

Co-authored-by: hjxilinx <8252296+hjxilinx@users.noreply.github.com>

* fix: improve test name and move copy inside lock scope

Agent-Logs-Url: https://github.com/taosdata/TDengine/sessions/92298ae1-7da6-4d07-b20e-101c7cd0b26b

Co-authored-by: hjxilinx <8252296+hjxilinx@users.noreply.github.com>

* Potential fix for pull request finding

Co-au... (continued)

281800 of 383795 relevant lines covered (73.42%)

134332207.97 hits per line

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

74.41
/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 "nodes.h"
18
#include "nodesUtil.h"
19
#include "plannodes.h"
20
#include "query.h"
21
#include "querynodes.h"
22
#include "taoserror.h"
23
#include "tdatablock.h"
24
#include "tjson.h"
25
#include "tmsg.h"
26

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

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

590
    case QUERY_NODE_CREATE_XNODE_STMT:
636✔
591
      return "CreateXnodeStmt";
636✔
592
    case QUERY_NODE_DROP_XNODE_STMT:
1,113✔
593
      return "DropXnodeStmt";
1,113✔
594
    case QUERY_NODE_ALTER_XNODE_STMT:
×
595
      return "AlterXnodeStmt";
×
596
    case QUERY_NODE_SHOW_XNODE_JOBS_STMT:
×
597
      return "ShowXnodeJobsStmt";
×
598
    default:
17,338✔
599
      break;
17,338✔
600
  }
601
  nodesWarn("nodesNodeName unknown node = %d", type);
17,338✔
602
  return "UnknownNode";
46,960✔
603
}
604

605
static int32_t nodeListToJson(SJson* pJson, const char* pName, const SNodeList* pList) {
2,147,483,647✔
606
  if (LIST_LENGTH(pList) > 0) {
2,147,483,647✔
607
    SJson* jList = tjsonAddArrayToObject(pJson, pName);
2,147,483,647✔
608
    if (NULL == jList) {
2,147,483,647✔
609
      return terrno;
×
610
    }
611
    SNode* pNode;
612
    FOREACH(pNode, pList) {
2,147,483,647✔
613
      int32_t code = tjsonAddItem(jList, nodeToJson, pNode);
2,147,483,647✔
614
      if (TSDB_CODE_SUCCESS != code) {
2,147,483,647✔
615
        return code;
×
616
      }
617
    }
618
  }
619
  return TSDB_CODE_SUCCESS;
2,147,483,647✔
620
}
621

622
static int32_t jsonToNodeListImpl(const SJson* pJsonArray, SNodeList** pList) {
87,398,278✔
623
  int32_t size = (NULL == pJsonArray ? 0 : tjsonGetArraySize(pJsonArray));
87,398,278✔
624
  if (size > 0) {
87,403,909✔
625
    int32_t code = nodesMakeList(pList);
49,987,391✔
626
    if (NULL == *pList) {
49,986,915✔
627
      return code;
×
628
    }
629
  }
630

631
  int32_t code = TSDB_CODE_SUCCESS;
87,403,433✔
632
  for (int32_t i = 0; i < size; ++i) {
231,020,128✔
633
    SJson* pJsonItem = tjsonGetArrayItem(pJsonArray, i);
143,615,293✔
634
    SNode* pNode = NULL;
143,615,107✔
635
    code = makeNodeByJson(pJsonItem, &pNode);
143,615,427✔
636
    if (TSDB_CODE_SUCCESS == code) {
143,610,404✔
637
      code = nodesListAppend(*pList, pNode);
143,611,802✔
638
    }
639
    if (TSDB_CODE_SUCCESS != code) {
143,616,017✔
640
      break;
×
641
    }
642
  }
643
  return code;
87,404,995✔
644
}
645

646
static int32_t jsonToNodeList(const SJson* pJson, const char* pName, SNodeList** pList) {
86,633,639✔
647
  return jsonToNodeListImpl(tjsonGetObjectItem(pJson, pName), pList);
86,633,639✔
648
}
649

650
// common definitions
651
static const char* jkStmtIgnoreExists = "IgnoreExists";
652
static const char* jkStmtIgnoreNotExists = "IgnoreNotExists";
653

654
static const char* jkTableComInfoNumOfTags = "NumOfTags";
655
static const char* jkTableComInfoPrecision = "Precision";
656
static const char* jkTableComInfoNumOfColumns = "NumOfColumns";
657
static const char* jkTableComInfoRowSize = "RowSize";
658

659
static int32_t tableComInfoToJson(const void* pObj, SJson* pJson) {
330,587✔
660
  const STableComInfo* pNode = (const STableComInfo*)pObj;
330,587✔
661

662
  int32_t code = tjsonAddIntegerToObject(pJson, jkTableComInfoNumOfTags, pNode->numOfTags);
330,587✔
663
  if (TSDB_CODE_SUCCESS == code) {
330,587✔
664
    code = tjsonAddIntegerToObject(pJson, jkTableComInfoPrecision, pNode->precision);
330,587✔
665
  }
666
  if (TSDB_CODE_SUCCESS == code) {
330,587✔
667
    code = tjsonAddIntegerToObject(pJson, jkTableComInfoNumOfColumns, pNode->numOfColumns);
330,587✔
668
  }
669
  if (TSDB_CODE_SUCCESS == code) {
330,587✔
670
    code = tjsonAddIntegerToObject(pJson, jkTableComInfoRowSize, pNode->rowSize);
330,587✔
671
  }
672

673
  return code;
330,587✔
674
}
675

676
static int32_t jsonToTableComInfo(const SJson* pJson, void* pObj) {
277,490✔
677
  STableComInfo* pNode = (STableComInfo*)pObj;
277,490✔
678

679
  int32_t code;
680
  tjsonGetNumberValue(pJson, jkTableComInfoNumOfTags, pNode->numOfTags, code);
277,490✔
681
  if (TSDB_CODE_SUCCESS == code) {
277,490✔
682
    tjsonGetNumberValue(pJson, jkTableComInfoPrecision, pNode->precision, code);
277,490✔
683
  }
684
  if (TSDB_CODE_SUCCESS == code) {
277,490✔
685
    tjsonGetNumberValue(pJson, jkTableComInfoNumOfColumns, pNode->numOfColumns, code);
277,490✔
686
  }
687
  if (TSDB_CODE_SUCCESS == code) {
277,490✔
688
    tjsonGetNumberValue(pJson, jkTableComInfoRowSize, pNode->rowSize, code);
277,490✔
689
  }
690

691
  return code;
277,490✔
692
}
693

694
static const char* jkSchemaType = "Type";
695
static const char* jkSchemaColId = "ColId";
696
static const char* jkSchemaBytes = "bytes";
697
static const char* jkSchemaName = "Name";
698
static const char* jkSchemaFlags = "Flags";
699

700
static int32_t schemaToJson(const void* pObj, SJson* pJson) {
2,190,889✔
701
  const SSchema* pNode = (const SSchema*)pObj;
2,190,889✔
702

703
  int32_t code = tjsonAddIntegerToObject(pJson, jkSchemaType, pNode->type);
2,190,889✔
704
  if (TSDB_CODE_SUCCESS == code) {
2,190,889✔
705
    code = tjsonAddIntegerToObject(pJson, jkSchemaColId, pNode->colId);
2,190,889✔
706
  }
707
  if (TSDB_CODE_SUCCESS == code) {
2,190,889✔
708
    code = tjsonAddIntegerToObject(pJson, jkSchemaBytes, pNode->bytes);
2,190,889✔
709
  }
710
  if (TSDB_CODE_SUCCESS == code) {
2,190,889✔
711
    code = tjsonAddStringToObject(pJson, jkSchemaName, pNode->name);
2,190,889✔
712
  }
713
  if (TSDB_CODE_SUCCESS == code) {
2,190,889✔
714
    code = tjsonAddIntegerToObject(pJson, jkSchemaFlags, pNode->flags);
2,190,889✔
715
  }
716

717
  return code;
2,190,889✔
718
}
719

720
static int32_t jsonToSchema(const SJson* pJson, void* pObj) {
2,133,226✔
721
  SSchema* pNode = (SSchema*)pObj;
2,133,226✔
722

723
  int32_t code;
724
  tjsonGetNumberValue(pJson, jkSchemaType, pNode->type, code);
2,133,226✔
725
  if (TSDB_CODE_SUCCESS == code) {
2,133,226✔
726
    tjsonGetNumberValue(pJson, jkSchemaColId, pNode->colId, code);
2,133,226✔
727
  }
728
  if (TSDB_CODE_SUCCESS == code) {
2,133,226✔
729
    tjsonGetNumberValue(pJson, jkSchemaBytes, pNode->bytes, code);
2,133,226✔
730
  }
731
  if (TSDB_CODE_SUCCESS == code) {
2,133,226✔
732
    code = tjsonGetStringValue1(pJson, jkSchemaName, pNode->name, sizeof(pNode->name));
2,133,226✔
733
  }
734
  if (TSDB_CODE_SUCCESS == code) {
2,133,226✔
735
    tjsonGetNumberValue(pJson, jkSchemaFlags, pNode->flags, code);
2,133,226✔
736
  }
737

738
  return code;
2,133,226✔
739
}
740

741
static const char* jkRefColHasRef = "HasRef";
742
static const char* jkRefColColId = "ColId";
743
static const char* jkRefColDbName = "DbName";
744
static const char* jkRefColTableName = "TableName";
745
static const char* jkRefColColName = "ColName";
746
static const char* jkSchemaExtColId = "ColId";
747
static const char* jkSchemaExtCompress = "Compress";
748
static const char* jkSchemaExtTypeMod = "TypeMod";
749

750
static int32_t refColToJson(const void* pObj, SJson* pJson) {
×
751
  const SColRef* pCol = (const SColRef*)pObj;
×
752

753
  int32_t code = tjsonAddBoolToObject(pJson, jkRefColHasRef, pCol->hasRef);
×
754
  if (TSDB_CODE_SUCCESS == code) {
×
755
    code = tjsonAddIntegerToObject(pJson, jkRefColColId, pCol->id);
×
756
  }
757
  if (TSDB_CODE_SUCCESS == code) {
×
758
    code = tjsonAddStringToObject(pJson, jkRefColDbName, pCol->refDbName);
×
759
  }
760
  if (TSDB_CODE_SUCCESS == code) {
×
761
    code = tjsonAddStringToObject(pJson, jkRefColTableName, pCol->refTableName);
×
762
  }
763
  if (TSDB_CODE_SUCCESS == code) {
×
764
    code = tjsonAddStringToObject(pJson, jkRefColColName, pCol->refColName);
×
765
  }
766

767
  return code;
×
768
}
769

770
static int32_t jsonToRefCol(const SJson* pJson, void* pObj) {
×
771
  SColRef* pCol = (SColRef*)pObj;
×
772

773
  int32_t code = tjsonGetBoolValue(pJson, jkRefColHasRef, &pCol->hasRef);
×
774
  if (TSDB_CODE_SUCCESS == code) {
×
775
    code = tjsonGetSmallIntValue(pJson, jkRefColColId, &pCol->id);
×
776
  }
777
  if (TSDB_CODE_SUCCESS == code) {
×
778
    code = tjsonGetStringValue1(pJson, jkRefColDbName, pCol->refDbName, sizeof(pCol->refDbName));
×
779
  }
780
  if (TSDB_CODE_SUCCESS == code) {
×
781
    code = tjsonGetStringValue1(pJson, jkRefColTableName, pCol->refTableName, sizeof(pCol->refTableName));
×
782
  }
783
  if (TSDB_CODE_SUCCESS == code) {
×
784
    code = tjsonGetStringValue1(pJson, jkRefColColName, pCol->refColName, sizeof(pCol->refColName));
×
785
  }
786

787
  return code;
×
788
}
789

790
static int32_t schemaExtToJson(const void* pObj, SJson* pJson) {
797,903✔
791
  const SSchemaExt* pSchemaExt = (const SSchemaExt*)pObj;
797,903✔
792

793
  int32_t code = tjsonAddIntegerToObject(pJson, jkSchemaExtColId, pSchemaExt->colId);
797,903✔
794
  if (TSDB_CODE_SUCCESS == code) {
797,903✔
795
    code = tjsonAddIntegerToObject(pJson, jkSchemaExtCompress, pSchemaExt->compress);
797,903✔
796
  }
797
  if (TSDB_CODE_SUCCESS == code) {
797,903✔
798
    code = tjsonAddIntegerToObject(pJson, jkSchemaExtTypeMod, pSchemaExt->typeMod);
797,903✔
799
  }
800

801
  return code;
797,903✔
802
}
803

804
static int32_t jsonToSchemaExt(const SJson* pJson, void* pObj) {
907,129✔
805
  SSchemaExt* pSchemaExt = (SSchemaExt*)pObj;
907,129✔
806

807
  int32_t code = tjsonGetSmallIntValue(pJson, jkSchemaExtColId, &pSchemaExt->colId);
907,129✔
808
  if (TSDB_CODE_SUCCESS == code) {
907,129✔
809
    code = tjsonGetUIntValue(pJson, jkSchemaExtCompress, &pSchemaExt->compress);
907,129✔
810
  }
811
  if (TSDB_CODE_SUCCESS == code) {
907,129✔
812
    code = tjsonGetIntValue(pJson, jkSchemaExtTypeMod, &pSchemaExt->typeMod);
907,129✔
813
  }
814

815
  return code;
907,129✔
816
}
817

818
static const char* jkTableMetaVgId = "VgId";
819
static const char* jkTableMetaTableType = "TableType";
820
static const char* jkTableMetaUid = "Uid";
821
static const char* jkTableMetaSuid = "Suid";
822
static const char* jkTableMetaColRefNum = "ColRefNum";
823
static const char* jkTableMetaRefCols = "RefCols";
824
static const char* jkTableMetaSchemaExts = "SchemaExts";
825
static const char* jkTableMetaSversion = "Sversion";
826
static const char* jkTableMetaTversion = "Tversion";
827
static const char* jkTableMetaRversion = "Rversion";
828
static const char* jkTableMetaComInfo = "ComInfo";
829
static const char* jkTableMetaColSchemas = "ColSchemas";
830

831
static int32_t tableMetaToJson(const void* pObj, SJson* pJson) {
330,587✔
832
  const STableMeta* pNode = (const STableMeta*)pObj;
330,587✔
833

834
  int32_t code = tjsonAddIntegerToObject(pJson, jkTableMetaVgId, pNode->vgId);
330,587✔
835
  if (TSDB_CODE_SUCCESS == code) {
330,587✔
836
    code = tjsonAddIntegerToObject(pJson, jkTableMetaTableType, pNode->tableType);
330,587✔
837
  }
838
  if (TSDB_CODE_SUCCESS == code) {
330,587✔
839
    code = tjsonAddIntegerToObject(pJson, jkTableMetaUid, pNode->uid);
330,587✔
840
  }
841
  if (TSDB_CODE_SUCCESS == code) {
330,587✔
842
    code = tjsonAddIntegerToObject(pJson, jkTableMetaSuid, pNode->suid);
330,587✔
843
  }
844
  if (TSDB_CODE_SUCCESS == code) {
330,587✔
845
    code = tjsonAddIntegerToObject(pJson, jkTableMetaColRefNum, pNode->colRef ? pNode->numOfColRefs : 0);
330,587✔
846
  }
847
  if (TSDB_CODE_SUCCESS == code && pNode->numOfColRefs > 0 && pNode->colRef) {
330,587✔
848
    code = tjsonAddArray(pJson, jkTableMetaRefCols, refColToJson, pNode->colRef, sizeof(SColRef), pNode->numOfColRefs);
×
849
  }
850
  if (TSDB_CODE_SUCCESS == code && pNode->schemaExt) {
330,587✔
851
    code = tjsonAddArray(pJson, jkTableMetaSchemaExts, schemaExtToJson, pNode->schemaExt, sizeof(SSchemaExt),
140,287✔
852
                         pNode->tableInfo.numOfColumns);
140,287✔
853
  }
854
  if (TSDB_CODE_SUCCESS == code) {
330,587✔
855
    code = tjsonAddIntegerToObject(pJson, jkTableMetaSversion, pNode->sversion);
330,587✔
856
  }
857
  if (TSDB_CODE_SUCCESS == code) {
330,587✔
858
    code = tjsonAddIntegerToObject(pJson, jkTableMetaTversion, pNode->tversion);
330,587✔
859
  }
860
  if (TSDB_CODE_SUCCESS == code) {
330,587✔
861
    code = tjsonAddIntegerToObject(pJson, jkTableMetaRversion, pNode->rversion);
330,587✔
862
  }
863
  if (TSDB_CODE_SUCCESS == code) {
330,587✔
864
    code = tjsonAddObject(pJson, jkTableMetaComInfo, tableComInfoToJson, &pNode->tableInfo);
330,587✔
865
  }
866
  if (TSDB_CODE_SUCCESS == code) {
330,587✔
867
    code = tjsonAddArray(pJson, jkTableMetaColSchemas, schemaToJson, pNode->schema, sizeof(SSchema),
330,587✔
868
                         TABLE_TOTAL_COL_NUM(pNode));
330,587✔
869
  }
870

871
  return code;
330,587✔
872
}
873

874
static int32_t jsonToTableMeta(const SJson* pJson, void* pObj) {
277,490✔
875
  STableMeta* pNode = (STableMeta*)pObj;
277,490✔
876
  SJson*      pJsonSchemaExt = tjsonGetObjectItem(pJson, jkTableMetaSchemaExts);
277,490✔
877
  SJson*      pJsonRefCols = tjsonGetObjectItem(pJson, jkTableMetaRefCols);
277,490✔
878
  int32_t     schemaExtNum = (NULL == pJsonSchemaExt) ? 0 : tjsonGetArraySize(pJsonSchemaExt);
277,490✔
879
  int32_t     colRefNum = (NULL == pJsonRefCols) ? 0 : tjsonGetArraySize(pJsonRefCols);
277,490✔
880

881
  int32_t code;
882
  tjsonGetNumberValue(pJson, jkTableMetaVgId, pNode->vgId, code);
277,490✔
883
  if (TSDB_CODE_SUCCESS == code) {
277,490✔
884
    tjsonGetNumberValue(pJson, jkTableMetaTableType, pNode->tableType, code);
277,490✔
885
  }
886
  if (TSDB_CODE_SUCCESS == code) {
277,490✔
887
    tjsonGetNumberValue(pJson, jkTableMetaUid, pNode->uid, code);
277,490✔
888
  }
889
  if (TSDB_CODE_SUCCESS == code) {
277,490✔
890
    tjsonGetNumberValue(pJson, jkTableMetaSuid, pNode->suid, code);
277,490✔
891
  }
892
  if (TSDB_CODE_SUCCESS == code) {
277,490✔
893
    tjsonGetNumberValue(pJson, jkTableMetaColRefNum, pNode->numOfColRefs, code);
277,490✔
894
  }
895
  if (TSDB_CODE_SUCCESS == code) {
277,490✔
896
    tjsonGetNumberValue(pJson, jkTableMetaSversion, pNode->sversion, code);
277,490✔
897
  }
898
  if (TSDB_CODE_SUCCESS == code) {
277,490✔
899
    tjsonGetNumberValue(pJson, jkTableMetaTversion, pNode->tversion, code);
277,490✔
900
  }
901
  if (TSDB_CODE_SUCCESS == code) {
277,490✔
902
    tjsonGetNumberValue(pJson, jkTableMetaRversion, pNode->rversion, code);
277,490✔
903
  }
904
  if (TSDB_CODE_SUCCESS == code) {
277,490✔
905
    code = tjsonToObject(pJson, jkTableMetaComInfo, jsonToTableComInfo, &pNode->tableInfo);
277,490✔
906
  }
907
  if (TSDB_CODE_SUCCESS == code) {
277,490✔
908
    code = tjsonToArray(pJson, jkTableMetaColSchemas, jsonToSchema, pNode->schema, sizeof(SSchema));
277,490✔
909
  }
910
  if (TSDB_CODE_SUCCESS == code) {
277,490✔
911
    pNode->schemaExt = schemaExtNum > 0 ? (SSchemaExt *)((char *)pNode + TABLE_META_BASE_SIZE(pNode)) : NULL;
277,490✔
912
    if (NULL != pNode->schemaExt) {
277,490✔
913
      code = tjsonToArray(pJson, jkTableMetaSchemaExts, jsonToSchemaExt, pNode->schemaExt, sizeof(SSchemaExt));
147,090✔
914
    }
915
  }
916
  if (TSDB_CODE_SUCCESS == code) {
277,490✔
917
    pNode->colRef = colRefNum > 0
277,490✔
918
                        ? (SColRef *)((char *)pNode + TABLE_META_BASE_SIZE(pNode) + TABLE_META_SCHEMA_EXT_SIZE(pNode))
×
919
                        : NULL;
277,490✔
920
    if (NULL != pNode->colRef) {
277,490✔
921
      code = tjsonToArray(pJson, jkTableMetaRefCols, jsonToRefCol, pNode->colRef, sizeof(SColRef));
×
922
    }
923
  }
924
  pNode->tagRef = NULL;
277,490✔
925
  pNode->numOfTagRefs = 0;
277,490✔
926

927
  return code;
277,490✔
928
}
929

930
static const char* jkLogicPlanTargets = "Targets";
931
static const char* jkLogicPlanConditions = "Conditions";
932
static const char* jkLogicPlanChildren = "Children";
933
static const char* jkLogicPlanLimit = "Limit";
934
static const char* jkLogicPlanSlimit = "SLimit";
935
static const char* jkLogicPlanRequireDataOrder = "RequireDataOrder";
936
static const char* jkLogicPlanResultDataOrder = "ResultDataOrder";
937
static const char* jkLogicPlanGroupAction = "GroupAction";
938

939
static int32_t logicPlanNodeToJson(const void* pObj, SJson* pJson) {
1,051,988✔
940
  const SLogicNode* pNode = (const SLogicNode*)pObj;
1,051,988✔
941

942
  int32_t code = nodeListToJson(pJson, jkLogicPlanTargets, pNode->pTargets);
1,051,988✔
943
  if (TSDB_CODE_SUCCESS == code) {
1,051,988✔
944
    code = tjsonAddObject(pJson, jkLogicPlanConditions, nodeToJson, pNode->pConditions);
1,051,988✔
945
  }
946
  if (TSDB_CODE_SUCCESS == code) {
1,051,988✔
947
    code = nodeListToJson(pJson, jkLogicPlanChildren, pNode->pChildren);
1,051,988✔
948
  }
949
  if (TSDB_CODE_SUCCESS == code) {
1,051,988✔
950
    code = tjsonAddObject(pJson, jkLogicPlanLimit, nodeToJson, pNode->pLimit);
1,051,988✔
951
  }
952
  if (TSDB_CODE_SUCCESS == code) {
1,051,988✔
953
    code = tjsonAddObject(pJson, jkLogicPlanSlimit, nodeToJson, pNode->pSlimit);
1,051,988✔
954
  }
955
  if (TSDB_CODE_SUCCESS == code) {
1,051,988✔
956
    code = tjsonAddIntegerToObject(pJson, jkLogicPlanRequireDataOrder, pNode->requireDataOrder);
1,051,988✔
957
  }
958
  if (TSDB_CODE_SUCCESS == code) {
1,051,988✔
959
    code = tjsonAddIntegerToObject(pJson, jkLogicPlanResultDataOrder, pNode->resultDataOrder);
1,051,988✔
960
  }
961
  if (TSDB_CODE_SUCCESS == code) {
1,051,988✔
962
    code = tjsonAddIntegerToObject(pJson, jkLogicPlanGroupAction, pNode->groupAction);
1,051,988✔
963
  }
964

965
  return code;
1,051,988✔
966
}
967

968
static int32_t jsonToLogicPlanNode(const SJson* pJson, void* pObj) {
357,000✔
969
  SLogicNode* pNode = (SLogicNode*)pObj;
357,000✔
970

971
  int32_t code = jsonToNodeList(pJson, jkLogicPlanTargets, &pNode->pTargets);
357,000✔
972
  if (TSDB_CODE_SUCCESS == code) {
357,000✔
973
    code = jsonToNodeObject(pJson, jkLogicPlanConditions, &pNode->pConditions);
357,000✔
974
  }
975
  if (TSDB_CODE_SUCCESS == code) {
357,000✔
976
    code = jsonToNodeList(pJson, jkLogicPlanChildren, &pNode->pChildren);
357,000✔
977
  }
978
  if (TSDB_CODE_SUCCESS == code) {
357,000✔
979
    code = jsonToNodeObject(pJson, jkLogicPlanLimit, &pNode->pLimit);
357,000✔
980
  }
981
  if (TSDB_CODE_SUCCESS == code) {
357,000✔
982
    code = jsonToNodeObject(pJson, jkLogicPlanSlimit, &pNode->pSlimit);
357,000✔
983
  }
984
  if (TSDB_CODE_SUCCESS == code) {
357,000✔
985
    tjsonGetNumberValue(pJson, jkLogicPlanRequireDataOrder, pNode->requireDataOrder, code);
357,000✔
986
  }
987
  if (TSDB_CODE_SUCCESS == code) {
357,000✔
988
    tjsonGetNumberValue(pJson, jkLogicPlanResultDataOrder, pNode->resultDataOrder, code);
357,000✔
989
  }
990
  if (TSDB_CODE_SUCCESS == code) {
357,000✔
991
    tjsonGetNumberValue(pJson, jkLogicPlanGroupAction, pNode->groupAction, code);
357,000✔
992
  }
993

994
  return code;
357,000✔
995
}
996

997
static const char* jkScanLogicPlanScanCols = "ScanCols";
998
static const char* jkScanLogicPlanScanPseudoCols = "ScanPseudoCols";
999
static const char* jkScanLogicPlanTableType = "TableType";
1000
static const char* jkScanLogicPlanTableId = "TableId";
1001
static const char* jkScanLogicPlanStableId = "StableId";
1002
static const char* jkScanLogicPlanScanType = "ScanType";
1003
static const char* jkScanLogicPlanScanCount = "ScanCount";
1004
static const char* jkScanLogicPlanReverseScanCount = "ReverseScanCount";
1005
static const char* jkScanLogicPlanDynamicScanFuncs = "DynamicScanFuncs";
1006
static const char* jkScanLogicPlanDataRequired = "DataRequired";
1007
static const char* jkScanLogicPlanTagCond = "TagCond";
1008
static const char* jkScanLogicPlanGroupTags = "GroupTags";
1009
static const char* jkScanLogicPlanOnlyMetaCtbIdx = "OnlyMetaCtbIdx";
1010
static const char* jkScanLogicPlanFilesetDelimited = "FilesetDelimited";
1011
static const char* jkScanLogicPlanParaTablesSort = "ParaTablesSort";
1012
static const char* jkScanLogicPlanSmallDataTsSort = "SmallDataTsSort";
1013

1014
static int32_t logicScanNodeToJson(const void* pObj, SJson* pJson) {
444,830✔
1015
  const SScanLogicNode* pNode = (const SScanLogicNode*)pObj;
444,830✔
1016

1017
  int32_t code = logicPlanNodeToJson(pObj, pJson);
444,830✔
1018
  if (TSDB_CODE_SUCCESS == code) {
444,830✔
1019
    code = nodeListToJson(pJson, jkScanLogicPlanScanCols, pNode->pScanCols);
444,830✔
1020
  }
1021
  if (TSDB_CODE_SUCCESS == code) {
444,830✔
1022
    code = nodeListToJson(pJson, jkScanLogicPlanScanPseudoCols, pNode->pScanPseudoCols);
444,830✔
1023
  }
1024
  if (TSDB_CODE_SUCCESS == code) {
444,830✔
1025
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanTableType, pNode->tableType);
444,830✔
1026
  }
1027
  if (TSDB_CODE_SUCCESS == code) {
444,830✔
1028
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanTableId, pNode->tableId);
444,830✔
1029
  }
1030
  if (TSDB_CODE_SUCCESS == code) {
444,830✔
1031
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanStableId, pNode->stableId);
444,830✔
1032
  }
1033
  if (TSDB_CODE_SUCCESS == code) {
444,830✔
1034
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanScanType, pNode->scanType);
444,830✔
1035
  }
1036
  if (TSDB_CODE_SUCCESS == code) {
444,830✔
1037
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanScanCount, pNode->scanSeq[0]);
444,830✔
1038
  }
1039
  if (TSDB_CODE_SUCCESS == code) {
444,830✔
1040
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanReverseScanCount, pNode->scanSeq[1]);
444,830✔
1041
  }
1042
  if (TSDB_CODE_SUCCESS == code) {
444,830✔
1043
    code = tjsonAddObject(pJson, jkScanLogicPlanDynamicScanFuncs, nodeToJson, pNode->pDynamicScanFuncs);
444,830✔
1044
  }
1045
  if (TSDB_CODE_SUCCESS == code) {
444,830✔
1046
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanDataRequired, pNode->dataRequired);
444,830✔
1047
  }
1048
  if (TSDB_CODE_SUCCESS == code) {
444,830✔
1049
    code = tjsonAddObject(pJson, jkScanLogicPlanTagCond, nodeToJson, pNode->pTagCond);
444,830✔
1050
  }
1051
  if (TSDB_CODE_SUCCESS == code) {
444,830✔
1052
    code = nodeListToJson(pJson, jkScanLogicPlanGroupTags, pNode->pGroupTags);
444,830✔
1053
  }
1054
  if (TSDB_CODE_SUCCESS == code) {
444,830✔
1055
    code = tjsonAddBoolToObject(pJson, jkScanLogicPlanOnlyMetaCtbIdx, pNode->onlyMetaCtbIdx);
444,830✔
1056
  }
1057
  if (TSDB_CODE_SUCCESS == code) {
444,830✔
1058
    code = tjsonAddBoolToObject(pJson, jkScanLogicPlanFilesetDelimited, pNode->filesetDelimited);
444,830✔
1059
  }
1060
  if (TSDB_CODE_SUCCESS == code) {
444,830✔
1061
    code = tjsonAddBoolToObject(pJson, jkScanLogicPlanParaTablesSort, pNode->paraTablesSort);
444,830✔
1062
  }
1063
  if (TSDB_CODE_SUCCESS == code) {
444,830✔
1064
    code = tjsonAddBoolToObject(pJson, jkScanLogicPlanSmallDataTsSort, pNode->paraTablesSort);
444,830✔
1065
  }
1066
  return code;
444,830✔
1067
}
1068

1069
static int32_t jsonToLogicScanNode(const SJson* pJson, void* pObj) {
137,000✔
1070
  SScanLogicNode* pNode = (SScanLogicNode*)pObj;
137,000✔
1071

1072
  int32_t objSize = 0;
137,000✔
1073
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
137,000✔
1074
  if (TSDB_CODE_SUCCESS == code) {
137,000✔
1075
    code = jsonToNodeList(pJson, jkScanLogicPlanScanCols, &pNode->pScanCols);
137,000✔
1076
  }
1077
  if (TSDB_CODE_SUCCESS == code) {
137,000✔
1078
    code = jsonToNodeList(pJson, jkScanLogicPlanScanPseudoCols, &pNode->pScanPseudoCols);
137,000✔
1079
  }
1080
  if (TSDB_CODE_SUCCESS == code) {
137,000✔
1081
    code = tjsonGetTinyIntValue(pJson, jkScanLogicPlanTableType, &pNode->tableType);
137,000✔
1082
  }
1083
  if (TSDB_CODE_SUCCESS == code) {
137,000✔
1084
    code = tjsonGetUBigIntValue(pJson, jkScanLogicPlanTableId, &pNode->tableId);
137,000✔
1085
  }
1086
  if (TSDB_CODE_SUCCESS == code) {
137,000✔
1087
    code = tjsonGetUBigIntValue(pJson, jkScanLogicPlanStableId, &pNode->stableId);
137,000✔
1088
  }
1089
  if (TSDB_CODE_SUCCESS == code) {
137,000✔
1090
    tjsonGetNumberValue(pJson, jkScanLogicPlanScanType, pNode->scanType, code);
137,000✔
1091
  }
1092
  if (TSDB_CODE_SUCCESS == code) {
137,000✔
1093
    code = tjsonGetUTinyIntValue(pJson, jkScanLogicPlanScanCount, &pNode->scanSeq[0]);
137,000✔
1094
  }
1095
  if (TSDB_CODE_SUCCESS == code) {
137,000✔
1096
    code = tjsonGetUTinyIntValue(pJson, jkScanLogicPlanReverseScanCount, &pNode->scanSeq[1]);
137,000✔
1097
  }
1098
  if (TSDB_CODE_SUCCESS == code) {
137,000✔
1099
    code = jsonToNodeList(pJson, jkScanLogicPlanDynamicScanFuncs, &pNode->pDynamicScanFuncs);
137,000✔
1100
  }
1101
  if (TSDB_CODE_SUCCESS == code) {
137,000✔
1102
    code = tjsonGetIntValue(pJson, jkScanLogicPlanDataRequired, &pNode->dataRequired);
137,000✔
1103
  }
1104
  if (TSDB_CODE_SUCCESS == code) {
137,000✔
1105
    code = jsonToNodeObject(pJson, jkScanLogicPlanTagCond, &pNode->pTagCond);
137,000✔
1106
  }
1107
  if (TSDB_CODE_SUCCESS == code) {
137,000✔
1108
    code = jsonToNodeList(pJson, jkScanLogicPlanGroupTags, &pNode->pGroupTags);
137,000✔
1109
  }
1110
  if (TSDB_CODE_SUCCESS == code) {
137,000✔
1111
    code = tjsonGetBoolValue(pJson, jkScanLogicPlanOnlyMetaCtbIdx, &pNode->onlyMetaCtbIdx);
137,000✔
1112
  }
1113
  if (TSDB_CODE_SUCCESS == code) {
137,000✔
1114
    code = tjsonGetBoolValue(pJson, jkScanLogicPlanFilesetDelimited, &pNode->filesetDelimited);
137,000✔
1115
  }
1116
  if (TSDB_CODE_SUCCESS == code) {
137,000✔
1117
    code = tjsonGetBoolValue(pJson, jkScanLogicPlanParaTablesSort, &pNode->smallDataTsSort);
137,000✔
1118
  }
1119
  if (TSDB_CODE_SUCCESS == code) {
137,000✔
1120
    code = tjsonGetBoolValue(pJson, jkScanLogicPlanSmallDataTsSort, &pNode->smallDataTsSort);
137,000✔
1121
  }
1122
  return code;
137,000✔
1123
}
1124

1125
static const char* jkProjectLogicPlanProjections = "Projections";
1126
static const char* jkProjectLogicPlanIgnoreGroupId = "IgnoreGroupId";
1127
static const char* jkProjectLogicPlanInputIgnoreGroup = "InputIgnoreGroup";
1128

1129
static int32_t logicProjectNodeToJson(const void* pObj, SJson* pJson) {
295,058✔
1130
  const SProjectLogicNode* pNode = (const SProjectLogicNode*)pObj;
295,058✔
1131

1132
  int32_t code = logicPlanNodeToJson(pObj, pJson);
295,058✔
1133
  if (TSDB_CODE_SUCCESS == code) {
295,058✔
1134
    code = nodeListToJson(pJson, jkProjectLogicPlanProjections, pNode->pProjections);
295,058✔
1135
  }
1136
  if (TSDB_CODE_SUCCESS == code) {
295,058✔
1137
    code = tjsonAddBoolToObject(pJson, jkProjectLogicPlanIgnoreGroupId, pNode->ignoreGroupId);
295,058✔
1138
  }
1139
  if (TSDB_CODE_SUCCESS == code) {
295,058✔
1140
    code = tjsonAddBoolToObject(pJson, jkProjectLogicPlanInputIgnoreGroup, pNode->inputIgnoreGroup);
295,058✔
1141
  }
1142

1143
  return code;
295,058✔
1144
}
1145

1146
static int32_t jsonToLogicProjectNode(const SJson* pJson, void* pObj) {
73,600✔
1147
  SProjectLogicNode* pNode = (SProjectLogicNode*)pObj;
73,600✔
1148

1149
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
73,600✔
1150
  if (TSDB_CODE_SUCCESS == code) {
73,600✔
1151
    code = jsonToNodeList(pJson, jkProjectLogicPlanProjections, &pNode->pProjections);
73,600✔
1152
  }
1153
  if (TSDB_CODE_SUCCESS == code) {
73,600✔
1154
    code = tjsonGetBoolValue(pJson, jkProjectLogicPlanIgnoreGroupId, &pNode->ignoreGroupId);
73,600✔
1155
  }
1156
  if (TSDB_CODE_SUCCESS == code) {
73,600✔
1157
    code = tjsonGetBoolValue(pJson, jkProjectLogicPlanInputIgnoreGroup, &pNode->inputIgnoreGroup);
73,600✔
1158
  }
1159
  return code;
73,600✔
1160
}
1161

1162
static const char* jkVnodeModifyLogicPlanModifyType = "ModifyType";
1163
static const char* jkVnodeModifyLogicPlanMsgType = "MsgType";
1164
static const char* jkVnodeModifyLogicPlanAffectedRows = "AffectedRows";
1165

1166
static int32_t logicVnodeModifyNodeToJson(const void* pObj, SJson* pJson) {
5,500✔
1167
  const SVnodeModifyLogicNode* pNode = (const SVnodeModifyLogicNode*)pObj;
5,500✔
1168

1169
  int32_t code = logicPlanNodeToJson(pObj, pJson);
5,500✔
1170
  if (TSDB_CODE_SUCCESS == code) {
5,500✔
1171
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyLogicPlanModifyType, pNode->modifyType);
5,500✔
1172
  }
1173
  if (TSDB_CODE_SUCCESS == code) {
5,500✔
1174
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyLogicPlanMsgType, pNode->msgType);
5,500✔
1175
  }
1176
  if (TSDB_CODE_SUCCESS == code) {
5,500✔
1177
    code = tjsonAddObject(pJson, jkVnodeModifyLogicPlanAffectedRows, nodeToJson, pNode->pAffectedRows);
5,500✔
1178
  }
1179

1180
  return code;
5,500✔
1181
}
1182

1183
static int32_t jsonToLogicVnodeModifyNode(const SJson* pJson, void* pObj) {
2,800✔
1184
  SVnodeModifyLogicNode* pNode = (SVnodeModifyLogicNode*)pObj;
2,800✔
1185

1186
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
2,800✔
1187
  if (TSDB_CODE_SUCCESS == code) {
2,800✔
1188
    tjsonGetNumberValue(pJson, jkVnodeModifyLogicPlanModifyType, pNode->modifyType, code);
2,800✔
1189
  }
1190
  if (TSDB_CODE_SUCCESS == code) {
2,800✔
1191
    code = tjsonGetIntValue(pJson, jkVnodeModifyLogicPlanMsgType, &pNode->msgType);
2,800✔
1192
  }
1193
  if (TSDB_CODE_SUCCESS == code) {
2,800✔
1194
    code = jsonToNodeObject(pJson, jkVnodeModifyLogicPlanAffectedRows, &pNode->pAffectedRows);
2,800✔
1195
  }
1196

1197
  return code;
2,800✔
1198
}
1199

1200
static const char* jkExchangeLogicPlanSrcStartGroupId = "SrcStartGroupId";
1201
static const char* jkExchangeLogicPlanSrcEndGroupId = "SrcEndGroupId";
1202

1203
static int32_t logicExchangeNodeToJson(const void* pObj, SJson* pJson) {
30,900✔
1204
  const SExchangeLogicNode* pNode = (const SExchangeLogicNode*)pObj;
30,900✔
1205

1206
  int32_t code = logicPlanNodeToJson(pObj, pJson);
30,900✔
1207
  if (TSDB_CODE_SUCCESS == code) {
30,900✔
1208
    code = tjsonAddIntegerToObject(pJson, jkExchangeLogicPlanSrcStartGroupId, pNode->srcStartGroupId);
30,900✔
1209
  }
1210
  if (TSDB_CODE_SUCCESS == code) {
30,900✔
1211
    code = tjsonAddIntegerToObject(pJson, jkExchangeLogicPlanSrcEndGroupId, pNode->srcEndGroupId);
30,900✔
1212
  }
1213

1214
  return code;
30,900✔
1215
}
1216

1217
static int32_t jsonToLogicExchangeNode(const SJson* pJson, void* pObj) {
19,600✔
1218
  SExchangeLogicNode* pNode = (SExchangeLogicNode*)pObj;
19,600✔
1219

1220
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
19,600✔
1221
  if (TSDB_CODE_SUCCESS == code) {
19,600✔
1222
    code = tjsonGetIntValue(pJson, jkExchangeLogicPlanSrcStartGroupId, &pNode->srcStartGroupId);
19,600✔
1223
  }
1224
  if (TSDB_CODE_SUCCESS == code) {
19,600✔
1225
    code = tjsonGetIntValue(pJson, jkExchangeLogicPlanSrcEndGroupId, &pNode->srcEndGroupId);
19,600✔
1226
  }
1227

1228
  return code;
19,600✔
1229
}
1230

1231
static const char* jkMergeLogicPlanMergeKeys = "MergeKeys";
1232
static const char* jkMergeLogicPlanInputs = "Inputs";
1233
static const char* jkMergeLogicPlanNumOfChannels = "NumOfChannels";
1234
static const char* jkMergeLogicPlanSrcGroupId = "SrcGroupId";
1235
static const char* jkMergeLogicPlanSrcEndGroupId = "SrcEndGroupId";
1236

1237
static int32_t logicMergeNodeToJson(const void* pObj, SJson* pJson) {
12,200✔
1238
  const SMergeLogicNode* pNode = (const SMergeLogicNode*)pObj;
12,200✔
1239

1240
  int32_t code = logicPlanNodeToJson(pObj, pJson);
12,200✔
1241
  if (TSDB_CODE_SUCCESS == code) {
12,200✔
1242
    code = nodeListToJson(pJson, jkMergeLogicPlanMergeKeys, pNode->pMergeKeys);
12,200✔
1243
  }
1244
  if (TSDB_CODE_SUCCESS == code) {
12,200✔
1245
    code = nodeListToJson(pJson, jkMergeLogicPlanInputs, pNode->pInputs);
12,200✔
1246
  }
1247
  if (TSDB_CODE_SUCCESS == code) {
12,200✔
1248
    code = tjsonAddIntegerToObject(pJson, jkMergeLogicPlanNumOfChannels, pNode->numOfChannels);
12,200✔
1249
  }
1250
  if (TSDB_CODE_SUCCESS == code) {
12,200✔
1251
    code = tjsonAddIntegerToObject(pJson, jkMergeLogicPlanSrcGroupId, pNode->srcGroupId);
12,200✔
1252
  }
1253
  if (TSDB_CODE_SUCCESS == code) {
12,200✔
1254
    code = tjsonAddIntegerToObject(pJson, jkMergeLogicPlanSrcEndGroupId, pNode->srcEndGroupId);
12,200✔
1255
  }
1256
  return code;
12,200✔
1257
}
1258

1259
static int32_t jsonToLogicMergeNode(const SJson* pJson, void* pObj) {
7,500✔
1260
  SMergeLogicNode* pNode = (SMergeLogicNode*)pObj;
7,500✔
1261

1262
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
7,500✔
1263
  if (TSDB_CODE_SUCCESS == code) {
7,500✔
1264
    code = jsonToNodeList(pJson, jkMergeLogicPlanMergeKeys, &pNode->pMergeKeys);
7,500✔
1265
  }
1266
  if (TSDB_CODE_SUCCESS == code) {
7,500✔
1267
    code = jsonToNodeList(pJson, jkMergeLogicPlanInputs, &pNode->pInputs);
7,500✔
1268
  }
1269
  if (TSDB_CODE_SUCCESS == code) {
7,500✔
1270
    code = tjsonGetIntValue(pJson, jkMergeLogicPlanNumOfChannels, &pNode->numOfChannels);
7,500✔
1271
  }
1272
  if (TSDB_CODE_SUCCESS == code) {
7,500✔
1273
    code = tjsonGetIntValue(pJson, jkMergeLogicPlanSrcGroupId, &pNode->srcGroupId);
7,500✔
1274
  }
1275
  if (TSDB_CODE_SUCCESS == code) {
7,500✔
1276
    code = tjsonGetIntValue(pJson, jkMergeLogicPlanSrcEndGroupId, &pNode->srcEndGroupId);
7,500✔
1277
  }
1278
  return code;
7,500✔
1279
}
1280

1281
static const char* jkWindowLogicPlanWinType = "WinType";
1282
static const char* jkWindowLogicPlanFuncs = "Funcs";
1283
static const char* jkWindowLogicPlanInterval = "Interval";
1284
static const char* jkWindowLogicPlanOffset = "Offset";
1285
static const char* jkWindowLogicPlanSliding = "Sliding";
1286
static const char* jkWindowLogicPlanIntervalUnit = "IntervalUnit";
1287
static const char* jkWindowLogicPlanSlidingUnit = "SlidingUnit";
1288
static const char* jkWindowLogicPlanStartTime = "StartTime";
1289
static const char* jkWindowLogicPlanEndTime = "EndTime";
1290
static const char* jkWindowLogicPlanSessionGap = "SessionGap";
1291
static const char* jkWindowLogicPlanTspk = "Tspk";
1292
static const char* jkWindowLogicPlanStateExprs = "StateExprs";
1293
static const char* jkWindowLogicPlanStateExprCompat = "StateExpr";
1294
static const char* jkWindowLogicPlanIndefRowsFunc = "IndefRowsFunc";
1295
static const char* jkWindowLogicPlanTimeRangeExpr = "TimeRangeExpr";
1296
static const char* jkWindowLogicPlanExtFillMode = "ExtFillMode";
1297
static const char* jkWindowLogicPlanExtFillExprs = "ExtFillExprs";
1298
static const char* jkWindowLogicPlanExtFillValues = "ExtFillValues";
1299

1300
static int32_t logicWindowNodeToJson(const void* pObj, SJson* pJson) {
47,100✔
1301
  const SWindowLogicNode* pNode = (const SWindowLogicNode*)pObj;
47,100✔
1302

1303
  int32_t code = logicPlanNodeToJson(pObj, pJson);
47,100✔
1304
  if (TSDB_CODE_SUCCESS == code) {
47,100✔
1305
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanWinType, pNode->winType);
47,100✔
1306
  }
1307
  if (TSDB_CODE_SUCCESS == code) {
47,100✔
1308
    code = nodeListToJson(pJson, jkWindowLogicPlanFuncs, pNode->pFuncs);
47,100✔
1309
  }
1310
  if (TSDB_CODE_SUCCESS == code) {
47,100✔
1311
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanInterval, pNode->interval);
47,100✔
1312
  }
1313
  if (TSDB_CODE_SUCCESS == code) {
47,100✔
1314
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanOffset, pNode->offset);
47,100✔
1315
  }
1316
  if (TSDB_CODE_SUCCESS == code) {
47,100✔
1317
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanSliding, pNode->sliding);
47,100✔
1318
  }
1319
  if (TSDB_CODE_SUCCESS == code) {
47,100✔
1320
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanIntervalUnit, pNode->intervalUnit);
47,100✔
1321
  }
1322
  if (TSDB_CODE_SUCCESS == code) {
47,100✔
1323
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanSlidingUnit, pNode->slidingUnit);
47,100✔
1324
  }
1325
  if (TSDB_CODE_SUCCESS == code) {
47,100✔
1326
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanStartTime, pNode->timeRange.skey);
47,100✔
1327
  }
1328
  if (TSDB_CODE_SUCCESS == code) {
47,100✔
1329
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanEndTime, pNode->timeRange.ekey);
47,100✔
1330
  }
1331
  if (TSDB_CODE_SUCCESS == code) {
47,100✔
1332
    code = tjsonAddObject(pJson, jkWindowLogicPlanTimeRangeExpr, nodeToJson, pNode->pTimeRange);
47,100✔
1333
  }
1334
  if (TSDB_CODE_SUCCESS == code) {
47,100✔
1335
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanSessionGap, pNode->sessionGap);
47,100✔
1336
  }
1337
  if (TSDB_CODE_SUCCESS == code) {
47,100✔
1338
    code = tjsonAddObject(pJson, jkWindowLogicPlanTspk, nodeToJson, pNode->pTspk);
47,100✔
1339
  }
1340
  if (TSDB_CODE_SUCCESS == code) {
47,100✔
1341
    code = nodeListToJson(pJson, jkWindowLogicPlanStateExprs, pNode->pStateExprs);
47,100✔
1342
  }
1343
  if (TSDB_CODE_SUCCESS == code) {
47,100✔
1344
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanIndefRowsFunc, pNode->indefRowsFunc);
47,100✔
1345
  }
1346
  if (TSDB_CODE_SUCCESS == code) {
47,100✔
1347
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanExtFillMode, pNode->extFill.mode);
47,100✔
1348
  }
1349
  if (TSDB_CODE_SUCCESS == code) {
47,100✔
1350
    code = nodeListToJson(pJson, jkWindowLogicPlanExtFillExprs, pNode->extFill.pFillExprs);
47,100✔
1351
  }
1352
  if (TSDB_CODE_SUCCESS == code) {
47,100✔
1353
    code = tjsonAddObject(pJson, jkWindowLogicPlanExtFillValues, nodeToJson, pNode->extFill.pFillValues);
47,100✔
1354
  }
1355

1356
  return code;
47,100✔
1357
}
1358

1359
static int32_t jsonToLogicWindowNode(const SJson* pJson, void* pObj) {
22,500✔
1360
  SWindowLogicNode* pNode = (SWindowLogicNode*)pObj;
22,500✔
1361

1362
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
22,500✔
1363
  if (TSDB_CODE_SUCCESS == code) {
22,500✔
1364
    tjsonGetNumberValue(pJson, jkWindowLogicPlanWinType, pNode->winType, code);
22,500✔
1365
  }
1366
  if (TSDB_CODE_SUCCESS == code) {
22,500✔
1367
    code = jsonToNodeList(pJson, jkWindowLogicPlanFuncs, &pNode->pFuncs);
22,500✔
1368
  }
1369
  if (TSDB_CODE_SUCCESS == code) {
22,500✔
1370
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanInterval, &pNode->interval);
22,500✔
1371
  }
1372
  if (TSDB_CODE_SUCCESS == code) {
22,500✔
1373
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanOffset, &pNode->offset);
22,500✔
1374
  }
1375
  if (TSDB_CODE_SUCCESS == code) {
22,500✔
1376
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanSliding, &pNode->sliding);
22,500✔
1377
  }
1378
  if (TSDB_CODE_SUCCESS == code) {
22,500✔
1379
    code = tjsonGetTinyIntValue(pJson, jkWindowLogicPlanIntervalUnit, &pNode->intervalUnit);
22,500✔
1380
  }
1381
  if (TSDB_CODE_SUCCESS == code) {
22,500✔
1382
    code = tjsonGetTinyIntValue(pJson, jkWindowLogicPlanSlidingUnit, &pNode->slidingUnit);
22,500✔
1383
  }
1384
  if (TSDB_CODE_SUCCESS == code) {
22,500✔
1385
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanStartTime, &pNode->timeRange.skey);
22,500✔
1386
  }
1387
  if (TSDB_CODE_SUCCESS == code) {
22,500✔
1388
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanEndTime, &pNode->timeRange.ekey);
22,500✔
1389
  }
1390
  if (TSDB_CODE_SUCCESS == code) {
22,500✔
1391
    code = jsonToNodeObject(pJson, jkWindowLogicPlanTimeRangeExpr, &pNode->pTimeRange);
22,500✔
1392
  }
1393
  if (TSDB_CODE_SUCCESS == code) {
22,500✔
1394
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanSessionGap, &pNode->sessionGap);
22,500✔
1395
  }
1396
  if (TSDB_CODE_SUCCESS == code) {
22,500✔
1397
    code = jsonToNodeObject(pJson, jkWindowLogicPlanTspk, &pNode->pTspk);
22,500✔
1398
  }
1399
  if (TSDB_CODE_SUCCESS == code) {
22,500✔
1400
    code = jsonToNodeList(pJson, jkWindowLogicPlanStateExprs, &pNode->pStateExprs);
22,500✔
1401
  }
1402
  /* V1 compat: old format uses single "StateExpr" object */
1403
  if (TSDB_CODE_SUCCESS == code && NULL == pNode->pStateExprs) {
22,500✔
1404
    SNode* pExpr = NULL;
17,300✔
1405
    code = jsonToNodeObject(pJson, jkWindowLogicPlanStateExprCompat, &pExpr);
17,300✔
1406
    if (TSDB_CODE_SUCCESS == code && pExpr != NULL) {
17,300✔
1407
      code = nodesListMakeStrictAppend(&pNode->pStateExprs, pExpr);
×
1408
    }
1409
  }
1410
  if (TSDB_CODE_SUCCESS == code) {
22,500✔
1411
    code = tjsonGetTinyIntValue(pJson, jkWindowLogicPlanIndefRowsFunc, &pNode->indefRowsFunc);
22,500✔
1412
  }
1413
  if (TSDB_CODE_SUCCESS == code) {
22,500✔
1414
    tjsonGetNumberValue(pJson, jkWindowLogicPlanExtFillMode, pNode->extFill.mode, code);
22,500✔
1415
  }
1416
  if (TSDB_CODE_SUCCESS == code) {
22,500✔
1417
    code = jsonToNodeList(pJson, jkWindowLogicPlanExtFillExprs, &pNode->extFill.pFillExprs);
22,500✔
1418
  }
1419
  if (TSDB_CODE_SUCCESS == code) {
22,500✔
1420
    code = jsonToNodeObject(pJson, jkWindowLogicPlanExtFillValues, &pNode->extFill.pFillValues);
22,500✔
1421
  }
1422

1423
  return code;
22,500✔
1424
}
1425

1426
static const char* jkFillLogicPlanMode = "Mode";
1427
static const char* jkFillLogicPlanWStartTs = "WStartTs";
1428
static const char* jkFillLogicPlanValues = "Values";
1429
static const char* jkFillLogicPlanStartTime = "StartTime";
1430
static const char* jkFillLogicPlanEndTime = "EndTime";
1431
static const char* jkFillLogicPlanSurroundingTime = "SurroundingTime";
1432

1433
static int32_t logicFillNodeToJson(const void* pObj, SJson* pJson) {
9,600✔
1434
  const SFillLogicNode* pNode = (const SFillLogicNode*)pObj;
9,600✔
1435

1436
  int32_t code = logicPlanNodeToJson(pObj, pJson);
9,600✔
1437
  if (TSDB_CODE_SUCCESS == code) {
9,600✔
1438
    code = tjsonAddIntegerToObject(pJson, jkFillLogicPlanMode, pNode->mode);
9,600✔
1439
  }
1440
  if (TSDB_CODE_SUCCESS == code) {
9,600✔
1441
    code = tjsonAddObject(pJson, jkFillLogicPlanWStartTs, nodeToJson, pNode->pWStartTs);
9,600✔
1442
  }
1443
  if (TSDB_CODE_SUCCESS == code) {
9,600✔
1444
    code = tjsonAddObject(pJson, jkFillLogicPlanValues, nodeToJson, pNode->pValues);
9,600✔
1445
  }
1446
  if (TSDB_CODE_SUCCESS == code) {
9,600✔
1447
    code = tjsonAddIntegerToObject(pJson, jkFillLogicPlanStartTime, pNode->timeRange.skey);
9,600✔
1448
  }
1449
  if (TSDB_CODE_SUCCESS == code) {
9,600✔
1450
    code = tjsonAddIntegerToObject(pJson, jkFillLogicPlanEndTime, pNode->timeRange.ekey);
9,600✔
1451
  }
1452
  if (TSDB_CODE_SUCCESS == code) {
9,600✔
1453
    code = tjsonAddObject(pJson, jkFillLogicPlanSurroundingTime, nodeToJson,
9,600✔
1454
                          pNode->pSurroundingTime);
9,600✔
1455
  }
1456

1457
  return code;
9,600✔
1458
}
1459

1460
static int32_t jsonToLogicFillNode(const SJson* pJson, void* pObj) {
4,100✔
1461
  SFillLogicNode* pNode = (SFillLogicNode*)pObj;
4,100✔
1462

1463
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
4,100✔
1464
  if (TSDB_CODE_SUCCESS == code) {
4,100✔
1465
    tjsonGetNumberValue(pJson, jkFillLogicPlanMode, pNode->mode, code);
4,100✔
1466
  }
1467
  if (TSDB_CODE_SUCCESS == code) {
4,100✔
1468
    code = jsonToNodeObject(pJson, jkFillLogicPlanWStartTs, &pNode->pWStartTs);
4,100✔
1469
  }
1470
  if (TSDB_CODE_SUCCESS == code) {
4,100✔
1471
    code = jsonToNodeObject(pJson, jkFillLogicPlanValues, &pNode->pValues);
4,100✔
1472
  }
1473
  if (TSDB_CODE_SUCCESS == code) {
4,100✔
1474
    code = tjsonGetBigIntValue(pJson, jkFillLogicPlanStartTime, &pNode->timeRange.skey);
4,100✔
1475
  }
1476
  if (TSDB_CODE_SUCCESS == code) {
4,100✔
1477
    code = tjsonGetBigIntValue(pJson, jkFillLogicPlanEndTime, &pNode->timeRange.ekey);
4,100✔
1478
  }
1479
  if (TSDB_CODE_SUCCESS == code) {
4,100✔
1480
    code = jsonToNodeObject(pJson, jkFillLogicPlanSurroundingTime,
4,100✔
1481
                            &pNode->pSurroundingTime);
1482
  }
1483

1484
  return code;
4,100✔
1485
}
1486

1487
static const char* jkSortLogicPlanSortKeys = "SortKeys";
1488

1489
static int32_t logicSortNodeToJson(const void* pObj, SJson* pJson) {
37,700✔
1490
  const SSortLogicNode* pNode = (const SSortLogicNode*)pObj;
37,700✔
1491

1492
  int32_t code = logicPlanNodeToJson(pObj, pJson);
37,700✔
1493
  if (TSDB_CODE_SUCCESS == code) {
37,700✔
1494
    code = nodeListToJson(pJson, jkSortLogicPlanSortKeys, pNode->pSortKeys);
37,700✔
1495
  }
1496

1497
  return code;
37,700✔
1498
}
1499

1500
static int32_t jsonToLogicSortNode(const SJson* pJson, void* pObj) {
15,200✔
1501
  SSortLogicNode* pNode = (SSortLogicNode*)pObj;
15,200✔
1502

1503
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
15,200✔
1504
  if (TSDB_CODE_SUCCESS == code) {
15,200✔
1505
    code = jsonToNodeList(pJson, jkSortLogicPlanSortKeys, &pNode->pSortKeys);
15,200✔
1506
  }
1507

1508
  return code;
15,200✔
1509
}
1510

1511
static const char* jkPartitionLogicPlanPartitionKeys = "PartitionKeys";
1512

1513
static int32_t logicPartitionNodeToJson(const void* pObj, SJson* pJson) {
21,300✔
1514
  const SPartitionLogicNode* pNode = (const SPartitionLogicNode*)pObj;
21,300✔
1515

1516
  int32_t code = logicPlanNodeToJson(pObj, pJson);
21,300✔
1517
  if (TSDB_CODE_SUCCESS == code) {
21,300✔
1518
    code = nodeListToJson(pJson, jkPartitionLogicPlanPartitionKeys, pNode->pPartitionKeys);
21,300✔
1519
  }
1520

1521
  return code;
21,300✔
1522
}
1523

1524
static int32_t jsonToLogicPartitionNode(const SJson* pJson, void* pObj) {
8,400✔
1525
  SPartitionLogicNode* pNode = (SPartitionLogicNode*)pObj;
8,400✔
1526

1527
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
8,400✔
1528
  if (TSDB_CODE_SUCCESS == code) {
8,400✔
1529
    code = jsonToNodeList(pJson, jkPartitionLogicPlanPartitionKeys, &pNode->pPartitionKeys);
8,400✔
1530
  }
1531

1532
  return code;
8,400✔
1533
}
1534

1535
static const char* jkIndefRowsFuncLogicPlanFuncs = "Funcs";
1536

1537
static int32_t logicIndefRowsFuncNodeToJson(const void* pObj, SJson* pJson) {
11,600✔
1538
  const SIndefRowsFuncLogicNode* pNode = (const SIndefRowsFuncLogicNode*)pObj;
11,600✔
1539

1540
  int32_t code = logicPlanNodeToJson(pObj, pJson);
11,600✔
1541
  if (TSDB_CODE_SUCCESS == code) {
11,600✔
1542
    code = nodeListToJson(pJson, jkIndefRowsFuncLogicPlanFuncs, pNode->pFuncs);
11,600✔
1543
  }
1544

1545
  return code;
11,600✔
1546
}
1547

1548
static int32_t jsonToLogicIndefRowsFuncNode(const SJson* pJson, void* pObj) {
5,700✔
1549
  SIndefRowsFuncLogicNode* pNode = (SIndefRowsFuncLogicNode*)pObj;
5,700✔
1550

1551
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
5,700✔
1552
  if (TSDB_CODE_SUCCESS == code) {
5,700✔
1553
    code = jsonToNodeList(pJson, jkIndefRowsFuncLogicPlanFuncs, &pNode->pFuncs);
5,700✔
1554
  }
1555

1556
  return code;
5,700✔
1557
}
1558

1559
static const char* jkInterpFuncLogicPlanFuncs = "Funcs";
1560
static const char* jkInterpFuncLogicPlanStartTime = "StartTime";
1561
static const char* jkInterpFuncLogicPlanEndTime = "EndTime";
1562
static const char* jkInterpFuncLogicPlanInterval = "Interval";
1563
static const char* jkInterpFuncLogicPlanIntervalUnit = "IntervalUnit";
1564
static const char* jkInterpFuncLogicPlanPrecision = "Precision";
1565
static const char* jkInterpFuncLogicPlanFillMode = "fillMode";
1566
static const char* jkInterpFuncLogicPlanFillValues = "FillValues";
1567
static const char* jkInterpFuncLogicPlanTimeSeries = "TimeSeries";
1568
static const char* jkInterpFuncLogicPlanSurroundingTime = "SurroundingTime";
1569

1570
static int32_t logicInterpFuncNodeToJson(const void* pObj, SJson* pJson) {
3,700✔
1571
  const SInterpFuncLogicNode* pNode = (const SInterpFuncLogicNode*)pObj;
3,700✔
1572

1573
  int32_t code = logicPlanNodeToJson(pObj, pJson);
3,700✔
1574
  if (TSDB_CODE_SUCCESS == code) {
3,700✔
1575
    code = nodeListToJson(pJson, jkInterpFuncLogicPlanFuncs, pNode->pFuncs);
3,700✔
1576
  }
1577
  if (TSDB_CODE_SUCCESS == code) {
3,700✔
1578
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanStartTime, pNode->timeRange.skey);
3,700✔
1579
  }
1580
  if (TSDB_CODE_SUCCESS == code) {
3,700✔
1581
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanEndTime, pNode->timeRange.ekey);
3,700✔
1582
  }
1583
  if (TSDB_CODE_SUCCESS == code) {
3,700✔
1584
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanInterval, pNode->interval);
3,700✔
1585
  }
1586
  if (TSDB_CODE_SUCCESS == code) {
3,700✔
1587
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanIntervalUnit, pNode->intervalUnit);
3,700✔
1588
  }
1589
  if (TSDB_CODE_SUCCESS == code) {
3,700✔
1590
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanPrecision, pNode->precision);
3,700✔
1591
  }
1592
  if (TSDB_CODE_SUCCESS == code) {
3,700✔
1593
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanFillMode, pNode->fillMode);
3,700✔
1594
  }
1595
  if (TSDB_CODE_SUCCESS == code) {
3,700✔
1596
    code = tjsonAddObject(pJson, jkInterpFuncLogicPlanFillValues, nodeToJson, pNode->pFillValues);
3,700✔
1597
  }
1598
  if (TSDB_CODE_SUCCESS == code) {
3,700✔
1599
    code = tjsonAddObject(pJson, jkInterpFuncLogicPlanTimeSeries, nodeToJson, pNode->pTimeSeries);
3,700✔
1600
  }
1601
  if (TSDB_CODE_SUCCESS == code) {
3,700✔
1602
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanSurroundingTime, pNode->surroundingTime);
3,700✔
1603
  }
1604

1605
  return code;
3,700✔
1606
}
1607

1608
static int32_t jsonToLogicInterpFuncNode(const SJson* pJson, void* pObj) {
1,600✔
1609
  SInterpFuncLogicNode* pNode = (SInterpFuncLogicNode*)pObj;
1,600✔
1610

1611
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
1,600✔
1612
  if (TSDB_CODE_SUCCESS == code) {
1,600✔
1613
    code = jsonToNodeList(pJson, jkInterpFuncLogicPlanFuncs, &pNode->pFuncs);
1,600✔
1614
  }
1615
  if (TSDB_CODE_SUCCESS == code) {
1,600✔
1616
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanStartTime, &pNode->timeRange.skey);
1,600✔
1617
  }
1618
  if (TSDB_CODE_SUCCESS == code) {
1,600✔
1619
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanEndTime, &pNode->timeRange.ekey);
1,600✔
1620
  }
1621
  if (TSDB_CODE_SUCCESS == code) {
1,600✔
1622
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanInterval, &pNode->interval);
1,600✔
1623
  }
1624
  if (TSDB_CODE_SUCCESS == code) {
1,600✔
1625
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanIntervalUnit, &pNode->intervalUnit);
1,600✔
1626
  }
1627
  if (TSDB_CODE_SUCCESS == code) {
1,600✔
1628
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanPrecision, &pNode->precision);
1,600✔
1629
  }
1630
  if (TSDB_CODE_SUCCESS == code) {
1,600✔
1631
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanFillMode, (int8_t*)&pNode->fillMode);
1,600✔
1632
  }
1633
  if (TSDB_CODE_SUCCESS == code) {
1,600✔
1634
    code = tjsonToObject(pJson, jkInterpFuncLogicPlanFillValues, jsonToNode, pNode->pFillValues);
1,600✔
1635
  }
1636
  if (TSDB_CODE_SUCCESS == code) {
1,600✔
1637
    code = jsonToNodeObject(pJson, jkInterpFuncLogicPlanTimeSeries, &pNode->pTimeSeries);
1,600✔
1638
  }
1639
  if (TSDB_CODE_SUCCESS == code) {
1,600✔
1640
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanSurroundingTime, &pNode->surroundingTime);
1,600✔
1641
  }
1642

1643
  return code;
1,600✔
1644
}
1645

1646
static const char* jkForecastFuncLogicPlanFuncs = "Funcs";
1647
static const char* jkImputationFuncLogicPlanFuncs = "Funcs";
1648

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

1652
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1653
  if (TSDB_CODE_SUCCESS == code) {
×
1654
    code = nodeListToJson(pJson, jkForecastFuncLogicPlanFuncs, pNode->pFuncs);
×
1655
  }
1656

1657
  return code;
×
1658
}
1659

1660
static int32_t jsonToLogicForecastFuncNode(const SJson* pJson, void* pObj) {
×
1661
  SForecastFuncLogicNode* pNode = (SForecastFuncLogicNode*)pObj;
×
1662

1663
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1664
  if (TSDB_CODE_SUCCESS == code) {
×
1665
    code = jsonToNodeList(pJson, jkForecastFuncLogicPlanFuncs, &pNode->pFuncs);
×
1666
  }
1667

1668
  return code;
×
1669
}
1670

1671
static int32_t logicImputationFuncNodeToJson(const void* pObj, SJson* pJson) {
×
1672
  const SGenericAnalysisLogicNode* pNode = (const SGenericAnalysisLogicNode*)pObj;
×
1673

1674
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1675
  if (TSDB_CODE_SUCCESS == code) {
×
1676
    code = nodeListToJson(pJson, jkImputationFuncLogicPlanFuncs, pNode->pFuncs);
×
1677
  }
1678

1679
  return code;
×
1680
}
1681

1682
static int32_t jsonToLogicImputationFuncNode(const SJson* pJson, void* pObj) {
×
1683
  SGenericAnalysisLogicNode* pNode = (SGenericAnalysisLogicNode*)pObj;
×
1684

1685
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1686
  if (TSDB_CODE_SUCCESS == code) {
×
1687
    code = jsonToNodeList(pJson, jkImputationFuncLogicPlanFuncs, &pNode->pFuncs);
×
1688
  }
1689

1690
  return code;
×
1691
}
1692

1693
static const char* jkGroupCacheLogicPlanGrpColsMayBeNull = "GroupColsMayBeNull";
1694
static const char* jkGroupCacheLogicPlanGroupByUid = "GroupByUid";
1695
static const char* jkGroupCacheLogicPlanGlobalGroup = "GlobalGroup";
1696
static const char* jkGroupCacheLogicPlanGroupCols = "GroupCols";
1697

1698
static int32_t logicGroupCacheNodeToJson(const void* pObj, SJson* pJson) {
×
1699
  const SGroupCacheLogicNode* pNode = (const SGroupCacheLogicNode*)pObj;
×
1700

1701
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1702
  if (TSDB_CODE_SUCCESS == code) {
×
1703
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGrpColsMayBeNull, pNode->grpColsMayBeNull);
×
1704
  }
1705
  if (TSDB_CODE_SUCCESS == code) {
×
1706
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGroupByUid, pNode->grpByUid);
×
1707
  }
1708
  if (TSDB_CODE_SUCCESS == code) {
×
1709
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGlobalGroup, pNode->globalGrp);
×
1710
  }
1711
  if (TSDB_CODE_SUCCESS == code) {
×
1712
    code = nodeListToJson(pJson, jkGroupCacheLogicPlanGroupCols, pNode->pGroupCols);
×
1713
  }
1714

1715
  return code;
×
1716
}
1717

1718
static int32_t jsonToLogicGroupCacheNode(const SJson* pJson, void* pObj) {
×
1719
  SGroupCacheLogicNode* pNode = (SGroupCacheLogicNode*)pObj;
×
1720

1721
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1722
  if (TSDB_CODE_SUCCESS == code) {
×
1723
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGrpColsMayBeNull, &pNode->grpColsMayBeNull);
×
1724
  }
1725
  if (TSDB_CODE_SUCCESS == code) {
×
1726
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGroupByUid, &pNode->grpByUid);
×
1727
  }
1728
  if (TSDB_CODE_SUCCESS == code) {
×
1729
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGlobalGroup, &pNode->globalGrp);
×
1730
  }
1731
  if (TSDB_CODE_SUCCESS == code) {
×
1732
    code = jsonToNodeList(pJson, jkGroupCacheLogicPlanGroupCols, &pNode->pGroupCols);
×
1733
  }
1734

1735
  return code;
×
1736
}
1737

1738
static const char* jkDynQueryCtrlLogicPlanQueryType = "QueryType";
1739
static const char* jkDynQueryCtrlLogicPlanStbJoinBatchFetch = "BatchFetch";
1740
static const char* jkDynQueryCtrlLogicPlanStbJoinVgList = "VgroupList";
1741
static const char* jkDynQueryCtrlLogicPlanStbJoinUidList = "UidList";
1742
static const char* jkDynQueryCtrlLogicPlanDynTbname = "DynTbname";
1743

1744
static int32_t logicDynQueryCtrlNodeToJson(const void* pObj, SJson* pJson) {
×
1745
  const SDynQueryCtrlLogicNode* pNode = (const SDynQueryCtrlLogicNode*)pObj;
×
1746

1747
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1748
  if (TSDB_CODE_SUCCESS == code) {
×
1749
    code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlLogicPlanQueryType, pNode->qType);
×
1750
  }
1751
  if (TSDB_CODE_SUCCESS == code) {
×
1752
    code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlLogicPlanStbJoinBatchFetch, pNode->stbJoin.batchFetch);
×
1753
  }
1754
  if (TSDB_CODE_SUCCESS == code) {
×
1755
    code = nodeListToJson(pJson, jkDynQueryCtrlLogicPlanStbJoinVgList, pNode->stbJoin.pVgList);
×
1756
  }
1757
  if (TSDB_CODE_SUCCESS == code) {
×
1758
    code = nodeListToJson(pJson, jkDynQueryCtrlLogicPlanStbJoinUidList, pNode->stbJoin.pUidList);
×
1759
  }
1760
  if (TSDB_CODE_SUCCESS == code) {
×
1761
    code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlLogicPlanDynTbname, pNode->dynTbname);
×
1762
  }
1763

1764
  return code;
×
1765
}
1766

1767
static int32_t jsonToLogicDynQueryCtrlNode(const SJson* pJson, void* pObj) {
×
1768
  SDynQueryCtrlLogicNode* pNode = (SDynQueryCtrlLogicNode*)pObj;
×
1769

1770
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1771
  if (TSDB_CODE_SUCCESS == code) {
×
1772
    tjsonGetNumberValue(pJson, jkDynQueryCtrlLogicPlanQueryType, pNode->qType, code);
×
1773
  }
1774
  if (TSDB_CODE_SUCCESS == code) {
×
1775
    code = tjsonGetBoolValue(pJson, jkDynQueryCtrlLogicPlanStbJoinBatchFetch, &pNode->stbJoin.batchFetch);
×
1776
  }
1777
  if (TSDB_CODE_SUCCESS == code) {
×
1778
    code = jsonToNodeList(pJson, jkDynQueryCtrlLogicPlanStbJoinVgList, &pNode->stbJoin.pVgList);
×
1779
  }
1780
  if (TSDB_CODE_SUCCESS == code) {
×
1781
    code = jsonToNodeList(pJson, jkDynQueryCtrlLogicPlanStbJoinUidList, &pNode->stbJoin.pUidList);
×
1782
  }
1783
  if (TSDB_CODE_SUCCESS == code) {
×
1784
    code = tjsonGetBoolValue(pJson, jkDynQueryCtrlLogicPlanDynTbname, &pNode->dynTbname);
×
1785
  }
1786

1787
  return code;
×
1788
}
1789

1790
static const char* jkSubplanIdQueryId = "QueryId";
1791
static const char* jkSubplanIdGroupId = "GroupId";
1792
static const char* jkSubplanIdSubplanId = "SubplanId";
1793

1794
static int32_t subplanIdToJson(const void* pObj, SJson* pJson) {
963,756,282✔
1795
  const SSubplanId* pNode = (const SSubplanId*)pObj;
963,756,282✔
1796

1797
  int32_t code = tjsonAddIntegerToObject(pJson, jkSubplanIdQueryId, pNode->queryId);
963,756,282✔
1798
  if (TSDB_CODE_SUCCESS == code) {
963,761,612✔
1799
    code = tjsonAddIntegerToObject(pJson, jkSubplanIdGroupId, pNode->groupId);
963,762,026✔
1800
  }
1801
  if (TSDB_CODE_SUCCESS == code) {
963,757,175✔
1802
    code = tjsonAddIntegerToObject(pJson, jkSubplanIdSubplanId, pNode->subplanId);
963,757,175✔
1803
  }
1804

1805
  return code;
963,758,633✔
1806
}
1807

1808
static int32_t jsonToSubplanId(const SJson* pJson, void* pObj) {
6,015,092✔
1809
  SSubplanId* pNode = (SSubplanId*)pObj;
6,015,092✔
1810

1811
  int32_t code = tjsonGetUBigIntValue(pJson, jkSubplanIdQueryId, &pNode->queryId);
6,015,092✔
1812
  if (TSDB_CODE_SUCCESS == code) {
6,015,252✔
1813
    code = tjsonGetIntValue(pJson, jkSubplanIdGroupId, &pNode->groupId);
6,015,252✔
1814
  }
1815
  if (TSDB_CODE_SUCCESS == code) {
6,015,092✔
1816
    code = tjsonGetIntValue(pJson, jkSubplanIdSubplanId, &pNode->subplanId);
6,015,092✔
1817
  }
1818

1819
  return code;
6,015,252✔
1820
}
1821

1822
static const char* jkEndPointFqdn = "Fqdn";
1823
static const char* jkEndPointPort = "Port";
1824

1825
static int32_t epToJson(const void* pObj, SJson* pJson) {
1,036,747,282✔
1826
  const SEp* pNode = (const SEp*)pObj;
1,036,747,282✔
1827

1828
  int32_t code = tjsonAddStringToObject(pJson, jkEndPointFqdn, pNode->fqdn);
1,036,747,282✔
1829
  if (TSDB_CODE_SUCCESS == code) {
1,036,746,657✔
1830
    code = tjsonAddIntegerToObject(pJson, jkEndPointPort, pNode->port);
1,036,746,253✔
1831
  }
1832

1833
  return code;
1,036,749,491✔
1834
}
1835

1836
static int32_t jsonToEp(const SJson* pJson, void* pObj) {
8,145,378✔
1837
  SEp* pNode = (SEp*)pObj;
8,145,378✔
1838

1839
  int32_t code = tjsonGetStringValue1(pJson, jkEndPointFqdn, pNode->fqdn, sizeof(pNode->fqdn));
8,145,378✔
1840
  if (TSDB_CODE_SUCCESS == code) {
8,145,378✔
1841
    code = tjsonGetSmallIntValue(pJson, jkEndPointPort, &pNode->port);
8,145,378✔
1842
  }
1843

1844
  return code;
8,145,378✔
1845
}
1846

1847
static const char* jkEpSetInUse = "InUse";
1848
static const char* jkEpSetNumOfEps = "NumOfEps";
1849
static const char* jkEpSetEps = "Eps";
1850

1851
static int32_t epSetToJson(const void* pObj, SJson* pJson) {
45,703,424✔
1852
  const SEpSet* pNode = (const SEpSet*)pObj;
45,703,424✔
1853

1854
  int32_t code = tjsonAddIntegerToObject(pJson, jkEpSetInUse, pNode->inUse);
45,703,424✔
1855
  if (TSDB_CODE_SUCCESS == code) {
45,702,841✔
1856
    code = tjsonAddIntegerToObject(pJson, jkEpSetNumOfEps, pNode->numOfEps);
45,702,841✔
1857
  }
1858
  if (TSDB_CODE_SUCCESS == code) {
45,703,424✔
1859
    code = tjsonAddArray(pJson, jkEpSetEps, epToJson, pNode->eps, sizeof(SEp), pNode->numOfEps);
45,703,424✔
1860
  }
1861

1862
  return code;
45,703,424✔
1863
}
1864

1865
static int32_t jsonToEpSet(const SJson* pJson, void* pObj) {
1,700,847✔
1866
  SEpSet* pNode = (SEpSet*)pObj;
1,700,847✔
1867

1868
  int32_t code = tjsonGetTinyIntValue(pJson, jkEpSetInUse, &pNode->inUse);
1,700,847✔
1869
  if (TSDB_CODE_SUCCESS == code) {
1,700,847✔
1870
    code = tjsonGetTinyIntValue(pJson, jkEpSetNumOfEps, &pNode->numOfEps);
1,700,847✔
1871
  }
1872
  if (TSDB_CODE_SUCCESS == code) {
1,700,847✔
1873
    code = tjsonToArray(pJson, jkEpSetEps, jsonToEp, pNode->eps, sizeof(SEp));
1,700,847✔
1874
  }
1875

1876
  return code;
1,700,847✔
1877
}
1878

1879
static const char* jkVgroupInfoVgId = "VgId";
1880
static const char* jkVgroupInfoHashBegin = "HashBegin";
1881
static const char* jkVgroupInfoHashEnd = "HashEnd";
1882
static const char* jkVgroupInfoEpSet = "EpSet";
1883
static const char* jkVgroupInfoNumOfTable = "NumOfTable";
1884

1885
static int32_t vgroupInfoToJson(const void* pObj, SJson* pJson) {
190,552✔
1886
  const SVgroupInfo* pNode = (const SVgroupInfo*)pObj;
190,552✔
1887

1888
  int32_t code = tjsonAddIntegerToObject(pJson, jkVgroupInfoVgId, pNode->vgId);
190,552✔
1889
  if (TSDB_CODE_SUCCESS == code) {
190,552✔
1890
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoHashBegin, pNode->hashBegin);
190,552✔
1891
  }
1892
  if (TSDB_CODE_SUCCESS == code) {
190,552✔
1893
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoHashEnd, pNode->hashEnd);
190,552✔
1894
  }
1895
  if (TSDB_CODE_SUCCESS == code) {
190,552✔
1896
    code = tjsonAddObject(pJson, jkVgroupInfoEpSet, epSetToJson, &pNode->epSet);
190,552✔
1897
  }
1898
  if (TSDB_CODE_SUCCESS == code) {
190,552✔
1899
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoNumOfTable, pNode->numOfTable);
190,552✔
1900
  }
1901

1902
  return code;
190,552✔
1903
}
1904

1905
static int32_t jsonToVgroupInfo(const SJson* pJson, void* pObj) {
233,148✔
1906
  SVgroupInfo* pNode = (SVgroupInfo*)pObj;
233,148✔
1907

1908
  int32_t code = tjsonGetIntValue(pJson, jkVgroupInfoVgId, &pNode->vgId);
233,148✔
1909
  if (TSDB_CODE_SUCCESS == code) {
233,148✔
1910
    code = tjsonGetUIntValue(pJson, jkVgroupInfoHashBegin, &pNode->hashBegin);
233,148✔
1911
  }
1912
  if (TSDB_CODE_SUCCESS == code) {
233,148✔
1913
    code = tjsonGetUIntValue(pJson, jkVgroupInfoHashEnd, &pNode->hashEnd);
233,148✔
1914
  }
1915
  if (TSDB_CODE_SUCCESS == code) {
233,148✔
1916
    code = tjsonToObject(pJson, jkVgroupInfoEpSet, jsonToEpSet, &pNode->epSet);
233,148✔
1917
  }
1918
  if (TSDB_CODE_SUCCESS == code) {
233,148✔
1919
    code = tjsonGetIntValue(pJson, jkVgroupInfoNumOfTable, &pNode->numOfTable);
233,148✔
1920
  }
1921

1922
  return code;
233,148✔
1923
}
1924

1925
static const char* jkVgroupsInfoNum = "Num";
1926
static const char* jkVgroupsInfoVgroups = "Vgroups";
1927

1928
static int32_t vgroupsInfoToJson(const void* pObj, SJson* pJson) {
141,489✔
1929
  const SVgroupsInfo* pNode = (const SVgroupsInfo*)pObj;
141,489✔
1930

1931
  int32_t code = tjsonAddIntegerToObject(pJson, jkVgroupsInfoNum, pNode->numOfVgroups);
141,489✔
1932
  if (TSDB_CODE_SUCCESS == code) {
141,489✔
1933
    code = tjsonAddArray(pJson, jkVgroupsInfoVgroups, vgroupInfoToJson, pNode->vgroups, sizeof(SVgroupInfo),
141,489✔
1934
                         pNode->numOfVgroups);
141,489✔
1935
  }
1936

1937
  return code;
141,489✔
1938
}
1939

1940
static int32_t jsonToVgroupsInfo(const SJson* pJson, void* pObj) {
147,510✔
1941
  SVgroupsInfo* pNode = (SVgroupsInfo*)pObj;
147,510✔
1942

1943
  int32_t code = tjsonGetIntValue(pJson, jkVgroupsInfoNum, &pNode->numOfVgroups);
147,510✔
1944
  if (TSDB_CODE_SUCCESS == code) {
147,510✔
1945
    code = tjsonToArray(pJson, jkVgroupsInfoVgroups, jsonToVgroupInfo, pNode->vgroups, sizeof(SVgroupInfo));
147,510✔
1946
  }
1947

1948
  return code;
147,510✔
1949
}
1950

1951
static const char* jkLogicSubplanId = "Id";
1952
static const char* jkLogicSubplanChildren = "Children";
1953
static const char* jkLogicSubplanRootNode = "RootNode";
1954
static const char* jkLogicSubplanType = "SubplanType";
1955
static const char* jkLogicSubplanVgroupsSize = "VgroupsSize";
1956
static const char* jkLogicSubplanVgroups = "Vgroups";
1957
static const char* jkLogicSubplanLevel = "Level";
1958
static const char* jkLogicSubplanSplitFlag = "SplitFlag";
1959
static const char* jkLogicSubplanNumOfComputeNodes = "NumOfComputeNodes";
1960

1961
static int32_t logicSubplanToJson(const void* pObj, SJson* pJson) {
455,730✔
1962
  const SLogicSubplan* pNode = (const SLogicSubplan*)pObj;
455,730✔
1963

1964
  int32_t code = tjsonAddObject(pJson, jkLogicSubplanId, subplanIdToJson, &pNode->id);
455,730✔
1965
  if (TSDB_CODE_SUCCESS == code) {
455,730✔
1966
    code = nodeListToJson(pJson, jkLogicSubplanChildren, pNode->pChildren);
455,730✔
1967
  }
1968
  if (TSDB_CODE_SUCCESS == code) {
455,730✔
1969
    code = tjsonAddObject(pJson, jkLogicSubplanRootNode, nodeToJson, pNode->pNode);
455,730✔
1970
  }
1971
  if (TSDB_CODE_SUCCESS == code) {
455,730✔
1972
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanType, pNode->subplanType);
455,730✔
1973
  }
1974
  if (TSDB_CODE_SUCCESS == code) {
455,730✔
1975
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanVgroupsSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
455,730✔
1976
  }
1977
  if (TSDB_CODE_SUCCESS == code) {
455,730✔
1978
    code = tjsonAddObject(pJson, jkLogicSubplanVgroups, vgroupsInfoToJson, pNode->pVgroupList);
455,730✔
1979
  }
1980
  if (TSDB_CODE_SUCCESS == code) {
455,730✔
1981
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanLevel, pNode->level);
455,730✔
1982
  }
1983
  if (TSDB_CODE_SUCCESS == code) {
455,730✔
1984
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanSplitFlag, pNode->splitFlag);
455,730✔
1985
  }
1986
  if (TSDB_CODE_SUCCESS == code) {
455,730✔
1987
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanNumOfComputeNodes, pNode->numOfComputeNodes);
455,730✔
1988
  }
1989

1990
  return code;
455,730✔
1991
}
1992

1993
static int32_t jsonToLogicSubplan(const SJson* pJson, void* pObj) {
155,300✔
1994
  SLogicSubplan* pNode = (SLogicSubplan*)pObj;
155,300✔
1995

1996
  int32_t code = tjsonToObject(pJson, jkLogicSubplanId, jsonToSubplanId, &pNode->id);
155,300✔
1997
  if (TSDB_CODE_SUCCESS == code) {
155,300✔
1998
    code = jsonToNodeList(pJson, jkLogicSubplanChildren, &pNode->pChildren);
155,300✔
1999
  }
2000
  if (TSDB_CODE_SUCCESS == code) {
155,300✔
2001
    code = jsonToNodeObject(pJson, jkLogicSubplanRootNode, (SNode**)&pNode->pNode);
155,300✔
2002
  }
2003
  if (TSDB_CODE_SUCCESS == code) {
155,300✔
2004
    tjsonGetNumberValue(pJson, jkLogicSubplanType, pNode->subplanType, code);
155,300✔
2005
  }
2006
  int32_t objSize = 0;
155,300✔
2007
  if (TSDB_CODE_SUCCESS == code) {
155,300✔
2008
    code = tjsonGetIntValue(pJson, jkLogicSubplanVgroupsSize, &objSize);
155,300✔
2009
  }
2010
  if (TSDB_CODE_SUCCESS == code) {
155,300✔
2011
    code = tjsonMakeObject(pJson, jkLogicSubplanVgroups, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
155,300✔
2012
  }
2013
  if (TSDB_CODE_SUCCESS == code) {
155,300✔
2014
    code = tjsonGetIntValue(pJson, jkLogicSubplanLevel, &pNode->level);
155,300✔
2015
  }
2016
  if (TSDB_CODE_SUCCESS == code) {
155,300✔
2017
    code = tjsonGetIntValue(pJson, jkLogicSubplanSplitFlag, &pNode->splitFlag);
155,300✔
2018
  }
2019
  if (TSDB_CODE_SUCCESS == code) {
155,300✔
2020
    code = tjsonGetIntValue(pJson, jkLogicSubplanNumOfComputeNodes, &pNode->numOfComputeNodes);
155,300✔
2021
  }
2022

2023
  return code;
155,300✔
2024
}
2025

2026
static const char* jkLogicPlanSubplans = "Subplans";
2027

2028
static int32_t logicPlanToJson(const void* pObj, SJson* pJson) {
28,400✔
2029
  const SQueryLogicPlan* pNode = (const SQueryLogicPlan*)pObj;
28,400✔
2030
  return tjsonAddObject(pJson, jkLogicPlanSubplans, nodeToJson, nodesListGetNode(pNode->pTopSubplans, 0));
28,400✔
2031
}
2032

2033
static int32_t jsonToLogicPlan(const SJson* pJson, void* pObj) {
28,400✔
2034
  SQueryLogicPlan* pNode = (SQueryLogicPlan*)pObj;
28,400✔
2035
  SNode*           pChild = NULL;
28,400✔
2036
  int32_t          code = jsonToNodeObject(pJson, jkLogicPlanSubplans, &pChild);
28,400✔
2037
  if (TSDB_CODE_SUCCESS == code) {
28,400✔
2038
    code = nodesListMakeStrictAppend(&pNode->pTopSubplans, pChild);
28,400✔
2039
  }
2040
  return code;
28,400✔
2041
}
2042

2043
static const char* jkJoinLogicPlanJoinType = "JoinType";
2044
static const char* jkJoinLogicPlanJoinAlgo = "JoinAlgo";
2045
static const char* jkJoinLogicPlanOnConditions = "OtherOnCond";
2046
static const char* jkJoinLogicPlanPrimKeyEqCondition = "PrimKeyEqCond";
2047
static const char* jkJoinLogicPlanColEqCondition = "ColumnEqCond";
2048
static const char* jkJoinLogicPlanTagEqCondition = "TagEqCond";
2049

2050
static int32_t logicJoinNodeToJson(const void* pObj, SJson* pJson) {
12,600✔
2051
  const SJoinLogicNode* pNode = (const SJoinLogicNode*)pObj;
12,600✔
2052

2053
  int32_t code = logicPlanNodeToJson(pObj, pJson);
12,600✔
2054
  if (TSDB_CODE_SUCCESS == code) {
12,600✔
2055
    code = tjsonAddIntegerToObject(pJson, jkJoinLogicPlanJoinType, pNode->joinType);
12,600✔
2056
  }
2057
  if (TSDB_CODE_SUCCESS == code) {
12,600✔
2058
    code = tjsonAddIntegerToObject(pJson, jkJoinLogicPlanJoinAlgo, pNode->joinAlgo);
12,600✔
2059
  }
2060
  if (TSDB_CODE_SUCCESS == code) {
12,600✔
2061
    code = tjsonAddObject(pJson, jkJoinLogicPlanPrimKeyEqCondition, nodeToJson, pNode->pPrimKeyEqCond);
12,600✔
2062
  }
2063
  if (TSDB_CODE_SUCCESS == code) {
12,600✔
2064
    code = tjsonAddObject(pJson, jkJoinLogicPlanColEqCondition, nodeToJson, pNode->pColEqCond);
12,600✔
2065
  }
2066
  if (TSDB_CODE_SUCCESS == code) {
12,600✔
2067
    code = tjsonAddObject(pJson, jkJoinLogicPlanTagEqCondition, nodeToJson, pNode->pTagEqCond);
12,600✔
2068
  }
2069
  if (TSDB_CODE_SUCCESS == code) {
12,600✔
2070
    code = tjsonAddObject(pJson, jkJoinLogicPlanOnConditions, nodeToJson, pNode->pFullOnCond);
12,600✔
2071
  }
2072
  return code;
12,600✔
2073
}
2074

2075
static int32_t jsonToLogicJoinNode(const SJson* pJson, void* pObj) {
4,400✔
2076
  SJoinLogicNode* pNode = (SJoinLogicNode*)pObj;
4,400✔
2077

2078
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
4,400✔
2079
  if (TSDB_CODE_SUCCESS == code) {
4,400✔
2080
    tjsonGetNumberValue(pJson, jkJoinLogicPlanJoinType, pNode->joinType, code);
4,400✔
2081
  }
2082
  if (TSDB_CODE_SUCCESS == code) {
4,400✔
2083
    tjsonGetNumberValue(pJson, jkJoinLogicPlanJoinAlgo, pNode->joinAlgo, code);
4,400✔
2084
  }
2085
  if (TSDB_CODE_SUCCESS == code) {
4,400✔
2086
    code = jsonToNodeObject(pJson, jkJoinLogicPlanPrimKeyEqCondition, &pNode->pPrimKeyEqCond);
4,400✔
2087
  }
2088
  if (TSDB_CODE_SUCCESS == code) {
4,400✔
2089
    code = jsonToNodeObject(pJson, jkJoinLogicPlanColEqCondition, &pNode->pColEqCond);
4,400✔
2090
  }
2091
  if (TSDB_CODE_SUCCESS == code) {
4,400✔
2092
    code = jsonToNodeObject(pJson, jkJoinLogicPlanTagEqCondition, &pNode->pTagEqCond);
4,400✔
2093
  }
2094
  if (TSDB_CODE_SUCCESS == code) {
4,400✔
2095
    code = jsonToNodeObject(pJson, jkJoinLogicPlanOnConditions, &pNode->pFullOnCond);
4,400✔
2096
  }
2097

2098
  return code;
4,400✔
2099
}
2100

2101
static const char* jkVirtualTableScanLogicPlanScanCols = "ScanCols";
2102
static const char* jkVirtualTableScanLogicPlanScanPseudoCols = "ScanPseudoCols";
2103
static const char* jkVirtualTableScanLogicPlanTableType = "TableType";
2104
static const char* jkVirtualTableScanLogicPlanTableId = "TableId";
2105
static const char* jkVirtualTableScanLogicPlanStableId = "StableId";
2106
static const char* jkVirtualTableScanLogicPlanScanType = "ScanType";
2107
static const char* jkVirtualTableScanLogicPlanscanAllCols = "scanAllCols";
2108

2109
static int32_t logicVirtualTableScanNodeToJson(const void* pObj, SJson* pJson) {
×
2110
  const SVirtualScanLogicNode* pNode = (const SVirtualScanLogicNode*)pObj;
×
2111

2112
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
2113
  if (TSDB_CODE_SUCCESS == code) {
×
2114
    code = tjsonAddBoolToObject(pJson, jkVirtualTableScanLogicPlanscanAllCols, pNode->scanAllCols);
×
2115
  }
2116
  if (TSDB_CODE_SUCCESS == code) {
×
2117
    code = nodeListToJson(pJson, jkVirtualTableScanLogicPlanScanCols, pNode->pScanCols);
×
2118
  }
2119
  if (TSDB_CODE_SUCCESS == code) {
×
2120
    code = nodeListToJson(pJson, jkVirtualTableScanLogicPlanScanPseudoCols, pNode->pScanPseudoCols);
×
2121
  }
2122
  if (TSDB_CODE_SUCCESS == code) {
×
2123
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableScanLogicPlanTableType, pNode->tableType);
×
2124
  }
2125
  if (TSDB_CODE_SUCCESS == code) {
×
2126
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableScanLogicPlanTableId, pNode->tableId);
×
2127
  }
2128
  if (TSDB_CODE_SUCCESS == code) {
×
2129
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableScanLogicPlanStableId, pNode->stableId);
×
2130
  }
2131
  if (TSDB_CODE_SUCCESS == code) {
×
2132
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableScanLogicPlanScanType, pNode->scanType);
×
2133
  }
2134
  return code;
×
2135
}
2136

2137
static int32_t jsonToLogicVirtualTableScanNode(const SJson* pJson, void* pObj) {
×
2138
  SVirtualScanLogicNode* pNode = (SVirtualScanLogicNode*)pObj;
×
2139

2140
  int32_t objSize = 0;
×
2141
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
2142
  if (TSDB_CODE_SUCCESS == code) {
×
2143
    code = tjsonGetBoolValue(pJson, jkVirtualTableScanLogicPlanscanAllCols, &pNode->scanAllCols);
×
2144
  }
2145
  if (TSDB_CODE_SUCCESS == code) {
×
2146
    code = jsonToNodeList(pJson, jkVirtualTableScanLogicPlanScanCols, &pNode->pScanCols);
×
2147
  }
2148
  if (TSDB_CODE_SUCCESS == code) {
×
2149
    code = jsonToNodeList(pJson, jkVirtualTableScanLogicPlanScanPseudoCols, &pNode->pScanPseudoCols);
×
2150
  }
2151
  if (TSDB_CODE_SUCCESS == code) {
×
2152
    code = tjsonGetTinyIntValue(pJson, jkVirtualTableScanLogicPlanTableType, &pNode->tableType);
×
2153
  }
2154
  if (TSDB_CODE_SUCCESS == code) {
×
2155
    code = tjsonGetUBigIntValue(pJson, jkVirtualTableScanLogicPlanTableId, &pNode->tableId);
×
2156
  }
2157
  if (TSDB_CODE_SUCCESS == code) {
×
2158
    code = tjsonGetUBigIntValue(pJson, jkVirtualTableScanLogicPlanStableId, &pNode->stableId);
×
2159
  }
2160
  if (TSDB_CODE_SUCCESS == code) {
×
2161
    tjsonGetNumberValue(pJson, jkVirtualTableScanLogicPlanScanType, pNode->scanType, code);
×
2162
  }
2163
  return code;
×
2164
}
2165

2166
static const char* jkPhysiPlanOutputDataBlockDesc = "OutputDataBlockDesc";
2167
static const char* jkPhysiPlanConditions = "Conditions";
2168
static const char* jkPhysiPlanChildren = "Children";
2169
static const char* jkPhysiPlanLimit = "Limit";
2170
static const char* jkPhysiPlanSlimit = "SLimit";
2171
static const char* jkPhysiPlanInputTsOrder = "InputOrder";
2172
static const char* jkPhysiPlanOutputTsOrder = "OutputOrder";
2173
static const char* jkPhysiPlanDynamicOp = "DynamicOp";
2174
static const char* jkPhysiPlanForceCreateNonBlockingOptr = "ForceCreateNonBlockingOptr";
2175

2176
static int32_t physicPlanNodeToJson(const void* pObj, SJson* pJson) {
785,716,154✔
2177
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
785,716,154✔
2178

2179
  int32_t code = tjsonAddObject(pJson, jkPhysiPlanOutputDataBlockDesc, nodeToJson, pNode->pOutputDataBlockDesc);
785,716,154✔
2180
  if (TSDB_CODE_SUCCESS == code) {
785,718,625✔
2181
    code = tjsonAddObject(pJson, jkPhysiPlanConditions, nodeToJson, pNode->pConditions);
785,718,625✔
2182
  }
2183
  if (TSDB_CODE_SUCCESS == code) {
785,718,153✔
2184
    code = nodeListToJson(pJson, jkPhysiPlanChildren, pNode->pChildren);
785,718,153✔
2185
  }
2186
  if (TSDB_CODE_SUCCESS == code) {
785,718,065✔
2187
    code = tjsonAddObject(pJson, jkPhysiPlanLimit, nodeToJson, pNode->pLimit);
785,718,065✔
2188
  }
2189
  if (TSDB_CODE_SUCCESS == code) {
785,718,625✔
2190
    code = tjsonAddObject(pJson, jkPhysiPlanSlimit, nodeToJson, pNode->pSlimit);
785,718,625✔
2191
  }
2192
  if (TSDB_CODE_SUCCESS == code) {
785,718,042✔
2193
    code = tjsonAddIntegerToObject(pJson, jkPhysiPlanInputTsOrder, pNode->inputTsOrder);
785,718,042✔
2194
  }
2195
  if (TSDB_CODE_SUCCESS == code) {
785,719,208✔
2196
    code = tjsonAddIntegerToObject(pJson, jkPhysiPlanOutputTsOrder, pNode->outputTsOrder);
785,719,208✔
2197
  }
2198
  if (TSDB_CODE_SUCCESS == code) {
785,719,208✔
2199
    code = tjsonAddBoolToObject(pJson, jkPhysiPlanDynamicOp, pNode->dynamicOp);
785,719,208✔
2200
  }
2201
  if (TSDB_CODE_SUCCESS == code) {
785,718,042✔
2202
    code = tjsonAddBoolToObject(pJson, jkPhysiPlanForceCreateNonBlockingOptr, pNode->forceCreateNonBlockingOptr);
785,718,042✔
2203
  }
2204

2205
  return code;
785,719,208✔
2206
}
2207

2208
static int32_t jsonToPhysicPlanNode(const SJson* pJson, void* pObj) {
10,670,581✔
2209
  SPhysiNode* pNode = (SPhysiNode*)pObj;
10,670,581✔
2210

2211
  int32_t code = jsonToNodeObject(pJson, jkPhysiPlanOutputDataBlockDesc, (SNode**)&pNode->pOutputDataBlockDesc);
10,670,581✔
2212
  if (TSDB_CODE_SUCCESS == code) {
10,671,787✔
2213
    code = jsonToNodeObject(pJson, jkPhysiPlanConditions, &pNode->pConditions);
10,671,787✔
2214
  }
2215
  if (TSDB_CODE_SUCCESS == code) {
10,671,787✔
2216
    code = jsonToNodeList(pJson, jkPhysiPlanChildren, &pNode->pChildren);
10,671,787✔
2217
  }
2218
  if (TSDB_CODE_SUCCESS == code) {
10,670,987✔
2219
    code = jsonToNodeObject(pJson, jkPhysiPlanLimit, &pNode->pLimit);
10,670,987✔
2220
  }
2221
  if (TSDB_CODE_SUCCESS == code) {
10,671,787✔
2222
    code = jsonToNodeObject(pJson, jkPhysiPlanSlimit, &pNode->pSlimit);
10,671,787✔
2223
  }
2224
  if (TSDB_CODE_SUCCESS == code) {
10,671,787✔
2225
    tjsonGetNumberValue(pJson, jkPhysiPlanInputTsOrder, pNode->inputTsOrder, code);
10,671,787✔
2226
  }
2227
  if (TSDB_CODE_SUCCESS == code) {
10,671,627✔
2228
    tjsonGetNumberValue(pJson, jkPhysiPlanOutputTsOrder, pNode->outputTsOrder, code);
10,671,627✔
2229
  }
2230
  if (TSDB_CODE_SUCCESS == code) {
10,671,385✔
2231
    code = tjsonGetBoolValue(pJson, jkPhysiPlanDynamicOp, &pNode->dynamicOp);
10,671,385✔
2232
  }
2233
  if (TSDB_CODE_SUCCESS == code) {
10,671,787✔
2234
    code = tjsonGetBoolValue(pJson, jkPhysiPlanForceCreateNonBlockingOptr, &pNode->forceCreateNonBlockingOptr);
10,671,787✔
2235
  }
2236

2237
  return code;
10,671,426✔
2238
}
2239

2240
static const char* jkNameType = "NameType";
2241
static const char* jkNameAcctId = "AcctId";
2242
static const char* jkNameDbName = "DbName";
2243
static const char* jkNameTableName = "TableName";
2244

2245
static int32_t nameToJson(const void* pObj, SJson* pJson) {
303,165,345✔
2246
  const SName* pNode = (const SName*)pObj;
303,165,345✔
2247

2248
  int32_t code = tjsonAddIntegerToObject(pJson, jkNameType, pNode->type);
303,165,345✔
2249
  if (TSDB_CODE_SUCCESS == code) {
303,166,872✔
2250
    code = tjsonAddIntegerToObject(pJson, jkNameAcctId, pNode->acctId);
303,166,872✔
2251
  }
2252
  if (TSDB_CODE_SUCCESS == code) {
303,166,289✔
2253
    code = tjsonAddStringToObject(pJson, jkNameDbName, pNode->dbname);
303,166,289✔
2254
  }
2255
  if (TSDB_CODE_SUCCESS == code) {
303,164,651✔
2256
    code = tjsonAddStringToObject(pJson, jkNameTableName, pNode->tname);
303,164,651✔
2257
  }
2258

2259
  return code;
303,165,729✔
2260
}
2261

2262
static int32_t jsonToName(const SJson* pJson, void* pObj) {
4,136,103✔
2263
  SName* pNode = (SName*)pObj;
4,136,103✔
2264

2265
  int32_t code = tjsonGetUTinyIntValue(pJson, jkNameType, &pNode->type);
4,136,103✔
2266
  if (TSDB_CODE_SUCCESS == code) {
4,136,103✔
2267
    code = tjsonGetIntValue(pJson, jkNameAcctId, &pNode->acctId);
4,136,103✔
2268
  }
2269
  if (TSDB_CODE_SUCCESS == code) {
4,136,103✔
2270
    code = tjsonGetStringValue1(pJson, jkNameDbName, pNode->dbname, sizeof(pNode->dbname));
4,136,103✔
2271
  }
2272
  if (TSDB_CODE_SUCCESS == code) {
4,136,103✔
2273
    code = tjsonGetStringValue1(pJson, jkNameTableName, pNode->tname, sizeof(pNode->tname));
4,136,103✔
2274
  }
2275

2276
  return code;
4,136,103✔
2277
}
2278

2279
static const char* jkScanPhysiPlanScanCols = "ScanCols";
2280
static const char* jkScanPhysiPlanScanPseudoCols = "ScanPseudoCols";
2281
static const char* jkScanPhysiPlanTableId = "TableId";
2282
static const char* jkScanPhysiPlanSTableId = "STableId";
2283
static const char* jkScanPhysiPlanTableType = "TableType";
2284
static const char* jkScanPhysiPlanTableName = "TableName";
2285
static const char* jkScanPhysiPlanGroupOrderScan = "GroupOrderScan";
2286
static const char* jkScanPhysiPlanVirtualStableScan = "VirtualStableScan";
2287

2288
static int32_t physiScanNodeToJson(const void* pObj, SJson* pJson) {
303,164,179✔
2289
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
303,164,179✔
2290

2291
  int32_t code = physicPlanNodeToJson(pObj, pJson);
303,164,179✔
2292
  if (TSDB_CODE_SUCCESS == code) {
303,164,651✔
2293
    code = nodeListToJson(pJson, jkScanPhysiPlanScanCols, pNode->pScanCols);
303,164,651✔
2294
  }
2295
  if (TSDB_CODE_SUCCESS == code) {
303,166,872✔
2296
    code = nodeListToJson(pJson, jkScanPhysiPlanScanPseudoCols, pNode->pScanPseudoCols);
303,166,872✔
2297
  }
2298
  if (TSDB_CODE_SUCCESS == code) {
303,166,289✔
2299
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanTableId, pNode->uid);
303,166,289✔
2300
  }
2301
  if (TSDB_CODE_SUCCESS == code) {
303,166,872✔
2302
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanSTableId, pNode->suid);
303,166,872✔
2303
  }
2304
  if (TSDB_CODE_SUCCESS == code) {
303,166,872✔
2305
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanTableType, pNode->tableType);
303,166,872✔
2306
  }
2307
  if (TSDB_CODE_SUCCESS == code) {
303,166,289✔
2308
    code = tjsonAddObject(pJson, jkScanPhysiPlanTableName, nameToJson, &pNode->tableName);
303,166,289✔
2309
  }
2310
  if (TSDB_CODE_SUCCESS == code) {
303,166,872✔
2311
    code = tjsonAddBoolToObject(pJson, jkScanPhysiPlanGroupOrderScan, pNode->groupOrderScan);
303,166,872✔
2312
  }
2313
  if (TSDB_CODE_SUCCESS == code) {
303,165,146✔
2314
    code = tjsonAddBoolToObject(pJson, jkScanPhysiPlanVirtualStableScan, pNode->virtualStableScan);
303,165,146✔
2315
  }
2316

2317
  return code;
303,165,928✔
2318
}
2319

2320
static int32_t jsonToPhysiScanNode(const SJson* pJson, void* pObj) {
4,135,701✔
2321
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
4,135,701✔
2322

2323
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
4,135,701✔
2324
  if (TSDB_CODE_SUCCESS == code) {
4,136,103✔
2325
    code = jsonToNodeList(pJson, jkScanPhysiPlanScanCols, &pNode->pScanCols);
4,136,103✔
2326
  }
2327
  if (TSDB_CODE_SUCCESS == code) {
4,136,103✔
2328
    code = jsonToNodeList(pJson, jkScanPhysiPlanScanPseudoCols, &pNode->pScanPseudoCols);
4,136,103✔
2329
  }
2330
  if (TSDB_CODE_SUCCESS == code) {
4,136,103✔
2331
    code = tjsonGetUBigIntValue(pJson, jkScanPhysiPlanTableId, &pNode->uid);
4,136,103✔
2332
  }
2333
  if (TSDB_CODE_SUCCESS == code) {
4,136,103✔
2334
    code = tjsonGetUBigIntValue(pJson, jkScanPhysiPlanSTableId, &pNode->suid);
4,136,103✔
2335
  }
2336
  if (TSDB_CODE_SUCCESS == code) {
4,136,103✔
2337
    code = tjsonGetTinyIntValue(pJson, jkScanPhysiPlanTableType, &pNode->tableType);
4,136,103✔
2338
  }
2339
  if (TSDB_CODE_SUCCESS == code) {
4,136,103✔
2340
    code = tjsonToObject(pJson, jkScanPhysiPlanTableName, jsonToName, &pNode->tableName);
4,136,103✔
2341
  }
2342
  if (TSDB_CODE_SUCCESS == code) {
4,136,103✔
2343
    code = tjsonGetBoolValue(pJson, jkScanPhysiPlanGroupOrderScan, &pNode->groupOrderScan);
4,136,103✔
2344
  }
2345
  if (TSDB_CODE_SUCCESS == code) {
4,135,701✔
2346
    code = tjsonGetBoolValue(pJson, jkScanPhysiPlanVirtualStableScan, &pNode->virtualStableScan);
4,135,701✔
2347
  }
2348

2349
  return code;
4,136,103✔
2350
}
2351

2352
static const char* jkTagScanPhysiOnlyMetaCtbIdx = "OnlyMetaCtbIdx";
2353

2354
static int32_t physiTagScanNodeToJson(const void* pObj, SJson* pJson) {
16,069,904✔
2355
  const STagScanPhysiNode* pNode = (const STagScanPhysiNode*)pObj;
16,069,904✔
2356

2357
  int32_t code = physiScanNodeToJson(pObj, pJson);
16,069,904✔
2358

2359
  if (TSDB_CODE_SUCCESS == code) {
16,069,904✔
2360
    code = tjsonAddBoolToObject(pJson, jkTagScanPhysiOnlyMetaCtbIdx, pNode->onlyMetaCtbIdx);
16,069,904✔
2361
  }
2362
  return code;
16,069,904✔
2363
}
2364

2365
static int32_t jsonToPhysiTagScanNode(const SJson* pJson, void* pObj) {
10,501✔
2366
  STagScanPhysiNode* pNode = (STagScanPhysiNode*)pObj;
10,501✔
2367

2368
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
10,501✔
2369

2370
  if (TSDB_CODE_SUCCESS == code) {
10,501✔
2371
    code = tjsonGetBoolValue(pJson, jkTagScanPhysiOnlyMetaCtbIdx, &pNode->onlyMetaCtbIdx);
10,501✔
2372
  }
2373
  return code;
10,501✔
2374
}
2375

2376
static const char* jkLastRowScanPhysiPlanGroupTags = "GroupTags";
2377
static const char* jkLastRowScanPhysiPlanGroupSort = "GroupSort";
2378
static const char* jkLastRowScanPhysiPlanTargets = "Targets";
2379
static const char* jkLastRowScanPhysiPlanFuncType = "FuncType";
2380
static const char* jkLastRowScanPhysiPlanFuncTypes = "FuncTypes";
2381
static const char* jkLastRowScanPhysiPlanIgnoreNull = "IgnoreNull";
2382

2383
static int32_t funcTypeToJson(const void* pObj, SJson* pJson) {
×
2384
  const int32_t* pNode = (const int32_t*)pObj;
×
2385

2386
  int32_t code = tjsonAddIntegerToObject(pJson, jkLastRowScanPhysiPlanFuncType, *pNode);
×
2387
  return code;
×
2388
}
2389

2390
static int32_t jsonToFuncType(const SJson* pJson, void* pObj) {
×
2391
  int32_t* pNode = (int32_t*)pObj;
×
2392

2393
  int32_t code = tjsonGetIntValue(pJson, jkLastRowScanPhysiPlanFuncType, pNode);
×
2394
  return code;
×
2395
}
2396

2397
static int32_t physiLastRowScanNodeToJson(const void* pObj, SJson* pJson) {
1,445,934✔
2398
  const SLastRowScanPhysiNode* pNode = (const SLastRowScanPhysiNode*)pObj;
1,445,934✔
2399

2400
  int32_t code = physiScanNodeToJson(pObj, pJson);
1,445,934✔
2401
  if (TSDB_CODE_SUCCESS == code) {
1,445,934✔
2402
    code = nodeListToJson(pJson, jkLastRowScanPhysiPlanGroupTags, pNode->pGroupTags);
1,445,934✔
2403
  }
2404
  if (TSDB_CODE_SUCCESS == code) {
1,445,934✔
2405
    code = tjsonAddBoolToObject(pJson, jkLastRowScanPhysiPlanGroupSort, pNode->groupSort);
1,445,934✔
2406
  }
2407
  if (TSDB_CODE_SUCCESS == code) {
1,445,934✔
2408
    code = nodeListToJson(pJson, jkLastRowScanPhysiPlanTargets, pNode->pTargets);
1,445,934✔
2409
  }
2410
  if (TSDB_CODE_SUCCESS == code) {
1,445,934✔
2411
    code = tjsonAddTArray(pJson, jkLastRowScanPhysiPlanFuncTypes, funcTypeToJson, pNode->pFuncTypes);
1,445,934✔
2412
  }
2413
  if (TSDB_CODE_SUCCESS == code) {
1,445,934✔
2414
    code = tjsonAddBoolToObject(pJson, jkLastRowScanPhysiPlanIgnoreNull, pNode->ignoreNull);
1,445,934✔
2415
  }
2416

2417
  return code;
1,445,934✔
2418
}
2419

2420
static int32_t jsonToPhysiLastRowScanNode(const SJson* pJson, void* pObj) {
2,300✔
2421
  SLastRowScanPhysiNode* pNode = (SLastRowScanPhysiNode*)pObj;
2,300✔
2422

2423
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
2,300✔
2424
  if (TSDB_CODE_SUCCESS == code) {
2,300✔
2425
    code = jsonToNodeList(pJson, jkLastRowScanPhysiPlanGroupTags, &pNode->pGroupTags);
2,300✔
2426
  }
2427
  if (TSDB_CODE_SUCCESS == code) {
2,300✔
2428
    code = tjsonGetBoolValue(pJson, jkLastRowScanPhysiPlanGroupSort, &pNode->groupSort);
2,300✔
2429
  }
2430
  if (TSDB_CODE_SUCCESS == code) {
2,300✔
2431
    code = jsonToNodeList(pJson, jkLastRowScanPhysiPlanTargets, &pNode->pTargets);
2,300✔
2432
  }
2433
  if (TSDB_CODE_SUCCESS == code) {
2,300✔
2434
    code = tjsonToTArray(pJson, jkLastRowScanPhysiPlanFuncTypes, jsonToFuncType, &pNode->pFuncTypes, sizeof(int32_t));
2,300✔
2435
  }
2436
  if (TSDB_CODE_SUCCESS == code) {
2,300✔
2437
    code = tjsonGetBoolValue(pJson, jkLastRowScanPhysiPlanIgnoreNull, &pNode->ignoreNull);
2,300✔
2438
  }
2439

2440
  return code;
2,300✔
2441
}
2442

2443
static const char* jkTableScanPhysiPlanScanCount = "ScanCount";
2444
static const char* jkTableScanPhysiPlanReverseScanCount = "ReverseScanCount";
2445
static const char* jkTableScanPhysiPlanStartKey = "StartKey";
2446
static const char* jkTableScanPhysiPlanEndKey = "EndKey";
2447
static const char* jkTableScanPhysiPlanExtStartKey = "ExtStartKey";
2448
static const char* jkTableScanPhysiPlanExtEndKey = "ExtEndKey";
2449
static const char* jkTableScanPhysiPlanTimeRangeExpr = "TimeRangeExpr";
2450
static const char* jkTableScanPhysiPlanExtTimeRangeExpr = "ExtTimeRangeExpr";
2451
static const char* jkTableScanPhysiPlanPrimCondExpr = "PrimCondExpr";
2452
static const char* jkTableScanPhysiPlanRatio = "Ratio";
2453
static const char* jkTableScanPhysiPlanDataRequired = "DataRequired";
2454
static const char* jkTableScanPhysiPlanDynamicScanFuncs = "DynamicScanFuncs";
2455
static const char* jkTableScanPhysiPlanInterval = "Interval";
2456
static const char* jkTableScanPhysiPlanOffset = "Offset";
2457
static const char* jkTableScanPhysiPlanSliding = "Sliding";
2458
static const char* jkTableScanPhysiPlanIntervalUnit = "IntervalUnit";
2459
static const char* jkTableScanPhysiPlanSlidingUnit = "SlidingUnit";
2460
static const char* jkTableScanPhysiPlanTriggerType = "TriggerType";
2461
static const char* jkTableScanPhysiPlanWatermark = "Watermark";
2462
static const char* jkTableScanPhysiPlanIgnoreExpired = "IgnoreExpired";
2463
static const char* jkTableScanPhysiPlanGroupTags = "GroupTags";
2464
static const char* jkTableScanPhysiPlanGroupSort = "GroupSort";
2465
static const char* jkTableScanPhysiPlanTags = "Tags";
2466
static const char* jkTableScanPhysiPlanSubtable = "Subtable";
2467
static const char* jkTableScanPhysiPlanAssignBlockUid = "AssignBlockUid";
2468
static const char* jkTableScanPhysiPlanIgnoreUpdate = "IgnoreUpdate";
2469
static const char* jkTableScanPhysiPlanFilesetDelimited = "FilesetDelimited";
2470
static const char* jkTableScanPhysiPlanNeedCountEmptyTable = "NeedCountEmptyTable";
2471
static const char* jkTableScanPhysiPlanParaTablesSort = "ParaTablesSort";
2472
static const char* jkTableScanPhysiPlanSmallDataTsSort = "SmallDataTsSort";
2473

2474
static int32_t physiTableScanNodeToJson(const void* pObj, SJson* pJson) {
240,773,272✔
2475
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
240,773,272✔
2476

2477
  int32_t code = physiScanNodeToJson(pObj, pJson);
240,773,272✔
2478
  if (TSDB_CODE_SUCCESS == code) {
240,773,878✔
2479
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanScanCount, pNode->scanSeq[0]);
240,774,350✔
2480
  }
2481
  if (TSDB_CODE_SUCCESS == code) {
240,774,327✔
2482
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanReverseScanCount, pNode->scanSeq[1]);
240,774,327✔
2483
  }
2484
  if (TSDB_CODE_SUCCESS == code) {
240,775,382✔
2485
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanStartKey, pNode->scanRange.skey);
240,775,382✔
2486
  }
2487
  if (TSDB_CODE_SUCCESS == code) {
240,774,216✔
2488
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanEndKey, pNode->scanRange.ekey);
240,774,216✔
2489
  }
2490
  if (TSDB_CODE_SUCCESS == code && pNode->pExtScanRange) {
240,775,382✔
2491
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanExtStartKey, pNode->pExtScanRange->skey);
4,211,352✔
2492
  }
2493
  if (TSDB_CODE_SUCCESS == code && pNode->pExtScanRange) {
240,774,327✔
2494
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanExtEndKey, pNode->pExtScanRange->ekey);
4,210,880✔
2495
  }
2496
  if (TSDB_CODE_SUCCESS == code) {
240,774,327✔
2497
    code = tjsonAddObject(pJson, jkTableScanPhysiPlanTimeRangeExpr, nodeToJson, pNode->pTimeRange);
240,774,327✔
2498
  }
2499
  if (TSDB_CODE_SUCCESS == code) {
240,774,327✔
2500
    code = tjsonAddObject(pJson, jkTableScanPhysiPlanExtTimeRangeExpr, nodeToJson, pNode->pExtTimeRange);
240,774,327✔
2501
  }
2502
  if (TSDB_CODE_SUCCESS == code) {
240,774,350✔
2503
    code = tjsonAddObject(pJson, jkTableScanPhysiPlanPrimCondExpr, nodeToJson, pNode->pPrimaryCond);
240,774,350✔
2504
  }
2505
  if (TSDB_CODE_SUCCESS == code) {
240,772,729✔
2506
    code = tjsonAddDoubleToObject(pJson, jkTableScanPhysiPlanRatio, pNode->ratio);
240,772,729✔
2507
  }
2508
  if (TSDB_CODE_SUCCESS == code) {
240,773,178✔
2509
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanDataRequired, pNode->dataRequired);
240,773,178✔
2510
  }
2511
  if (TSDB_CODE_SUCCESS == code) {
240,775,382✔
2512
    code = nodeListToJson(pJson, jkTableScanPhysiPlanDynamicScanFuncs, pNode->pDynamicScanFuncs);
240,775,382✔
2513
  }
2514
  if (TSDB_CODE_SUCCESS == code) {
240,773,289✔
2515
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanInterval, pNode->interval);
240,773,289✔
2516
  }
2517
  if (TSDB_CODE_SUCCESS == code) {
240,774,799✔
2518
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanOffset, pNode->offset);
240,774,799✔
2519
  }
2520
  if (TSDB_CODE_SUCCESS == code) {
240,774,910✔
2521
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanSliding, pNode->sliding);
240,774,910✔
2522
  }
2523
  if (TSDB_CODE_SUCCESS == code) {
240,774,799✔
2524
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanIntervalUnit, pNode->intervalUnit);
240,774,799✔
2525
  }
2526
  if (TSDB_CODE_SUCCESS == code) {
240,774,327✔
2527
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanSlidingUnit, pNode->slidingUnit);
240,774,327✔
2528
  }
2529
  if (TSDB_CODE_SUCCESS == code) {
240,774,239✔
2530
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanTriggerType, pNode->triggerType);
240,774,239✔
2531
  }
2532
  if (TSDB_CODE_SUCCESS == code) {
240,774,799✔
2533
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanWatermark, pNode->watermark);
240,774,799✔
2534
  }
2535
  if (TSDB_CODE_SUCCESS == code) {
240,773,184✔
2536
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanIgnoreExpired, pNode->igExpired);
240,773,184✔
2537
  }
2538
  if (TSDB_CODE_SUCCESS == code) {
240,773,633✔
2539
    code = nodeListToJson(pJson, jkTableScanPhysiPlanGroupTags, pNode->pGroupTags);
240,773,633✔
2540
  }
2541
  if (TSDB_CODE_SUCCESS == code) {
240,773,855✔
2542
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanGroupSort, pNode->groupSort);
240,773,855✔
2543
  }
2544
  if (TSDB_CODE_SUCCESS == code) {
240,775,382✔
2545
    code = nodeListToJson(pJson, jkTableScanPhysiPlanTags, pNode->pTags);
240,775,382✔
2546
  }
2547
  if (TSDB_CODE_SUCCESS == code) {
240,773,855✔
2548
    code = tjsonAddObject(pJson, jkTableScanPhysiPlanSubtable, nodeToJson, pNode->pSubtable);
240,773,855✔
2549
  }
2550
  if (TSDB_CODE_SUCCESS == code) {
240,774,327✔
2551
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanAssignBlockUid, pNode->assignBlockUid);
240,774,327✔
2552
  }
2553
  if (TSDB_CODE_SUCCESS == code) {
240,775,382✔
2554
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanIgnoreUpdate, pNode->igCheckUpdate);
240,775,382✔
2555
  }
2556
  if (TSDB_CODE_SUCCESS == code) {
240,775,382✔
2557
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanFilesetDelimited, pNode->filesetDelimited);
240,775,382✔
2558
  }
2559
  if (TSDB_CODE_SUCCESS == code) {
240,774,799✔
2560
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanNeedCountEmptyTable, pNode->needCountEmptyTable);
240,774,799✔
2561
  }
2562
  if (TSDB_CODE_SUCCESS == code) {
240,775,382✔
2563
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanParaTablesSort, pNode->paraTablesSort);
240,775,382✔
2564
  }
2565
  if (TSDB_CODE_SUCCESS == code) {
240,774,256✔
2566
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanSmallDataTsSort, pNode->smallDataTsSort);
240,774,256✔
2567
  }
2568
  return code;
240,774,822✔
2569
}
2570

2571
static int32_t jsonToExtTimeWindow(const SJson* pJson, STimeWindow** pWin) {
2,651,503✔
2572
  int64_t skey = 0;
2,651,503✔
2573
  if (NULL == tjsonGetObjectItem(pJson, jkTableScanPhysiPlanExtStartKey)) {
2,651,503✔
2574
    return TSDB_CODE_SUCCESS;
2,639,473✔
2575
  }
2576
  *pWin = taosMemoryMalloc(sizeof(**pWin));
12,030✔
2577
  if (NULL == *pWin) {
12,030✔
2578
    return terrno;
×
2579
  }
2580
  int32_t code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanExtStartKey, &(*pWin)->skey);
12,030✔
2581
  if (TSDB_CODE_SUCCESS == code) {
12,030✔
2582
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanExtEndKey, &(*pWin)->ekey);
12,030✔
2583
  }
2584
  return code;
12,030✔
2585
}
2586

2587
static int32_t jsonToPhysiTableScanNode(const SJson* pJson, void* pObj) {
2,651,101✔
2588
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
2,651,101✔
2589

2590
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
2,651,101✔
2591
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2592
    code = tjsonGetUTinyIntValue(pJson, jkTableScanPhysiPlanScanCount, &pNode->scanSeq[0]);
2,651,503✔
2593
  }
2594
  if (TSDB_CODE_SUCCESS == code) {
2,651,101✔
2595
    code = tjsonGetUTinyIntValue(pJson, jkTableScanPhysiPlanReverseScanCount, &pNode->scanSeq[1]);
2,651,101✔
2596
  }
2597
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2598
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanStartKey, &pNode->scanRange.skey);
2,651,503✔
2599
  }
2600
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2601
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanEndKey, &pNode->scanRange.ekey);
2,651,503✔
2602
  }
2603
  if (TSDB_CODE_SUCCESS == code) {
2,651,142✔
2604
    code = jsonToExtTimeWindow(pJson, &pNode->pExtScanRange);
2,651,142✔
2605
  }
2606
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2607
    code = jsonToNodeObject(pJson, jkTableScanPhysiPlanTimeRangeExpr, &pNode->pTimeRange);
2,651,503✔
2608
  }
2609
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2610
    code = jsonToNodeObject(pJson, jkTableScanPhysiPlanExtTimeRangeExpr, &pNode->pExtTimeRange);
2,651,503✔
2611
  }
2612
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2613
    code = jsonToNodeObject(pJson, jkTableScanPhysiPlanPrimCondExpr, &pNode->pPrimaryCond);
2,651,503✔
2614
  }
2615
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2616
    code = tjsonGetDoubleValue(pJson, jkTableScanPhysiPlanRatio, &pNode->ratio);
2,651,503✔
2617
  }
2618
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2619
    code = tjsonGetIntValue(pJson, jkTableScanPhysiPlanDataRequired, &pNode->dataRequired);
2,651,503✔
2620
  }
2621
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2622
    code = jsonToNodeList(pJson, jkTableScanPhysiPlanDynamicScanFuncs, &pNode->pDynamicScanFuncs);
2,651,503✔
2623
  }
2624
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2625
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanInterval, &pNode->interval);
2,651,503✔
2626
  }
2627
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2628
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanOffset, &pNode->offset);
2,651,503✔
2629
  }
2630
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2631
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanSliding, &pNode->sliding);
2,651,503✔
2632
  }
2633
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2634
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanIntervalUnit, &pNode->intervalUnit);
2,651,503✔
2635
  }
2636
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2637
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanSlidingUnit, &pNode->slidingUnit);
2,651,503✔
2638
  }
2639
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2640
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanTriggerType, &pNode->triggerType);
2,651,503✔
2641
  }
2642
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2643
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanWatermark, &pNode->watermark);
2,651,503✔
2644
  }
2645
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2646
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanIgnoreExpired, &pNode->igExpired);
2,651,503✔
2647
  }
2648
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2649
    code = jsonToNodeList(pJson, jkTableScanPhysiPlanGroupTags, &pNode->pGroupTags);
2,651,503✔
2650
  }
2651
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2652
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanGroupSort, &pNode->groupSort);
2,651,503✔
2653
  }
2654
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2655
    code = jsonToNodeList(pJson, jkTableScanPhysiPlanTags, &pNode->pTags);
2,651,503✔
2656
  }
2657
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2658
    code = jsonToNodeObject(pJson, jkTableScanPhysiPlanSubtable, &pNode->pSubtable);
2,651,503✔
2659
  }
2660
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2661
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanAssignBlockUid, &pNode->assignBlockUid);
2,651,503✔
2662
  }
2663
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2664
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanIgnoreUpdate, &pNode->igCheckUpdate);
2,651,503✔
2665
  }
2666
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2667
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanFilesetDelimited, &pNode->filesetDelimited);
2,651,503✔
2668
  }
2669
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2670
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanNeedCountEmptyTable, &pNode->needCountEmptyTable);
2,651,503✔
2671
  }
2672
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2673
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanParaTablesSort, &pNode->paraTablesSort);
2,651,503✔
2674
  }
2675
  if (TSDB_CODE_SUCCESS == code) {
2,651,503✔
2676
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanSmallDataTsSort, &pNode->smallDataTsSort);
2,651,503✔
2677
  }
2678
  return code;
2,651,503✔
2679
}
2680
static const char* jkVirtualTableScanPhysiPlanGroupTags = "GroupTags";
2681
static const char* jkVirtualTableScanPhysiPlanGroupSort = "GroupSort";
2682
static const char* jkVirtualTableScanPhysiPlanscanAllCols = "scanAllCols";
2683
static const char* jkVirtualTableScanPhysiPlanTargets = "Targets";
2684
static const char* jkVirtualTableScanPhysiPlanTags = "Tags";
2685
static const char* jkVirtualTableScanPhysiPlanSubtable = "Subtable";
2686
static const char* jkVirtualTableScanPhysiPlanIgExpired = "IgExpired";
2687
static const char* jkVirtualTableScanPhysiPlanIgCheckUpdate = "IgCheckUpdate";
2688

2689
static int32_t physiVirtualTableScanNodeToJson(const void* pObj, SJson* pJson) {
5,209,756✔
2690
  const SVirtualScanPhysiNode* pNode = (const SVirtualScanPhysiNode*)pObj;
5,209,756✔
2691

2692
  int32_t code = physiScanNodeToJson(pObj, pJson);
5,209,756✔
2693

2694
  if (TSDB_CODE_SUCCESS == code) {
5,209,756✔
2695
    code = nodeListToJson(pJson, jkVirtualTableScanPhysiPlanGroupTags, pNode->pGroupTags);
5,209,756✔
2696
  }
2697

2698
  if (TSDB_CODE_SUCCESS == code) {
5,209,756✔
2699
    code = tjsonAddBoolToObject(pJson, jkVirtualTableScanPhysiPlanGroupSort, pNode->groupSort);
5,209,756✔
2700
  }
2701

2702
  if (TSDB_CODE_SUCCESS == code) {
5,209,756✔
2703
    code = tjsonAddBoolToObject(pJson, jkVirtualTableScanPhysiPlanscanAllCols, pNode->scanAllCols);
5,209,756✔
2704
  }
2705

2706
  if (TSDB_CODE_SUCCESS == code) {
5,209,756✔
2707
    code = nodeListToJson(pJson, jkVirtualTableScanPhysiPlanTargets, pNode->pTargets);
5,209,756✔
2708
  }
2709

2710
  if (TSDB_CODE_SUCCESS == code) {
5,209,756✔
2711
    code = nodeListToJson(pJson, jkVirtualTableScanPhysiPlanTags, pNode->pTags);
5,209,756✔
2712
  }
2713

2714
  if (TSDB_CODE_SUCCESS == code) {
5,209,756✔
2715
    code = tjsonAddObject(pJson, jkVirtualTableScanPhysiPlanSubtable, nodeToJson, pNode->pSubtable);
5,209,756✔
2716
  }
2717

2718
  if (TSDB_CODE_SUCCESS == code) {
5,209,756✔
2719
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableScanPhysiPlanIgExpired, pNode->igExpired);
5,209,756✔
2720
  }
2721

2722
  if (TSDB_CODE_SUCCESS == code) {
5,209,756✔
2723
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableScanPhysiPlanIgCheckUpdate, pNode->igCheckUpdate);
5,209,756✔
2724
  }
2725

2726
  return code;
5,209,756✔
2727
}
2728

2729
static int32_t jsonToPhysiVirtualTableScanNode(const SJson* pJson, void* pObj) {
213,821✔
2730
  SVirtualScanPhysiNode* pNode = (SVirtualScanPhysiNode*)pObj;
213,821✔
2731

2732
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
213,821✔
2733
  if (TSDB_CODE_SUCCESS == code) {
213,821✔
2734
    code = jsonToNodeList(pJson, jkVirtualTableScanPhysiPlanGroupTags, &pNode->pGroupTags);
213,821✔
2735
  }
2736
  if (TSDB_CODE_SUCCESS == code) {
213,821✔
2737
    code = tjsonGetBoolValue(pJson, jkVirtualTableScanPhysiPlanGroupSort, &pNode->groupSort);
213,821✔
2738
  }
2739
  if (TSDB_CODE_SUCCESS == code) {
213,821✔
2740
    code = tjsonGetBoolValue(pJson, jkVirtualTableScanPhysiPlanscanAllCols, &pNode->scanAllCols);
213,821✔
2741
  }
2742
  if (TSDB_CODE_SUCCESS == code) {
213,821✔
2743
    code = jsonToNodeList(pJson, jkVirtualTableScanPhysiPlanTargets, &pNode->pTargets);
213,821✔
2744
  }
2745

2746
  if (TSDB_CODE_SUCCESS == code) {
213,821✔
2747
    code = jsonToNodeList(pJson, jkVirtualTableScanPhysiPlanTags, &pNode->pTags);
213,821✔
2748
  }
2749

2750
  if (TSDB_CODE_SUCCESS == code) {
213,821✔
2751
    code = jsonToNodeObject(pJson, jkVirtualTableScanPhysiPlanSubtable, &pNode->pSubtable);
213,821✔
2752
  }
2753

2754
  if (TSDB_CODE_SUCCESS == code) {
213,821✔
2755
    code = tjsonGetTinyIntValue(pJson, jkVirtualTableScanPhysiPlanIgExpired, &pNode->igExpired);
213,821✔
2756
  }
2757

2758
  if (TSDB_CODE_SUCCESS == code) {
213,821✔
2759
    code = tjsonGetTinyIntValue(pJson, jkVirtualTableScanPhysiPlanIgCheckUpdate, &pNode->igCheckUpdate);
213,821✔
2760
  }
2761

2762
  return code;
213,821✔
2763
}
2764

2765
static const char* jkSysTableScanPhysiPlanMnodeEpSet = "MnodeEpSet";
2766
static const char* jkSysTableScanPhysiPlanShowRewrite = "ShowRewrite";
2767
static const char* jkSysTableScanPhysiPlanAccountId = "AccountId";
2768
static const char* jkSysTableScanPhysiPlanSysInfo = "SysInfo";
2769
static const char* jkSysTableScanPhysiPlanPrivInfo = "PrivInfo";
2770

2771
static int32_t physiSysTableScanNodeToJson(const void* pObj, SJson* pJson) {
39,658,780✔
2772
  const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
39,658,780✔
2773

2774
  int32_t code = physiScanNodeToJson(pObj, pJson);
39,658,780✔
2775
  if (TSDB_CODE_SUCCESS == code) {
39,658,780✔
2776
    code = tjsonAddObject(pJson, jkSysTableScanPhysiPlanMnodeEpSet, epSetToJson, &pNode->mgmtEpSet);
39,658,780✔
2777
  }
2778
  if (TSDB_CODE_SUCCESS == code) {
39,658,197✔
2779
    code = tjsonAddBoolToObject(pJson, jkSysTableScanPhysiPlanShowRewrite, pNode->showRewrite);
39,658,197✔
2780
  }
2781
  if (TSDB_CODE_SUCCESS == code) {
39,658,780✔
2782
    code = tjsonAddIntegerToObject(pJson, jkSysTableScanPhysiPlanAccountId, pNode->accountId);
39,658,780✔
2783
  }
2784
  if (TSDB_CODE_SUCCESS == code) {
39,658,780✔
2785
    code = tjsonAddBoolToObject(pJson, jkSysTableScanPhysiPlanSysInfo, pNode->sysInfo);
39,658,780✔
2786
  }
2787
  if (TSDB_CODE_SUCCESS == code) {
39,658,780✔
2788
    code = tjsonAddIntegerToObject(pJson, jkSysTableScanPhysiPlanPrivInfo, pNode->privInfo);
39,658,780✔
2789
  }
2790

2791
  return code;
39,657,614✔
2792
}
2793

2794
static int32_t jsonToPhysiSysTableScanNode(const SJson* pJson, void* pObj) {
1,253,278✔
2795
  SSystemTableScanPhysiNode* pNode = (SSystemTableScanPhysiNode*)pObj;
1,253,278✔
2796

2797
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
1,253,278✔
2798
  if (TSDB_CODE_SUCCESS == code) {
1,253,278✔
2799
    code = tjsonToObject(pJson, jkSysTableScanPhysiPlanMnodeEpSet, jsonToEpSet, &pNode->mgmtEpSet);
1,253,278✔
2800
  }
2801
  if (TSDB_CODE_SUCCESS == code) {
1,253,278✔
2802
    code = tjsonGetBoolValue(pJson, jkSysTableScanPhysiPlanShowRewrite, &pNode->showRewrite);
1,253,278✔
2803
  }
2804
  if (TSDB_CODE_SUCCESS == code) {
1,253,278✔
2805
    tjsonGetNumberValue(pJson, jkSysTableScanPhysiPlanAccountId, pNode->accountId, code);
1,253,278✔
2806
  }
2807
  if (TSDB_CODE_SUCCESS == code) {
1,253,278✔
2808
    code = tjsonGetBoolValue(pJson, jkSysTableScanPhysiPlanSysInfo, &pNode->sysInfo);
1,253,278✔
2809
  }
2810
  if (TSDB_CODE_SUCCESS == code) {
1,253,278✔
2811
    code = tjsonGetUSmallIntValue(pJson, jkSysTableScanPhysiPlanPrivInfo, &pNode->privInfo);
1,253,278✔
2812
  }
2813

2814
  return code;
1,253,278✔
2815
}
2816

2817
static const char* jkProjectPhysiPlanProjections = "Projections";
2818
static const char* jkProjectPhysiPlanMergeDataBlock = "MergeDataBlock";
2819
static const char* jkProjectPhysiPlanIgnoreGroupId = "IgnoreGroupId";
2820
static const char* jkProjectPhysiPlanInputIgnoreGroup = "InputIgnoreGroup";
2821

2822
static int32_t physiProjectNodeToJson(const void* pObj, SJson* pJson) {
107,562,767✔
2823
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
107,562,767✔
2824

2825
  int32_t code = physicPlanNodeToJson(pObj, pJson);
107,562,767✔
2826
  if (TSDB_CODE_SUCCESS == code) {
107,562,767✔
2827
    code = nodeListToJson(pJson, jkProjectPhysiPlanProjections, pNode->pProjections);
107,562,767✔
2828
  }
2829
  if (TSDB_CODE_SUCCESS == code) {
107,562,767✔
2830
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
107,562,767✔
2831
  }
2832
  if (TSDB_CODE_SUCCESS == code) {
107,562,767✔
2833
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanIgnoreGroupId, pNode->ignoreGroupId);
107,562,767✔
2834
  }
2835
  if (TSDB_CODE_SUCCESS == code) {
107,562,767✔
2836
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanInputIgnoreGroup, pNode->inputIgnoreGroup);
107,562,767✔
2837
  }
2838
  return code;
107,562,767✔
2839
}
2840

2841
static int32_t jsonToPhysiProjectNode(const SJson* pJson, void* pObj) {
2,046,468✔
2842
  SProjectPhysiNode* pNode = (SProjectPhysiNode*)pObj;
2,046,468✔
2843

2844
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
2,046,468✔
2845
  if (TSDB_CODE_SUCCESS == code) {
2,046,870✔
2846
    code = jsonToNodeList(pJson, jkProjectPhysiPlanProjections, &pNode->pProjections);
2,046,870✔
2847
  }
2848
  if (TSDB_CODE_SUCCESS == code) {
2,046,870✔
2849
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
2,046,870✔
2850
  }
2851
  if (TSDB_CODE_SUCCESS == code) {
2,046,870✔
2852
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanIgnoreGroupId, &pNode->ignoreGroupId);
2,046,870✔
2853
  }
2854
  if (TSDB_CODE_SUCCESS == code) {
2,046,870✔
2855
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanInputIgnoreGroup, &pNode->inputIgnoreGroup);
2,046,870✔
2856
  }
2857
  return code;
2,046,870✔
2858
}
2859

2860
static const char* jkJoinPhysiPlanJoinType = "JoinType";
2861
static const char* jkJoinPhysiPlanSubType = "SubType";
2862
static const char* jkJoinPhysiPlanWinOffset = "WindowOffset";
2863
static const char* jkJoinPhysiPlanJoinLimit = "JoinLimit";
2864
static const char* jkJoinPhysiPlanAsofOp = "AsofOp";
2865
static const char* jkJoinPhysiPlanLeftPrimExpr = "LeftPrimExpr";
2866
static const char* jkJoinPhysiPlanRightPrimExpr = "RightPrimExpr";
2867
static const char* jkJoinPhysiPlanLeftPrimSlotId = "LeftPrimSlotId";
2868
static const char* jkJoinPhysiPlanRightPrimSlotId = "RightPrimSlotId";
2869
static const char* jkJoinPhysiPlanLeftEqCols = "LeftEqCols";
2870
static const char* jkJoinPhysiPlanRightEqCols = "RightEqCols";
2871
static const char* jkJoinPhysiPlanInputTsOrder = "InputTsOrder";
2872
static const char* jkJoinPhysiPlanOnLeftCols = "OnLeftColumns";
2873
static const char* jkJoinPhysiPlanOnRightCols = "OnRightColumns";
2874
static const char* jkJoinPhysiPlanPrimKeyCondition = "PrimKeyCondition";
2875
static const char* jkJoinPhysiPlanOnConditions = "OnConditions";
2876
static const char* jkJoinPhysiPlanTargets = "Targets";
2877
static const char* jkJoinPhysiPlanColOnConditions = "ColumnOnConditions";
2878
static const char* jkJoinPhysiPlanLeftInputRowNum = "LeftInputRowNum";
2879
static const char* jkJoinPhysiPlanRightInputRowNum = "RightInputRowNum";
2880
static const char* jkJoinPhysiPlanLeftInputRowSize = "LeftInputRowSize";
2881
static const char* jkJoinPhysiPlanRightInputRowSize = "RightInputRowSize";
2882
static const char* jkJoinPhysiPlanSeqWinGroup = "SeqWinGroup";
2883
static const char* jkJoinPhysiPlanGroupJoin = "GroupJoin";
2884
static const char* jkJoinPhysiPlanLeftOnCond = "LeftOnCond";
2885
static const char* jkJoinPhysiPlanRightOnCond = "RightOnCond";
2886
static const char* jkJoinPhysiPlanTimeRangeSKey = "TimeRangeSKey";
2887
static const char* jkJoinPhysiPlanTimeRangeEKey = "TimeRangeEKey";
2888
static const char* jkJoinPhysiPlanTimeRangeTarget = "TimeRangeTarget";
2889

2890
static int32_t physiMergeJoinNodeToJson(const void* pObj, SJson* pJson) {
15,603,491✔
2891
  const SSortMergeJoinPhysiNode* pNode = (const SSortMergeJoinPhysiNode*)pObj;
15,603,491✔
2892

2893
  int32_t code = physicPlanNodeToJson(pObj, pJson);
15,603,491✔
2894
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2895
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanJoinType, pNode->joinType);
15,603,491✔
2896
  }
2897
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2898
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanSubType, pNode->subType);
15,603,491✔
2899
  }
2900
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2901
    code = tjsonAddObject(pJson, jkJoinPhysiPlanWinOffset, nodeToJson, pNode->pWindowOffset);
15,603,491✔
2902
  }
2903
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2904
    code = tjsonAddObject(pJson, jkJoinPhysiPlanJoinLimit, nodeToJson, pNode->pJLimit);
15,603,491✔
2905
  }
2906
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2907
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanAsofOp, pNode->asofOpType);
15,603,491✔
2908
  }
2909
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2910
    code = tjsonAddObject(pJson, jkJoinPhysiPlanLeftPrimExpr, nodeToJson, pNode->leftPrimExpr);
15,603,491✔
2911
  }
2912
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2913
    code = tjsonAddObject(pJson, jkJoinPhysiPlanRightPrimExpr, nodeToJson, pNode->rightPrimExpr);
15,603,491✔
2914
  }
2915
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2916
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId);
15,603,491✔
2917
  }
2918
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2919
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId);
15,603,491✔
2920
  }
2921
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2922
    code = nodeListToJson(pJson, jkJoinPhysiPlanLeftEqCols, pNode->pEqLeft);
15,603,491✔
2923
  }
2924
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2925
    code = nodeListToJson(pJson, jkJoinPhysiPlanRightEqCols, pNode->pEqRight);
15,603,491✔
2926
  }
2927
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2928
    code = tjsonAddObject(pJson, jkJoinPhysiPlanOnConditions, nodeToJson, pNode->pFullOnCond);
15,603,491✔
2929
  }
2930
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2931
    code = nodeListToJson(pJson, jkJoinPhysiPlanTargets, pNode->pTargets);
15,603,491✔
2932
  }
2933
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2934
    code = tjsonAddObject(pJson, jkJoinPhysiPlanColOnConditions, nodeToJson, pNode->pColOnCond);
15,603,491✔
2935
  }
2936
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2937
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum);
15,603,491✔
2938
  }
2939
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2940
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize);
15,603,491✔
2941
  }
2942
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2943
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum);
15,603,491✔
2944
  }
2945
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2946
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize);
15,603,491✔
2947
  }
2948
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2949
    code = tjsonAddBoolToObject(pJson, jkJoinPhysiPlanSeqWinGroup, pNode->seqWinGroup);
15,603,491✔
2950
  }
2951
  if (TSDB_CODE_SUCCESS == code) {
15,603,491✔
2952
    code = tjsonAddBoolToObject(pJson, jkJoinPhysiPlanGroupJoin, pNode->grpJoin);
15,603,491✔
2953
  }
2954

2955
  return code;
15,603,491✔
2956
}
2957

2958
static int32_t jsonToPhysiMergeJoinNode(const SJson* pJson, void* pObj) {
13,011✔
2959
  SSortMergeJoinPhysiNode* pNode = (SSortMergeJoinPhysiNode*)pObj;
13,011✔
2960

2961
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
13,011✔
2962
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
2963
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanJoinType, pNode->joinType, code);
13,011✔
2964
  }
2965
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
2966
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanSubType, pNode->subType, code);
13,011✔
2967
  }
2968
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
2969
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanWinOffset, &pNode->pWindowOffset);
13,011✔
2970
  }
2971
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
2972
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanJoinLimit, &pNode->pJLimit);
13,011✔
2973
  }
2974
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
2975
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanAsofOp, pNode->asofOpType, code);
13,011✔
2976
  }
2977
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
2978
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanLeftPrimExpr, &pNode->leftPrimExpr);
13,011✔
2979
  }
2980
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
2981
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanRightPrimExpr, &pNode->rightPrimExpr);
13,011✔
2982
  }
2983
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
2984
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId, code);
13,011✔
2985
  }
2986
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
2987
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId, code);
13,011✔
2988
  }
2989
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
2990
    code = jsonToNodeList(pJson, jkJoinPhysiPlanLeftEqCols, &pNode->pEqLeft);
13,011✔
2991
  }
2992
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
2993
    code = jsonToNodeList(pJson, jkJoinPhysiPlanRightEqCols, &pNode->pEqRight);
13,011✔
2994
  }
2995
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
2996
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanOnConditions, &pNode->pFullOnCond);
13,011✔
2997
  }
2998
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
2999
    code = jsonToNodeList(pJson, jkJoinPhysiPlanTargets, &pNode->pTargets);
13,011✔
3000
  }
3001
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
3002
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanColOnConditions, &pNode->pColOnCond);
13,011✔
3003
  }
3004
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
3005
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum, code);
13,011✔
3006
  }
3007
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
3008
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize, code);
13,011✔
3009
  }
3010
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
3011
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum, code);
13,011✔
3012
  }
3013
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
3014
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize, code);
13,011✔
3015
  }
3016
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
3017
    code = tjsonGetBoolValue(pJson, jkJoinPhysiPlanSeqWinGroup, &pNode->seqWinGroup);
13,011✔
3018
  }
3019
  if (TSDB_CODE_SUCCESS == code) {
13,011✔
3020
    code = tjsonGetBoolValue(pJson, jkJoinPhysiPlanGroupJoin, &pNode->grpJoin);
13,011✔
3021
  }
3022

3023
  return code;
13,011✔
3024
}
3025

3026
static int32_t physiHashJoinNodeToJson(const void* pObj, SJson* pJson) {
2,134,065✔
3027
  const SHashJoinPhysiNode* pNode = (const SHashJoinPhysiNode*)pObj;
2,134,065✔
3028

3029
  int32_t code = physicPlanNodeToJson(pObj, pJson);
2,134,065✔
3030
  if (TSDB_CODE_SUCCESS == code) {
2,134,065✔
3031
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanJoinType, pNode->joinType);
2,134,065✔
3032
  }
3033
  if (TSDB_CODE_SUCCESS == code) {
2,134,065✔
3034
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanSubType, pNode->subType);
2,134,065✔
3035
  }
3036
  if (TSDB_CODE_SUCCESS == code) {
2,134,065✔
3037
    code = nodeListToJson(pJson, jkJoinPhysiPlanOnLeftCols, pNode->pOnLeft);
2,134,065✔
3038
  }
3039
  if (TSDB_CODE_SUCCESS == code) {
2,134,065✔
3040
    code = nodeListToJson(pJson, jkJoinPhysiPlanOnRightCols, pNode->pOnRight);
2,134,065✔
3041
  }
3042
  if (TSDB_CODE_SUCCESS == code) {
2,134,065✔
3043
    code = tjsonAddObject(pJson, jkJoinPhysiPlanLeftPrimExpr, nodeToJson, pNode->leftPrimExpr);
2,134,065✔
3044
  }
3045
  if (TSDB_CODE_SUCCESS == code) {
2,134,065✔
3046
    code = tjsonAddObject(pJson, jkJoinPhysiPlanRightPrimExpr, nodeToJson, pNode->rightPrimExpr);
2,134,065✔
3047
  }
3048
  if (TSDB_CODE_SUCCESS == code) {
2,134,065✔
3049
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId);
2,134,065✔
3050
  }
3051
  if (TSDB_CODE_SUCCESS == code) {
2,134,065✔
3052
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId);
2,134,065✔
3053
  }
3054
  if (TSDB_CODE_SUCCESS == code) {
2,134,065✔
3055
    code = tjsonAddObject(pJson, jkJoinPhysiPlanOnConditions, nodeToJson, pNode->pFullOnCond);
2,134,065✔
3056
  }
3057
  if (TSDB_CODE_SUCCESS == code) {
2,134,065✔
3058
    code = nodeListToJson(pJson, jkJoinPhysiPlanTargets, pNode->pTargets);
2,134,065✔
3059
  }
3060
  if (TSDB_CODE_SUCCESS == code) {
2,134,065✔
3061
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum);
2,134,065✔
3062
  }
3063
  if (TSDB_CODE_SUCCESS == code) {
2,134,065✔
3064
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize);
2,134,065✔
3065
  }
3066
  if (TSDB_CODE_SUCCESS == code) {
2,134,065✔
3067
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum);
2,134,065✔
3068
  }
3069
  if (TSDB_CODE_SUCCESS == code) {
2,134,065✔
3070
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize);
2,134,065✔
3071
  }
3072
  if (TSDB_CODE_SUCCESS == code) {
2,134,065✔
3073
    code = tjsonAddObject(pJson, jkJoinPhysiPlanLeftOnCond, nodeToJson, pNode->pLeftOnCond);
2,134,065✔
3074
  }
3075
  if (TSDB_CODE_SUCCESS == code) {
2,134,065✔
3076
    code = tjsonAddObject(pJson, jkJoinPhysiPlanRightOnCond, nodeToJson, pNode->pRightOnCond);
2,134,065✔
3077
  }
3078
  if (TSDB_CODE_SUCCESS == code) {
2,134,065✔
3079
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanTimeRangeTarget, pNode->timeRangeTarget);
2,134,065✔
3080
  }
3081
  if (TSDB_CODE_SUCCESS == code) {
2,134,065✔
3082
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanTimeRangeSKey, pNode->timeRange.skey);
2,134,065✔
3083
  }
3084
  if (TSDB_CODE_SUCCESS == code) {
2,134,065✔
3085
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanTimeRangeEKey, pNode->timeRange.ekey);
2,134,065✔
3086
  }
3087

3088
  return code;
2,134,065✔
3089
}
3090

3091
static int32_t jsonToPhysiHashJoinNode(const SJson* pJson, void* pObj) {
1,565✔
3092
  SHashJoinPhysiNode* pNode = (SHashJoinPhysiNode*)pObj;
1,565✔
3093

3094
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
1,565✔
3095
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
3096
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanJoinType, pNode->joinType, code);
1,565✔
3097
  }
3098
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
3099
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanSubType, pNode->subType, code);
1,565✔
3100
  }
3101
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
3102
    code = jsonToNodeList(pJson, jkJoinPhysiPlanOnLeftCols, &pNode->pOnLeft);
1,565✔
3103
  }
3104
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
3105
    code = jsonToNodeList(pJson, jkJoinPhysiPlanOnRightCols, &pNode->pOnRight);
1,565✔
3106
  }
3107
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
3108
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanLeftPrimExpr, &pNode->leftPrimExpr);
1,565✔
3109
  }
3110
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
3111
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanRightPrimExpr, &pNode->rightPrimExpr);
1,565✔
3112
  }
3113
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
3114
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId, code);
1,565✔
3115
  }
3116
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
3117
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId, code);
1,565✔
3118
  }
3119
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
3120
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanOnConditions, &pNode->pFullOnCond);
1,565✔
3121
  }
3122
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
3123
    code = jsonToNodeList(pJson, jkJoinPhysiPlanTargets, &pNode->pTargets);
1,565✔
3124
  }
3125
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
3126
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum, code);
1,565✔
3127
  }
3128
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
3129
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize, code);
1,565✔
3130
  }
3131
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
3132
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum, code);
1,565✔
3133
  }
3134
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
3135
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize, code);
1,565✔
3136
  }
3137
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
3138
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanLeftOnCond, &pNode->pLeftOnCond);
1,565✔
3139
  }
3140
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
3141
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanRightOnCond, &pNode->pRightOnCond);
1,565✔
3142
  }
3143
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
3144
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanTimeRangeTarget, pNode->timeRangeTarget, code);
1,565✔
3145
  }
3146
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
3147
    code = tjsonGetBigIntValue(pJson, jkJoinPhysiPlanTimeRangeSKey, &pNode->timeRange.skey);
1,565✔
3148
  }
3149
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
3150
    code = tjsonGetBigIntValue(pJson, jkJoinPhysiPlanTimeRangeEKey, &pNode->timeRange.ekey);
1,565✔
3151
  }
3152

3153
  return code;
1,565✔
3154
}
3155

3156
static const char* jkAggPhysiPlanExprs = "Exprs";
3157
static const char* jkAggPhysiPlanGroupKeys = "GroupKeys";
3158
static const char* jkAggPhysiPlanAggFuncs = "AggFuncs";
3159
static const char* jkAggPhysiPlanMergeDataBlock = "MergeDataBlock";
3160
static const char* jkAggPhysiPlanGroupKeyOptimized = "GroupKeyOptimized";
3161
static const char* jkAggPhysiPlanHasCountLikeFunc = "HasCountFunc";
3162

3163
static int32_t physiAggNodeToJson(const void* pObj, SJson* pJson) {
124,414,230✔
3164
  const SAggPhysiNode* pNode = (const SAggPhysiNode*)pObj;
124,414,230✔
3165

3166
  int32_t code = physicPlanNodeToJson(pObj, pJson);
124,414,230✔
3167
  if (TSDB_CODE_SUCCESS == code) {
124,414,813✔
3168
    code = nodeListToJson(pJson, jkAggPhysiPlanExprs, pNode->pExprs);
124,415,396✔
3169
  }
3170
  if (TSDB_CODE_SUCCESS == code) {
124,414,813✔
3171
    code = nodeListToJson(pJson, jkAggPhysiPlanGroupKeys, pNode->pGroupKeys);
124,414,813✔
3172
  }
3173
  if (TSDB_CODE_SUCCESS == code) {
124,415,396✔
3174
    code = nodeListToJson(pJson, jkAggPhysiPlanAggFuncs, pNode->pAggFuncs);
124,415,396✔
3175
  }
3176
  if (TSDB_CODE_SUCCESS == code) {
124,415,396✔
3177
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
124,415,396✔
3178
  }
3179
  if (TSDB_CODE_SUCCESS == code) {
124,415,396✔
3180
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanGroupKeyOptimized, pNode->groupKeyOptimized);
124,415,396✔
3181
  }
3182
  if (TSDB_CODE_SUCCESS == code) {
124,414,813✔
3183
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanHasCountLikeFunc, pNode->hasCountLikeFunc);
124,414,813✔
3184
  }
3185

3186
  return code;
124,415,396✔
3187
}
3188

3189
static int32_t jsonToPhysiAggNode(const SJson* pJson, void* pObj) {
876,737✔
3190
  SAggPhysiNode* pNode = (SAggPhysiNode*)pObj;
876,737✔
3191

3192
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
876,737✔
3193
  if (TSDB_CODE_SUCCESS == code) {
876,737✔
3194
    code = jsonToNodeList(pJson, jkAggPhysiPlanExprs, &pNode->pExprs);
876,737✔
3195
  }
3196
  if (TSDB_CODE_SUCCESS == code) {
876,737✔
3197
    code = jsonToNodeList(pJson, jkAggPhysiPlanGroupKeys, &pNode->pGroupKeys);
876,737✔
3198
  }
3199
  if (TSDB_CODE_SUCCESS == code) {
876,737✔
3200
    code = jsonToNodeList(pJson, jkAggPhysiPlanAggFuncs, &pNode->pAggFuncs);
876,737✔
3201
  }
3202
  if (TSDB_CODE_SUCCESS == code) {
876,737✔
3203
    code = tjsonGetBoolValue(pJson, jkAggPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
876,737✔
3204
  }
3205
  if (TSDB_CODE_SUCCESS == code) {
876,737✔
3206
    code = tjsonGetBoolValue(pJson, jkAggPhysiPlanGroupKeyOptimized, &pNode->groupKeyOptimized);
876,737✔
3207
  }
3208
  if (TSDB_CODE_SUCCESS == code) {
876,737✔
3209
    code = tjsonGetBoolValue(pJson, jkAggPhysiPlanHasCountLikeFunc, &pNode->hasCountLikeFunc);
876,737✔
3210
  }
3211

3212
  return code;
876,737✔
3213
}
3214

3215
static const char* jkExchangePhysiPlanSrcStartGroupId = "SrcStartGroupId";
3216
static const char* jkExchangePhysiPlanSrcEndGroupId = "SrcEndGroupId";
3217
static const char* jkExchangePhysiPlanSrcEndPoints = "SrcEndPoints";
3218
static const char* jkExchangePhysiPlanChildrenVgIds = "ChildrenVgIds";
3219
static const char* jkExchangePhysiPlanChildrenVgId = "ChildVgId";
3220
static const char* jkExchangePhysiPlanSeqRecvData = "SeqRecvData";
3221
static const char* jkExchangePhysiPlanDynTbname = "DynTbname";
3222
static const char* jkExchangePhysiPlanSingleChannel = "GrpSingleChannel";
3223
static const char* jkExchangePhysiPlanSingleSrc = "SingleSource";
3224

3225
static int32_t vgIdToJson(const void* pObj, SJson* pJson) {
1,738,370✔
3226
  return tjsonAddIntegerToObject(pJson, jkExchangePhysiPlanChildrenVgId, *(const int32_t*)pObj);
1,738,370✔
3227
}
3228

3229
static int32_t jsonToVgId(const SJson* pJson, void* pObj) {
1,007,073✔
3230
  return tjsonGetIntValue(pJson, jkExchangePhysiPlanChildrenVgId, (int32_t*)pObj);
1,007,073✔
3231
}
3232

3233
static int32_t physiExchangeNodeToJson(const void* pObj, SJson* pJson) {
139,227,480✔
3234
  const SExchangePhysiNode* pNode = (const SExchangePhysiNode*)pObj;
139,227,480✔
3235

3236
  int32_t code = physicPlanNodeToJson(pObj, pJson);
139,227,480✔
3237
  if (TSDB_CODE_SUCCESS == code) {
139,227,480✔
3238
    code = tjsonAddIntegerToObject(pJson, jkExchangePhysiPlanSrcStartGroupId, pNode->srcStartGroupId);
139,227,480✔
3239
  }
3240
  if (TSDB_CODE_SUCCESS == code) {
139,227,480✔
3241
    code = tjsonAddIntegerToObject(pJson, jkExchangePhysiPlanSrcEndGroupId, pNode->srcEndGroupId);
139,227,480✔
3242
  }
3243
  if (TSDB_CODE_SUCCESS == code) {
139,227,480✔
3244
    code = nodeListToJson(pJson, jkExchangePhysiPlanSrcEndPoints, pNode->pSrcEndPoints);
139,227,480✔
3245
  }
3246
  if (TSDB_CODE_SUCCESS == code && NULL != pNode->childrenVgIds) {
139,227,480✔
3247
    code = tjsonAddTArray(pJson, jkExchangePhysiPlanChildrenVgIds, vgIdToJson, pNode->childrenVgIds);
1,050,017✔
3248
  }
3249
  if (TSDB_CODE_SUCCESS == code) {
139,227,480✔
3250
    code = tjsonAddBoolToObject(pJson, jkExchangePhysiPlanSeqRecvData, pNode->seqRecvData);
139,227,480✔
3251
  }
3252
  if (TSDB_CODE_SUCCESS == code) {
139,227,480✔
3253
    code = tjsonAddBoolToObject(pJson, jkExchangePhysiPlanDynTbname, pNode->dynTbname);
139,227,480✔
3254
  }
3255
  if (TSDB_CODE_SUCCESS == code) {
139,227,480✔
3256
    code = tjsonAddBoolToObject(pJson, jkExchangePhysiPlanSingleChannel, pNode->grpSingleChannel);
139,227,480✔
3257
  }
3258
  if (TSDB_CODE_SUCCESS == code) {
139,227,480✔
3259
    code = tjsonAddBoolToObject(pJson, jkExchangePhysiPlanSingleSrc, pNode->singleSrc);
139,227,480✔
3260
  }
3261

3262
  return code;
139,227,480✔
3263
}
3264

3265
static int32_t jsonToPhysiExchangeNode(const SJson* pJson, void* pObj) {
2,296,080✔
3266
  SExchangePhysiNode* pNode = (SExchangePhysiNode*)pObj;
2,296,080✔
3267

3268
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
2,296,080✔
3269
  if (TSDB_CODE_SUCCESS == code) {
2,296,080✔
3270
    code = tjsonGetIntValue(pJson, jkExchangePhysiPlanSrcStartGroupId, &pNode->srcStartGroupId);
2,296,080✔
3271
  }
3272
  if (TSDB_CODE_SUCCESS == code) {
2,296,080✔
3273
    code = tjsonGetIntValue(pJson, jkExchangePhysiPlanSrcEndGroupId, &pNode->srcEndGroupId);
2,296,080✔
3274
  }
3275
  if (TSDB_CODE_SUCCESS == code) {
2,296,080✔
3276
    code = jsonToNodeList(pJson, jkExchangePhysiPlanSrcEndPoints, &pNode->pSrcEndPoints);
2,296,080✔
3277
  }
3278
  if (TSDB_CODE_SUCCESS == code) {
2,296,080✔
3279
    code = tjsonToTArray(pJson, jkExchangePhysiPlanChildrenVgIds, jsonToVgId,
2,296,080✔
3280
                         &pNode->childrenVgIds, sizeof(int32_t));
3281
  }
3282
  if (TSDB_CODE_SUCCESS == code) {
2,296,080✔
3283
    code = tjsonGetBoolValue(pJson, jkExchangePhysiPlanSeqRecvData, &pNode->seqRecvData);
2,296,080✔
3284
  }
3285
  if (TSDB_CODE_SUCCESS == code) {
2,296,080✔
3286
    code = tjsonGetBoolValue(pJson, jkExchangePhysiPlanDynTbname, &pNode->dynTbname);
2,296,080✔
3287
  }
3288
  if (TSDB_CODE_SUCCESS == code) {
2,296,080✔
3289
    code = tjsonGetBoolValue(pJson, jkExchangePhysiPlanSingleChannel, &pNode->grpSingleChannel);
2,296,080✔
3290
  }
3291
  if (TSDB_CODE_SUCCESS == code) {
2,296,080✔
3292
    code = tjsonGetBoolValue(pJson, jkExchangePhysiPlanSingleSrc, &pNode->singleSrc);
2,296,080✔
3293
  }
3294

3295
  return code;
2,296,080✔
3296
}
3297

3298
static const char* jkMergePhysiPlanMergeKeys = "MergeKeys";
3299
static const char* jkMergePhysiPlanTargets = "Targets";
3300
static const char* jkMergePhysiPlanNumOfChannels = "NumOfChannels";
3301
static const char* jkMergePhysiPlanSrcGroupId = "SrcGroupId";
3302
static const char* jkMergePhysiPlanSrcEndGroupId = "SrcEndGroupId";
3303
static const char* jkMergePhysiPlanGroupSort = "GroupSort";
3304
static const char* jkMergePhysiPlanIgnoreGroupID = "IgnoreGroupID";
3305
static const char* jkMergePhysiPlanInputWithGroupId = "InputWithGroupId";
3306
static const char* jkMergePhysiPlanType = "Type";
3307

3308
static int32_t physiMergeNodeToJson(const void* pObj, SJson* pJson) {
17,880,796✔
3309
  const SMergePhysiNode* pNode = (const SMergePhysiNode*)pObj;
17,880,796✔
3310

3311
  int32_t code = physicPlanNodeToJson(pObj, pJson);
17,880,796✔
3312
  if (TSDB_CODE_SUCCESS == code) {
17,880,796✔
3313
    code = nodeListToJson(pJson, jkMergePhysiPlanMergeKeys, pNode->pMergeKeys);
17,880,796✔
3314
  }
3315
  if (TSDB_CODE_SUCCESS == code) {
17,880,796✔
3316
    code = nodeListToJson(pJson, jkMergePhysiPlanTargets, pNode->pTargets);
17,880,796✔
3317
  }
3318
  if (TSDB_CODE_SUCCESS == code) {
17,880,796✔
3319
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanNumOfChannels, pNode->numOfChannels);
17,880,796✔
3320
  }
3321
  if (TSDB_CODE_SUCCESS == code) {
17,880,796✔
3322
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanSrcGroupId, pNode->srcGroupId);
17,880,796✔
3323
  }
3324
  if (TSDB_CODE_SUCCESS == code) {
17,880,796✔
3325
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanSrcEndGroupId, pNode->srcEndGroupId);
17,880,796✔
3326
  }
3327
  if (TSDB_CODE_SUCCESS == code) {
17,880,796✔
3328
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanGroupSort, pNode->groupSort);
17,880,796✔
3329
  }
3330
  if (TSDB_CODE_SUCCESS == code) {
17,880,796✔
3331
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanIgnoreGroupID, pNode->ignoreGroupId);
17,880,796✔
3332
  }
3333
  if (TSDB_CODE_SUCCESS == code) {
17,880,796✔
3334
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanInputWithGroupId, pNode->inputWithGroupId);
17,880,796✔
3335
  }
3336
  if (TSDB_CODE_SUCCESS == code) {
17,880,796✔
3337
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanType, pNode->type);
17,880,796✔
3338
  }
3339

3340
  return code;
17,880,796✔
3341
}
3342

3343
static int32_t jsonToPhysiMergeNode(const SJson* pJson, void* pObj) {
69,837✔
3344
  SMergePhysiNode* pNode = (SMergePhysiNode*)pObj;
69,837✔
3345

3346
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
69,837✔
3347
  if (TSDB_CODE_SUCCESS == code) {
69,837✔
3348
    code = jsonToNodeList(pJson, jkMergePhysiPlanMergeKeys, &pNode->pMergeKeys);
69,837✔
3349
  }
3350
  if (TSDB_CODE_SUCCESS == code) {
69,837✔
3351
    code = jsonToNodeList(pJson, jkMergePhysiPlanTargets, &pNode->pTargets);
69,837✔
3352
  }
3353
  if (TSDB_CODE_SUCCESS == code) {
69,837✔
3354
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanNumOfChannels, &pNode->numOfChannels);
69,837✔
3355
  }
3356
  if (TSDB_CODE_SUCCESS == code) {
69,837✔
3357
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanSrcGroupId, &pNode->srcGroupId);
69,837✔
3358
  }
3359
  if (TSDB_CODE_SUCCESS == code) {
69,837✔
3360
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanSrcEndGroupId, &pNode->srcEndGroupId);
69,837✔
3361
  }
3362
  if (TSDB_CODE_SUCCESS == code) {
69,837✔
3363
    code = tjsonGetBoolValue(pJson, jkMergePhysiPlanGroupSort, &pNode->groupSort);
69,837✔
3364
  }
3365
  if (TSDB_CODE_SUCCESS == code) {
69,837✔
3366
    code = tjsonGetBoolValue(pJson, jkMergePhysiPlanIgnoreGroupID, &pNode->ignoreGroupId);
69,837✔
3367
  }
3368
  if (TSDB_CODE_SUCCESS == code) {
69,837✔
3369
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanType, (int32_t*)&pNode->type);
69,837✔
3370
  }
3371

3372
  return code;
69,837✔
3373
}
3374

3375
static const char* jkSortPhysiPlanExprs = "Exprs";
3376
static const char* jkSortPhysiPlanSortKeys = "SortKeys";
3377
static const char* jkSortPhysiPlanTargets = "Targets";
3378
static const char* jkSortPhysiPlanCalcGroupIds = "CalcGroupIds";
3379
static const char* jkSortPhysiPlanExcludePKCol = "ExcludePKCol";
3380

3381
static int32_t physiSortNodeToJson(const void* pObj, SJson* pJson) {
40,253,148✔
3382
  const SSortPhysiNode* pNode = (const SSortPhysiNode*)pObj;
40,253,148✔
3383

3384
  int32_t code = physicPlanNodeToJson(pObj, pJson);
40,253,148✔
3385
  if (TSDB_CODE_SUCCESS == code) {
40,253,148✔
3386
    code = nodeListToJson(pJson, jkSortPhysiPlanExprs, pNode->pExprs);
40,253,148✔
3387
  }
3388
  if (TSDB_CODE_SUCCESS == code) {
40,253,148✔
3389
    code = nodeListToJson(pJson, jkSortPhysiPlanSortKeys, pNode->pSortKeys);
40,253,148✔
3390
  }
3391
  if (TSDB_CODE_SUCCESS == code) {
40,253,148✔
3392
    code = nodeListToJson(pJson, jkSortPhysiPlanTargets, pNode->pTargets);
40,253,148✔
3393
  }
3394
  if (TSDB_CODE_SUCCESS == code) {
40,253,148✔
3395
    code = tjsonAddBoolToObject(pJson, jkSortPhysiPlanCalcGroupIds, pNode->calcGroupId);
40,253,148✔
3396
  }
3397
  if (TSDB_CODE_SUCCESS == code) {
40,253,148✔
3398
    code = tjsonAddBoolToObject(pJson, jkSortPhysiPlanExcludePKCol, pNode->excludePkCol);
40,253,148✔
3399
  }
3400

3401
  return code;
40,253,148✔
3402
}
3403

3404
static int32_t jsonToPhysiSortNode(const SJson* pJson, void* pObj) {
157,392✔
3405
  SSortPhysiNode* pNode = (SSortPhysiNode*)pObj;
157,392✔
3406

3407
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
157,392✔
3408
  if (TSDB_CODE_SUCCESS == code) {
157,392✔
3409
    code = jsonToNodeList(pJson, jkSortPhysiPlanExprs, &pNode->pExprs);
157,392✔
3410
  }
3411
  if (TSDB_CODE_SUCCESS == code) {
157,392✔
3412
    code = jsonToNodeList(pJson, jkSortPhysiPlanSortKeys, &pNode->pSortKeys);
157,392✔
3413
  }
3414
  if (TSDB_CODE_SUCCESS == code) {
157,392✔
3415
    code = jsonToNodeList(pJson, jkSortPhysiPlanTargets, &pNode->pTargets);
157,392✔
3416
  }
3417
  if (TSDB_CODE_SUCCESS == code) {
157,392✔
3418
    code = tjsonGetBoolValue(pJson, jkSortPhysiPlanCalcGroupIds, &pNode->calcGroupId);
157,392✔
3419
  }
3420
  if (TSDB_CODE_SUCCESS == code) {
157,392✔
3421
    code = tjsonGetBoolValue(pJson, jkSortPhysiPlanExcludePKCol, &pNode->excludePkCol);
157,392✔
3422
  }
3423

3424
  return code;
157,392✔
3425
}
3426

3427
static const char* jkWindowPhysiPlanExprs = "Exprs";
3428
static const char* jkWindowPhysiPlanFuncs = "Funcs";
3429
static const char* jkWindowPhysiPlanProjs = "Projs";
3430
static const char* jkWindowPhysiPlanTsPk = "TsPk";
3431
static const char* jkWindowPhysiPlanTsEnd = "TsEnd";
3432
static const char* jkWindowPhysiPlanTriggerType = "TriggerType";
3433
static const char* jkWindowPhysiPlanWatermark = "Watermark";
3434
static const char* jkWindowPhysiPlanDeleteMark = "DeleteMark";
3435
static const char* jkWindowPhysiPlanIgnoreExpired = "IgnoreExpired";
3436
static const char* jkWindowPhysiPlanInputTsOrder = "InputTsOrder";
3437
static const char* jkWindowPhysiPlanMergeDataBlock = "MergeDataBlock";
3438
static const char* jkWindowPhysiPlanDestHasPrimaryKey = "DestHasPrimaryKey";
3439
static const char* jkWindowPhysiPlanRecalculateInterval = "RecalculateInterval";
3440
static const char* jkWindowPhysiPlanIndefRowsFunc = "IndefRowsFunc";
3441

3442
static int32_t physiWindowNodeToJson(const void* pObj, SJson* pJson) {
12,112,892✔
3443
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
12,112,892✔
3444

3445
  int32_t code = physicPlanNodeToJson(pObj, pJson);
12,112,892✔
3446
  if (TSDB_CODE_SUCCESS == code) {
12,112,892✔
3447
    code = nodeListToJson(pJson, jkWindowPhysiPlanExprs, pNode->pExprs);
12,112,892✔
3448
  }
3449
  if (TSDB_CODE_SUCCESS == code) {
12,112,892✔
3450
    code = nodeListToJson(pJson, jkWindowPhysiPlanFuncs, pNode->pFuncs);
12,112,892✔
3451
  }
3452
  if (TSDB_CODE_SUCCESS == code) {
12,112,892✔
3453
    code = nodeListToJson(pJson, jkWindowPhysiPlanProjs, pNode->pProjs);
12,112,892✔
3454
  }
3455
  if (TSDB_CODE_SUCCESS == code) {
12,112,892✔
3456
    code = tjsonAddObject(pJson, jkWindowPhysiPlanTsPk, nodeToJson, pNode->pTspk);
12,112,892✔
3457
  }
3458
  if (TSDB_CODE_SUCCESS == code) {
12,112,892✔
3459
    code = tjsonAddObject(pJson, jkWindowPhysiPlanTsEnd, nodeToJson, pNode->pTsEnd);
12,112,892✔
3460
  }
3461
  if (TSDB_CODE_SUCCESS == code) {
12,112,892✔
3462
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanTriggerType, pNode->unusedParam1);
12,112,892✔
3463
  }
3464
  if (TSDB_CODE_SUCCESS == code) {
12,112,892✔
3465
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanWatermark, pNode->unusedParam2);
12,112,892✔
3466
  }
3467
  if (TSDB_CODE_SUCCESS == code) {
12,112,892✔
3468
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanDeleteMark, pNode->unusedParam3);
12,112,892✔
3469
  }
3470
  if (TSDB_CODE_SUCCESS == code) {
12,112,892✔
3471
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanIgnoreExpired, pNode->unusedParam4);
12,112,892✔
3472
  }
3473
  if (TSDB_CODE_SUCCESS == code) {
12,112,892✔
3474
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanIndefRowsFunc, pNode->indefRowsFunc);
12,112,892✔
3475
  }
3476
  if (TSDB_CODE_SUCCESS == code) {
12,112,892✔
3477
    code = tjsonAddBoolToObject(pJson, jkWindowPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
12,112,892✔
3478
  }
3479
  if (TSDB_CODE_SUCCESS == code) {
12,112,892✔
3480
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanRecalculateInterval, pNode->unusedParam5);
12,112,892✔
3481
  }
3482

3483
  return code;
12,112,892✔
3484
}
3485

3486
static int32_t jsonToPhysiWindowNode(const SJson* pJson, void* pObj) {
740,433✔
3487
  SWindowPhysiNode* pNode = (SWindowPhysiNode*)pObj;
740,433✔
3488

3489
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
740,433✔
3490
  if (TSDB_CODE_SUCCESS == code) {
740,433✔
3491
    code = jsonToNodeList(pJson, jkWindowPhysiPlanExprs, &pNode->pExprs);
740,433✔
3492
  }
3493
  if (TSDB_CODE_SUCCESS == code) {
740,273✔
3494
    code = jsonToNodeList(pJson, jkWindowPhysiPlanFuncs, &pNode->pFuncs);
740,273✔
3495
  }
3496
  if (TSDB_CODE_SUCCESS == code) {
740,433✔
3497
    code = jsonToNodeList(pJson, jkWindowPhysiPlanProjs, &pNode->pProjs);
740,433✔
3498
  }
3499
  if (TSDB_CODE_SUCCESS == code) {
740,433✔
3500
    code = jsonToNodeObject(pJson, jkWindowPhysiPlanTsPk, (SNode**)&pNode->pTspk);
740,433✔
3501
  }
3502
  if (TSDB_CODE_SUCCESS == code) {
740,433✔
3503
    code = jsonToNodeObject(pJson, jkWindowPhysiPlanTsEnd, (SNode**)&pNode->pTsEnd);
740,433✔
3504
  }
3505
  if (TSDB_CODE_SUCCESS == code) {
740,433✔
3506
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanTriggerType, &pNode->unusedParam1);
740,433✔
3507
  }
3508
  if (TSDB_CODE_SUCCESS == code) {
740,433✔
3509
    code = tjsonGetBigIntValue(pJson, jkWindowPhysiPlanWatermark, &pNode->unusedParam2);
740,433✔
3510
  }
3511
  if (TSDB_CODE_SUCCESS == code) {
740,433✔
3512
    code = tjsonGetBigIntValue(pJson, jkWindowPhysiPlanDeleteMark, &pNode->unusedParam3);
740,433✔
3513
  }
3514
  if (TSDB_CODE_SUCCESS == code) {
740,433✔
3515
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanIgnoreExpired, &pNode->unusedParam4);
740,433✔
3516
  }
3517
  if (TSDB_CODE_SUCCESS == code) {
740,433✔
3518
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanIndefRowsFunc, &pNode->indefRowsFunc);
740,433✔
3519
  }
3520
  if (TSDB_CODE_SUCCESS == code) {
740,433✔
3521
    code = tjsonGetBoolValue(pJson, jkWindowPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
740,433✔
3522
  }
3523
  if (TSDB_CODE_SUCCESS == code) {
740,433✔
3524
    code = tjsonGetBigIntValue(pJson, jkWindowPhysiPlanRecalculateInterval, &pNode->unusedParam5);
740,433✔
3525
  }
3526

3527
  return code;
740,433✔
3528
}
3529

3530
static const char* jkIntervalPhysiPlanInterval = "Interval";
3531
static const char* jkIntervalPhysiPlanOffset = "Offset";
3532
static const char* jkIntervalPhysiPlanSliding = "Sliding";
3533
static const char* jkIntervalPhysiPlanIntervalUnit = "intervalUnit";
3534
static const char* jkIntervalPhysiPlanSlidingUnit = "slidingUnit";
3535
static const char* jkIntervalPhysiPlanStartTime = "StartTime";
3536
static const char* jkIntervalPhysiPlanEndTime = "EndTime";
3537

3538
static int32_t physiIntervalNodeToJson(const void* pObj, SJson* pJson) {
6,772,878✔
3539
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
6,772,878✔
3540

3541
  int32_t code = physiWindowNodeToJson(pObj, pJson);
6,772,878✔
3542
  if (TSDB_CODE_SUCCESS == code) {
6,772,878✔
3543
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanInterval, pNode->interval);
6,772,878✔
3544
  }
3545
  if (TSDB_CODE_SUCCESS == code) {
6,772,878✔
3546
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanOffset, pNode->offset);
6,772,878✔
3547
  }
3548
  if (TSDB_CODE_SUCCESS == code) {
6,772,878✔
3549
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanSliding, pNode->sliding);
6,772,878✔
3550
  }
3551
  if (TSDB_CODE_SUCCESS == code) {
6,772,878✔
3552
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanIntervalUnit, pNode->intervalUnit);
6,772,878✔
3553
  }
3554
  if (TSDB_CODE_SUCCESS == code) {
6,772,878✔
3555
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanSlidingUnit, pNode->slidingUnit);
6,772,878✔
3556
  }
3557
  if (TSDB_CODE_SUCCESS == code) {
6,772,878✔
3558
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanStartTime, pNode->timeRange.skey);
6,772,878✔
3559
  }
3560
  if (TSDB_CODE_SUCCESS == code) {
6,772,878✔
3561
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanEndTime, pNode->timeRange.ekey);
6,772,878✔
3562
  }
3563

3564
  return code;
6,772,878✔
3565
}
3566

3567
static int32_t jsonToPhysiIntervalNode(const SJson* pJson, void* pObj) {
27,618✔
3568
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
27,618✔
3569

3570
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
27,618✔
3571
  if (TSDB_CODE_SUCCESS == code) {
27,618✔
3572
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanInterval, &pNode->interval);
27,618✔
3573
  }
3574
  if (TSDB_CODE_SUCCESS == code) {
27,618✔
3575
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanOffset, &pNode->offset);
27,618✔
3576
  }
3577
  if (TSDB_CODE_SUCCESS == code) {
27,618✔
3578
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanSliding, &pNode->sliding);
27,618✔
3579
  }
3580
  if (TSDB_CODE_SUCCESS == code) {
27,618✔
3581
    code = tjsonGetTinyIntValue(pJson, jkIntervalPhysiPlanIntervalUnit, &pNode->intervalUnit);
27,618✔
3582
  }
3583
  if (TSDB_CODE_SUCCESS == code) {
27,618✔
3584
    code = tjsonGetTinyIntValue(pJson, jkIntervalPhysiPlanSlidingUnit, &pNode->slidingUnit);
27,618✔
3585
  }
3586
  if (TSDB_CODE_SUCCESS == code) {
27,618✔
3587
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanStartTime, &pNode->timeRange.skey);
27,618✔
3588
  }
3589
  if (TSDB_CODE_SUCCESS == code) {
27,618✔
3590
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanEndTime, &pNode->timeRange.ekey);
27,618✔
3591
  }
3592

3593
  return code;
27,618✔
3594
}
3595

3596
static const char* jkExternalPhysiPlanStartTime = "StartTime";
3597
static const char* jkExternalPhysiPlanEndTime = "EndTime";
3598
static const char* jkExternalPhysiPlanTimeRangeExpr = "TimeRangeExpr";
3599
static const char* jkExternalPhysiPlanIsSingleTable = "IsSingleTable";
3600
static const char* jkExternalPhysiPlanInputHasOrder = "InputHasOrder";
3601
static const char* jkExternalPhysiPlanOrgTableUid = "OrgTableUid";
3602
static const char* jkExternalPhysiPlanOrgTableVgId = "OrgTableVgId";
3603
static const char* jkExternalPhysiPlanNeedGroupSort = "NeedGroupSort";
3604
static const char* jkExternalPhysiPlanCalcWithPartition = "CalcWithPartition";
3605
static const char* jkExternalPhysiPlanExtWinSplit = "ExtWinSplit";
3606
static const char* jkExternalPhysiPlanFillMode = "FillMode";
3607
static const char* jkExternalPhysiPlanFillExprs = "FillExprs";
3608
static const char* jkExternalPhysiPlanFillValues = "FillValues";
3609

3610
static int32_t physiExternalNodeToJson(const void* pObj, SJson* pJson) {
2,464,708✔
3611
  const SExternalWindowPhysiNode* pNode = (const SExternalWindowPhysiNode*)pObj;
2,464,708✔
3612

3613
  int32_t code = physiWindowNodeToJson(pObj, pJson);
2,464,708✔
3614
  if (TSDB_CODE_SUCCESS == code) {
2,464,708✔
3615
    code = tjsonAddIntegerToObject(pJson, jkExternalPhysiPlanStartTime, pNode->timeRange.skey);
2,464,708✔
3616
  }
3617
  if (TSDB_CODE_SUCCESS == code) {
2,464,708✔
3618
    code = tjsonAddIntegerToObject(pJson, jkExternalPhysiPlanEndTime, pNode->timeRange.ekey);
2,464,708✔
3619
  }
3620
  if (TSDB_CODE_SUCCESS == code) {
2,464,708✔
3621
    code = tjsonAddObject(pJson, jkExternalPhysiPlanTimeRangeExpr, nodeToJson, pNode->pTimeRange);
2,464,708✔
3622
  }
3623
  if (TSDB_CODE_SUCCESS == code) {
2,464,708✔
3624
    code = tjsonAddBoolToObject(pJson, jkExternalPhysiPlanIsSingleTable, pNode->isSingleTable);
2,464,708✔
3625
  }
3626
  if (TSDB_CODE_SUCCESS == code) {
2,464,708✔
3627
    code = tjsonAddBoolToObject(pJson, jkExternalPhysiPlanInputHasOrder, pNode->inputHasOrder);
2,464,708✔
3628
  }
3629
  if (TSDB_CODE_SUCCESS == code) {
2,464,708✔
3630
    code = tjsonAddIntegerToObject(pJson, jkExternalPhysiPlanOrgTableUid, pNode->orgTableUid);
2,464,708✔
3631
  }
3632
  if (TSDB_CODE_SUCCESS == code) {
2,464,708✔
3633
    code = tjsonAddIntegerToObject(pJson, jkExternalPhysiPlanOrgTableVgId, pNode->orgTableVgId);
2,464,708✔
3634
  }
3635
  if (TSDB_CODE_SUCCESS == code) {
2,464,708✔
3636
    code = tjsonAddBoolToObject(pJson, jkExternalPhysiPlanNeedGroupSort, pNode->needGroupSort);
2,464,708✔
3637
  }
3638
  if (TSDB_CODE_SUCCESS == code) {
2,464,708✔
3639
    code = tjsonAddBoolToObject(pJson, jkExternalPhysiPlanCalcWithPartition, pNode->calcWithPartition);
2,464,708✔
3640
  }
3641
  if (TSDB_CODE_SUCCESS == code) {
2,464,708✔
3642
    code = tjsonAddBoolToObject(pJson, jkExternalPhysiPlanExtWinSplit, pNode->extWinSplit);
2,464,708✔
3643
  }
3644
  if (TSDB_CODE_SUCCESS == code) {
2,464,708✔
3645
    code = tjsonAddIntegerToObject(pJson, jkExternalPhysiPlanFillMode, pNode->extFill.mode);
2,464,708✔
3646
  }
3647
  if (TSDB_CODE_SUCCESS == code) {
2,464,708✔
3648
    code = nodeListToJson(pJson, jkExternalPhysiPlanFillExprs, pNode->extFill.pFillExprs);
2,464,708✔
3649
  }
3650
  if (TSDB_CODE_SUCCESS == code) {
2,464,708✔
3651
    code = tjsonAddObject(pJson, jkExternalPhysiPlanFillValues, nodeToJson, pNode->extFill.pFillValues);
2,464,708✔
3652
  }
3653
  return code;
2,464,708✔
3654
}
3655

3656
static int32_t jsonToPhysiExternalNode(const SJson* pJson, void* pObj) {
666,690✔
3657
  SExternalWindowPhysiNode* pNode = (SExternalWindowPhysiNode*)pObj;
666,690✔
3658

3659
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
666,690✔
3660
  if (TSDB_CODE_SUCCESS == code) {
666,530✔
3661
    code = tjsonGetBigIntValue(pJson, jkExternalPhysiPlanStartTime, &pNode->timeRange.skey);
666,530✔
3662
  }
3663
  if (TSDB_CODE_SUCCESS == code) {
666,690✔
3664
    code = tjsonGetBigIntValue(pJson, jkExternalPhysiPlanEndTime, &pNode->timeRange.ekey);
666,690✔
3665
  }
3666
  if (TSDB_CODE_SUCCESS == code) {
666,690✔
3667
    code = jsonToNodeObject(pJson, jkExternalPhysiPlanTimeRangeExpr, &pNode->pTimeRange);
666,690✔
3668
  }
3669
  if (TSDB_CODE_SUCCESS == code) {
666,690✔
3670
    code = tjsonGetBoolValue(pJson, jkExternalPhysiPlanIsSingleTable, &pNode->isSingleTable);
666,690✔
3671
  }
3672
  if (TSDB_CODE_SUCCESS == code) {
666,690✔
3673
    code = tjsonGetBoolValue(pJson, jkExternalPhysiPlanInputHasOrder, &pNode->inputHasOrder);
666,690✔
3674
  }
3675
  if (TSDB_CODE_SUCCESS == code) {
666,690✔
3676
    code = tjsonGetBigIntValue(pJson, jkExternalPhysiPlanOrgTableUid, &pNode->orgTableUid);
666,690✔
3677
  }
3678
  if (TSDB_CODE_SUCCESS == code) {
666,690✔
3679
    code = tjsonGetIntValue(pJson, jkExternalPhysiPlanOrgTableVgId, &pNode->orgTableVgId);
666,690✔
3680
  }
3681
  if (TSDB_CODE_SUCCESS == code) {
666,690✔
3682
    code = tjsonGetBoolValue(pJson, jkExternalPhysiPlanNeedGroupSort, &pNode->needGroupSort);
666,690✔
3683
  }
3684
  if (TSDB_CODE_SUCCESS == code) {
666,690✔
3685
    code = tjsonGetBoolValue(pJson, jkExternalPhysiPlanCalcWithPartition, &pNode->calcWithPartition);
666,690✔
3686
  }
3687
  if (TSDB_CODE_SUCCESS == code) {
666,690✔
3688
    code = tjsonGetBoolValue(pJson, jkExternalPhysiPlanExtWinSplit, &pNode->extWinSplit);
666,690✔
3689
  }
3690
  if (TSDB_CODE_SUCCESS == code) {
666,690✔
3691
    tjsonGetNumberValue(pJson, jkExternalPhysiPlanFillMode, pNode->extFill.mode, code);
666,690✔
3692
  }
3693
  if (TSDB_CODE_SUCCESS == code) {
666,690✔
3694
    code = jsonToNodeList(pJson, jkExternalPhysiPlanFillExprs, &pNode->extFill.pFillExprs);
666,690✔
3695
  }
3696
  if (TSDB_CODE_SUCCESS == code) {
666,690✔
3697
    code = jsonToNodeObject(pJson, jkExternalPhysiPlanFillValues, &pNode->extFill.pFillValues);
666,690✔
3698
  }
3699

3700
  return code;
666,690✔
3701
}
3702

3703
static const char* jkFillPhysiPlanMode = "Mode";
3704
static const char* jkFillPhysiPlanFillExprs = "FillExprs";
3705
static const char* jkFillPhysiPlanNotFillExprs = "NotFillExprs";
3706
static const char* jkFillPhysiPlanWStartTs = "WStartTs";
3707
static const char* jkFillPhysiPlanValues = "Values";
3708
static const char* jkFillPhysiPlanStartTime = "StartTime";
3709
static const char* jkFillPhysiPlanEndTime = "EndTime";
3710
static const char* jkFillPhysiPlanFillNullExprs = "FillNullExprs";
3711
static const char* jkFillPhysiPlanFillTimeRangeExpr = "TimeRangeExpr";
3712
static const char* jkFillPhysiPlanSurroundingTime = "SurroundingTime";
3713
static const char* jkFillPhysiPlanIndefRowsMode = "IndefRowsMode";
3714

3715
static int32_t physiFillNodeToJson(const void* pObj, SJson* pJson) {
663,180✔
3716
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
663,180✔
3717

3718
  int32_t code = physicPlanNodeToJson(pObj, pJson);
663,180✔
3719
  if (TSDB_CODE_SUCCESS == code) {
663,180✔
3720
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanMode, pNode->mode);
663,180✔
3721
  }
3722
  if (TSDB_CODE_SUCCESS == code) {
663,180✔
3723
    code = nodeListToJson(pJson, jkFillPhysiPlanFillExprs, pNode->pFillExprs);
663,180✔
3724
  }
3725
  if (TSDB_CODE_SUCCESS == code) {
663,180✔
3726
    code = nodeListToJson(pJson, jkFillPhysiPlanNotFillExprs, pNode->pNotFillExprs);
663,180✔
3727
  }
3728
  if (TSDB_CODE_SUCCESS == code) {
663,180✔
3729
    code = tjsonAddObject(pJson, jkFillPhysiPlanWStartTs, nodeToJson, pNode->pWStartTs);
663,180✔
3730
  }
3731
  if (TSDB_CODE_SUCCESS == code) {
663,180✔
3732
    code = tjsonAddObject(pJson, jkFillPhysiPlanValues, nodeToJson, pNode->pValues);
663,180✔
3733
  }
3734
  if (TSDB_CODE_SUCCESS == code) {
663,180✔
3735
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanStartTime, pNode->timeRange.skey);
663,180✔
3736
  }
3737
  if (TSDB_CODE_SUCCESS == code) {
663,180✔
3738
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanEndTime, pNode->timeRange.ekey);
663,180✔
3739
  }
3740
  if (TSDB_CODE_SUCCESS == code) {
663,180✔
3741
    code = nodeListToJson(pJson, jkFillPhysiPlanFillNullExprs, pNode->pFillNullExprs);
663,180✔
3742
  }
3743
  if (TSDB_CODE_SUCCESS == code) {
663,180✔
3744
    code = tjsonAddObject(pJson, jkFillPhysiPlanFillTimeRangeExpr, nodeToJson, pNode->pTimeRange);
663,180✔
3745
  }
3746
  if (TSDB_CODE_SUCCESS == code) {
663,180✔
3747
    code = tjsonAddObject(pJson, jkFillPhysiPlanSurroundingTime, nodeToJson,
663,180✔
3748
                          pNode->pSurroundingTime);
663,180✔
3749
  }
3750
  if (TSDB_CODE_SUCCESS == code) {
663,180✔
3751
    code = tjsonAddBoolToObject(pJson, jkFillPhysiPlanIndefRowsMode, pNode->indefRowsMode);
663,180✔
3752
  }
3753

3754
  return code;
663,180✔
3755
}
3756

3757
static int32_t jsonToPhysiFillNode(const SJson* pJson, void* pObj) {
11,838✔
3758
  SFillPhysiNode* pNode = (SFillPhysiNode*)pObj;
11,838✔
3759

3760
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
11,838✔
3761
  if (TSDB_CODE_SUCCESS == code) {
11,838✔
3762
    tjsonGetNumberValue(pJson, jkFillPhysiPlanMode, pNode->mode, code);
11,838✔
3763
  }
3764
  if (TSDB_CODE_SUCCESS == code) {
11,838✔
3765
    code = jsonToNodeList(pJson, jkFillPhysiPlanFillExprs, &pNode->pFillExprs);
11,838✔
3766
  }
3767
  if (TSDB_CODE_SUCCESS == code) {
11,838✔
3768
    code = jsonToNodeList(pJson, jkFillPhysiPlanNotFillExprs, &pNode->pNotFillExprs);
11,838✔
3769
  }
3770
  if (TSDB_CODE_SUCCESS == code) {
11,838✔
3771
    code = jsonToNodeObject(pJson, jkFillPhysiPlanWStartTs, &pNode->pWStartTs);
11,838✔
3772
  }
3773
  if (TSDB_CODE_SUCCESS == code) {
11,838✔
3774
    code = jsonToNodeObject(pJson, jkFillPhysiPlanValues, &pNode->pValues);
11,838✔
3775
  }
3776
  if (TSDB_CODE_SUCCESS == code) {
11,838✔
3777
    code = tjsonGetBigIntValue(pJson, jkFillPhysiPlanStartTime, &pNode->timeRange.skey);
11,838✔
3778
  }
3779
  if (TSDB_CODE_SUCCESS == code) {
11,838✔
3780
    code = tjsonGetBigIntValue(pJson, jkFillPhysiPlanEndTime, &pNode->timeRange.ekey);
11,838✔
3781
  }
3782
  if (TSDB_CODE_SUCCESS == code) {
11,838✔
3783
    code = jsonToNodeList(pJson, jkFillPhysiPlanFillNullExprs, &pNode->pFillNullExprs);
11,838✔
3784
  }
3785
  if (TSDB_CODE_SUCCESS == code) {
11,838✔
3786
    code = jsonToNodeObject(pJson, jkFillPhysiPlanFillTimeRangeExpr, &pNode->pTimeRange);
11,838✔
3787
  }
3788
  if (TSDB_CODE_SUCCESS == code) {
11,838✔
3789
    code = jsonToNodeObject(pJson, jkFillPhysiPlanSurroundingTime,
11,838✔
3790
                            &pNode->pSurroundingTime);
3791
  }
3792
  if (TSDB_CODE_SUCCESS == code) {
11,838✔
3793
    code = tjsonGetBoolValue(pJson, jkFillPhysiPlanIndefRowsMode, &pNode->indefRowsMode);
11,838✔
3794
  }
3795

3796
  return code;
11,838✔
3797
}
3798

3799
static const char* jkSessionWindowPhysiPlanGap = "Gap";
3800

3801
static int32_t physiSessionWindowNodeToJson(const void* pObj, SJson* pJson) {
655,956✔
3802
  const SSessionWinodwPhysiNode* pNode = (const SSessionWinodwPhysiNode*)pObj;
655,956✔
3803

3804
  int32_t code = physiWindowNodeToJson(pObj, pJson);
655,956✔
3805
  if (TSDB_CODE_SUCCESS == code) {
655,956✔
3806
    code = tjsonAddIntegerToObject(pJson, jkSessionWindowPhysiPlanGap, pNode->gap);
655,956✔
3807
  }
3808

3809
  return code;
655,956✔
3810
}
3811

3812
static int32_t jsonToPhysiSessionWindowNode(const SJson* pJson, void* pObj) {
4,290✔
3813
  SSessionWinodwPhysiNode* pNode = (SSessionWinodwPhysiNode*)pObj;
4,290✔
3814

3815
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
4,290✔
3816
  if (TSDB_CODE_SUCCESS == code) {
4,290✔
3817
    tjsonGetNumberValue(pJson, jkSessionWindowPhysiPlanGap, pNode->gap, code);
4,290✔
3818
  }
3819

3820
  return code;
4,290✔
3821
}
3822

3823
static const char* jkStateWindowPhysiPlanStateKeys = "StateKeys";
3824
static const char* jkStateWindowPhysiPlanStateKeyCompat = "StateKey";
3825
static const char* jkStateWindowPhysiPlanTrueForType = "TrueForType";
3826
static const char* jkStateWindowPhysiPlanTrueForCount = "TrueForCount";
3827
static const char* jkStateWindowPhysiPlanTrueForDuration = "TrueForLimit";
3828
static const char* jkStateWindowPhysiPlanExtendOption = "ExtendOption";
3829

3830
static int32_t physiStateWindowNodeToJson(const void* pObj, SJson* pJson) {
1,415,810✔
3831
  const SStateWindowPhysiNode* pNode = (const SStateWindowPhysiNode*)pObj;
1,415,810✔
3832

3833
  int32_t code = physiWindowNodeToJson(pObj, pJson);
1,415,810✔
3834
  if (TSDB_CODE_SUCCESS == code) {
1,415,810✔
3835
    code = nodeListToJson(pJson, jkStateWindowPhysiPlanStateKeys, pNode->pStateKeys);
1,415,810✔
3836
  }
3837
  if (TSDB_CODE_SUCCESS == code) {
1,415,810✔
3838
    code = tjsonAddIntegerToObject(pJson, jkStateWindowPhysiPlanTrueForType, pNode->trueForType);
1,415,810✔
3839
  }
3840
  if (TSDB_CODE_SUCCESS == code) {
1,415,810✔
3841
    code = tjsonAddIntegerToObject(pJson, jkStateWindowPhysiPlanTrueForCount, pNode->trueForCount);
1,415,810✔
3842
  }
3843
  if (TSDB_CODE_SUCCESS == code) {
1,415,810✔
3844
    code = tjsonAddIntegerToObject(pJson, jkStateWindowPhysiPlanTrueForDuration, pNode->trueForDuration);
1,415,810✔
3845
  }
3846
  if (TSDB_CODE_SUCCESS == code) {
1,415,810✔
3847
    code = tjsonAddIntegerToObject(pJson, jkStateWindowPhysiPlanExtendOption, pNode->extendOption);
1,415,810✔
3848
  }
3849

3850
  return code;
1,415,810✔
3851
}
3852

3853
static int32_t jsonToPhysiStateWindowNode(const SJson* pJson, void* pObj) {
35,255✔
3854
  SStateWindowPhysiNode* pNode = (SStateWindowPhysiNode*)pObj;
35,255✔
3855

3856
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
35,255✔
3857
  if (TSDB_CODE_SUCCESS == code) {
35,255✔
3858
    code = jsonToNodeList(pJson, jkStateWindowPhysiPlanStateKeys, &pNode->pStateKeys);
35,255✔
3859
  }
3860
  /* V1 compat: old format uses single "StateKey" object */
3861
  if (TSDB_CODE_SUCCESS == code && NULL == pNode->pStateKeys) {
35,255✔
3862
    SNode* pKey = NULL;
×
3863
    code = jsonToNodeObject(pJson, jkStateWindowPhysiPlanStateKeyCompat, &pKey);
×
3864
    if (TSDB_CODE_SUCCESS == code && pKey != NULL) {
×
3865
      code = nodesListMakeStrictAppend(&pNode->pStateKeys, pKey);
×
3866
    }
3867
  }
3868
  if (TSDB_CODE_SUCCESS == code) {
35,255✔
3869
    code = tjsonGetIntValue(pJson, jkStateWindowPhysiPlanTrueForType, (int32_t*)&pNode->trueForType);
35,255✔
3870
  }
3871
  if (TSDB_CODE_SUCCESS == code) {
35,255✔
3872
    code = tjsonGetIntValue(pJson, jkStateWindowPhysiPlanTrueForCount, &pNode->trueForCount);
35,255✔
3873
  }
3874
  if (TSDB_CODE_SUCCESS == code) {
35,255✔
3875
    code = tjsonGetBigIntValue(pJson, jkStateWindowPhysiPlanTrueForDuration, &pNode->trueForDuration);
35,255✔
3876
  }
3877
  if (TSDB_CODE_SUCCESS == code) {
35,255✔
3878
    code = tjsonGetIntValue(pJson, jkStateWindowPhysiPlanExtendOption, (int32_t*)&pNode->extendOption);
35,255✔
3879
  }
3880

3881
  return code;
35,255✔
3882
}
3883

3884
static const char* jkEventWindowPhysiPlanStartCond = "StartCond";
3885
static const char* jkEventWindowPhysiPlanEndCond = "EndCond";
3886
static const char* jkEventWindowPhysiPlanTrueForType = "TrueForType";
3887
static const char* jkEventWindowPhysiPlanTrueForCount = "TrueForCount";
3888
static const char* jkEventWindowPhysiPlanTrueForDuration = "TrueForLimit";
3889

3890
static int32_t physiEventWindowNodeToJson(const void* pObj, SJson* pJson) {
453,127✔
3891
  const SEventWinodwPhysiNode* pNode = (const SEventWinodwPhysiNode*)pObj;
453,127✔
3892

3893
  int32_t code = physiWindowNodeToJson(pObj, pJson);
453,127✔
3894
  if (TSDB_CODE_SUCCESS == code) {
453,127✔
3895
    code = tjsonAddObject(pJson, jkEventWindowPhysiPlanStartCond, nodeToJson, pNode->pStartCond);
453,127✔
3896
  }
3897
  if (TSDB_CODE_SUCCESS == code) {
453,127✔
3898
    code = tjsonAddObject(pJson, jkEventWindowPhysiPlanEndCond, nodeToJson, pNode->pEndCond);
453,127✔
3899
  }
3900
  if (TSDB_CODE_SUCCESS == code) {
453,127✔
3901
    code = tjsonAddIntegerToObject(pJson, jkEventWindowPhysiPlanTrueForType, pNode->trueForType);
453,127✔
3902
  }
3903
  if (TSDB_CODE_SUCCESS == code) {
453,127✔
3904
    code = tjsonAddIntegerToObject(pJson, jkEventWindowPhysiPlanTrueForCount, pNode->trueForCount);
453,127✔
3905
  }
3906
  if (TSDB_CODE_SUCCESS == code) {
453,127✔
3907
    code = tjsonAddIntegerToObject(pJson, jkEventWindowPhysiPlanTrueForDuration, pNode->trueForDuration);
453,127✔
3908
  }
3909

3910
  return code;
453,127✔
3911
}
3912

3913
static int32_t jsonToPhysiEventWindowNode(const SJson* pJson, void* pObj) {
3,490✔
3914
  SEventWinodwPhysiNode* pNode = (SEventWinodwPhysiNode*)pObj;
3,490✔
3915

3916
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
3,490✔
3917
  if (TSDB_CODE_SUCCESS == code) {
3,490✔
3918
    code = jsonToNodeObject(pJson, jkEventWindowPhysiPlanStartCond, &pNode->pStartCond);
3,490✔
3919
  }
3920
  if (TSDB_CODE_SUCCESS == code) {
3,490✔
3921
    code = jsonToNodeObject(pJson, jkEventWindowPhysiPlanEndCond, &pNode->pEndCond);
3,490✔
3922
  }
3923
  if (TSDB_CODE_SUCCESS == code) {
3,490✔
3924
    code = tjsonGetIntValue(pJson, jkEventWindowPhysiPlanTrueForType, (int32_t *)&pNode->trueForType);
3,490✔
3925
  }
3926
  if (TSDB_CODE_SUCCESS == code) {
3,490✔
3927
    code = tjsonGetIntValue(pJson, jkEventWindowPhysiPlanTrueForCount, &pNode->trueForCount);
3,490✔
3928
  }
3929
  if (TSDB_CODE_SUCCESS == code) {
3,490✔
3930
    code = tjsonGetBigIntValue(pJson, jkEventWindowPhysiPlanTrueForDuration, &pNode->trueForDuration);
3,490✔
3931
  }
3932

3933
  return code;
3,490✔
3934
}
3935

3936
static const char* jkCountWindowPhysiPlanWindowCount = "WindowCount";
3937
static const char* jkCountWindowPhysiPlanWindowSliding = "WindowSliding";
3938

3939
static int32_t physiCountWindowNodeToJson(const void* pObj, SJson* pJson) {
350,413✔
3940
  const SCountWindowPhysiNode* pNode = (const SCountWindowPhysiNode*)pObj;
350,413✔
3941

3942
  int32_t code = physiWindowNodeToJson(pObj, pJson);
350,413✔
3943
  if (TSDB_CODE_SUCCESS == code) {
350,413✔
3944
    code = tjsonAddIntegerToObject(pJson, jkCountWindowPhysiPlanWindowCount, pNode->windowCount);
350,413✔
3945
  }
3946
  if (TSDB_CODE_SUCCESS == code) {
350,413✔
3947
    code = tjsonAddIntegerToObject(pJson, jkCountWindowPhysiPlanWindowSliding, pNode->windowSliding);
350,413✔
3948
  }
3949
  return code;
350,413✔
3950
}
3951

3952
static int32_t jsonToPhysiCountWindowNode(const SJson* pJson, void* pObj) {
3,090✔
3953
  SCountWindowPhysiNode* pNode = (SCountWindowPhysiNode*)pObj;
3,090✔
3954

3955
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
3,090✔
3956
  if (TSDB_CODE_SUCCESS == code) {
3,090✔
3957
    code = tjsonGetBigIntValue(pJson, jkCountWindowPhysiPlanWindowCount, &pNode->windowCount);
3,090✔
3958
  }
3959
  if (TSDB_CODE_SUCCESS == code) {
3,090✔
3960
    code = tjsonGetBigIntValue(pJson, jkCountWindowPhysiPlanWindowSliding, &pNode->windowSliding);
3,090✔
3961
  }
3962

3963
  return code;
3,090✔
3964
}
3965

3966
static const char* jkAnomalyWindowPhysiPlanAnomalyKey = "AnomalyKey";
3967
static const char* jkAnomalyWindowPhysiPlanAnomalyOption = "AnomalyOpt";
3968

3969
static int32_t physiAnomalyWindowNodeToJson(const void* pObj, SJson* pJson) {
×
3970
  const SAnomalyWindowPhysiNode* pNode = (const SAnomalyWindowPhysiNode*)pObj;
×
3971

3972
  int32_t code = physiWindowNodeToJson(pObj, pJson);
×
3973
  if (TSDB_CODE_SUCCESS == code) {
×
3974
    code = nodeListToJson(pJson, jkAnomalyWindowPhysiPlanAnomalyKey, pNode->pAnomalyKeys);
×
3975
  }
3976
  if (TSDB_CODE_SUCCESS == code) {
×
3977
    code = tjsonAddStringToObject(pJson, jkAnomalyWindowPhysiPlanAnomalyOption, pNode->anomalyOpt);
×
3978
  }
3979
  return code;
×
3980
}
3981

3982
static int32_t jsonToPhysiAnomalyWindowNode(const SJson* pJson, void* pObj) {
×
3983
  SAnomalyWindowPhysiNode* pNode = (SAnomalyWindowPhysiNode*)pObj;
×
3984

3985
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
×
3986
  if (TSDB_CODE_SUCCESS == code) {
×
3987
    code = jsonToNodeList(pJson, jkAnomalyWindowPhysiPlanAnomalyKey, &pNode->pAnomalyKeys);
×
3988
  }
3989
  if (TSDB_CODE_SUCCESS == code) {
×
3990
    code = tjsonGetStringValue1(pJson, jkAnomalyWindowPhysiPlanAnomalyOption, pNode->anomalyOpt,
×
3991
                                sizeof(pNode->anomalyOpt));
3992
  }
3993

3994
  return code;
×
3995
}
3996

3997
static const char* jkPartitionPhysiPlanExprs = "Exprs";
3998
static const char* jkPartitionPhysiPlanPartitionKeys = "PartitionKeys";
3999
static const char* jkPartitionPhysiPlanTargets = "Targets";
4000
static const char* jkPartitionPhysiPlanNeedBlockOutputTsOrder = "NeedBlockOutputTsOrder";
4001
static const char* jkPartitionPhysiPlanTsSlotId = "tsSlotId";
4002

4003
static int32_t physiPartitionNodeToJson(const void* pObj, SJson* pJson) {
4,329,701✔
4004
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
4,329,701✔
4005

4006
  int32_t code = physicPlanNodeToJson(pObj, pJson);
4,329,701✔
4007
  if (TSDB_CODE_SUCCESS == code) {
4,329,701✔
4008
    code = nodeListToJson(pJson, jkPartitionPhysiPlanExprs, pNode->pExprs);
4,329,701✔
4009
  }
4010
  if (TSDB_CODE_SUCCESS == code) {
4,329,701✔
4011
    code = nodeListToJson(pJson, jkPartitionPhysiPlanPartitionKeys, pNode->pPartitionKeys);
4,329,701✔
4012
  }
4013
  if (TSDB_CODE_SUCCESS == code) {
4,329,701✔
4014
    code = nodeListToJson(pJson, jkPartitionPhysiPlanTargets, pNode->pTargets);
4,329,701✔
4015
  }
4016
  if (TSDB_CODE_SUCCESS == code) {
4,329,701✔
4017
    code = tjsonAddBoolToObject(pJson, jkPartitionPhysiPlanNeedBlockOutputTsOrder, pNode->needBlockOutputTsOrder);
4,329,701✔
4018
  }
4019
  if (TSDB_CODE_SUCCESS == code) {
4,329,701✔
4020
    code = tjsonAddIntegerToObject(pJson, jkPartitionPhysiPlanTsSlotId, pNode->tsSlotId);
4,329,701✔
4021
  }
4022

4023
  return code;
4,329,701✔
4024
}
4025

4026
static int32_t jsonToPhysiPartitionNode(const SJson* pJson, void* pObj) {
4,200✔
4027
  SPartitionPhysiNode* pNode = (SPartitionPhysiNode*)pObj;
4,200✔
4028

4029
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
4,200✔
4030
  if (TSDB_CODE_SUCCESS == code) {
4,200✔
4031
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanExprs, &pNode->pExprs);
4,200✔
4032
  }
4033
  if (TSDB_CODE_SUCCESS == code) {
4,200✔
4034
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanPartitionKeys, &pNode->pPartitionKeys);
4,200✔
4035
  }
4036
  if (TSDB_CODE_SUCCESS == code) {
4,200✔
4037
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanTargets, &pNode->pTargets);
4,200✔
4038
  }
4039
  if (TSDB_CODE_SUCCESS == code) {
4,200✔
4040
    code = tjsonGetBoolValue(pJson, jkPartitionPhysiPlanNeedBlockOutputTsOrder, &pNode->needBlockOutputTsOrder);
4,200✔
4041
  }
4042
  if (TSDB_CODE_SUCCESS == code) {
4,200✔
4043
    code = tjsonGetIntValue(pJson, jkPartitionPhysiPlanTsSlotId, &pNode->tsSlotId);
4,200✔
4044
  }
4045

4046
  return code;
4,200✔
4047
}
4048

4049
static const char* jkIndefRowsFuncPhysiPlanExprs = "Exprs";
4050
static const char* jkIndefRowsFuncPhysiPlanFuncs = "Funcs";
4051

4052
static int32_t physiIndefRowsFuncNodeToJson(const void* pObj, SJson* pJson) {
4,702,302✔
4053
  const SIndefRowsFuncPhysiNode* pNode = (const SIndefRowsFuncPhysiNode*)pObj;
4,702,302✔
4054

4055
  int32_t code = physicPlanNodeToJson(pObj, pJson);
4,702,302✔
4056
  if (TSDB_CODE_SUCCESS == code) {
4,702,302✔
4057
    code = nodeListToJson(pJson, jkIndefRowsFuncPhysiPlanExprs, pNode->pExprs);
4,702,302✔
4058
  }
4059
  if (TSDB_CODE_SUCCESS == code) {
4,702,302✔
4060
    code = nodeListToJson(pJson, jkIndefRowsFuncPhysiPlanFuncs, pNode->pFuncs);
4,702,302✔
4061
  }
4062

4063
  return code;
4,702,302✔
4064
}
4065

4066
static int32_t jsonToPhysiIndefRowsFuncNode(const SJson* pJson, void* pObj) {
4,515✔
4067
  SIndefRowsFuncPhysiNode* pNode = (SIndefRowsFuncPhysiNode*)pObj;
4,515✔
4068

4069
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
4,515✔
4070
  if (TSDB_CODE_SUCCESS == code) {
4,515✔
4071
    code = jsonToNodeList(pJson, jkIndefRowsFuncPhysiPlanExprs, &pNode->pExprs);
4,515✔
4072
  }
4073
  if (TSDB_CODE_SUCCESS == code) {
4,515✔
4074
    code = jsonToNodeList(pJson, jkIndefRowsFuncPhysiPlanFuncs, &pNode->pFuncs);
4,515✔
4075
  }
4076

4077
  return code;
4,515✔
4078
}
4079

4080
static const char* jkInterpFuncPhysiPlanExprs = "Exprs";
4081
static const char* jkInterpFuncPhysiPlanFuncs = "Funcs";
4082
static const char* jkInterpFuncPhysiPlanStartTime = "StartTime";
4083
static const char* jkInterpFuncPhysiPlanEndTime = "EndTime";
4084
static const char* jkInterpFuncPhysiPlanRangeExpr = "RangeExpr";
4085
static const char* jkInterpFuncPhysiPlanInterval = "Interval";
4086
static const char* jkInterpFuncPhysiPlanIntervalUnit = "intervalUnit";
4087
static const char* jkInterpFuncPhysiPlanPrecision = "precision";
4088
static const char* jkInterpFuncPhysiPlanFillMode = "FillMode";
4089
static const char* jkInterpFuncPhysiPlanFillValues = "FillValues";
4090
static const char* jkInterpFuncPhysiPlanTimeSeries = "TimeSeries";
4091
static const char* jkInterpFuncPhysiPlanSurroundingTime = "SurroundingTime";
4092

4093
static int32_t physiInterpFuncNodeToJson(const void* pObj, SJson* pJson) {
4,113,689✔
4094
  const SInterpFuncPhysiNode* pNode = (const SInterpFuncPhysiNode*)pObj;
4,113,689✔
4095

4096
  int32_t code = physicPlanNodeToJson(pObj, pJson);
4,113,689✔
4097
  if (TSDB_CODE_SUCCESS == code) {
4,114,161✔
4098
    code = nodeListToJson(pJson, jkInterpFuncPhysiPlanExprs, pNode->pExprs);
4,114,633✔
4099
  }
4100
  if (TSDB_CODE_SUCCESS == code) {
4,114,161✔
4101
    code = nodeListToJson(pJson, jkInterpFuncPhysiPlanFuncs, pNode->pFuncs);
4,114,161✔
4102
  }
4103
  if (TSDB_CODE_SUCCESS == code) {
4,114,633✔
4104
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanStartTime, pNode->timeRange.skey);
4,114,633✔
4105
  }
4106
  if (TSDB_CODE_SUCCESS == code) {
4,114,633✔
4107
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanEndTime, pNode->timeRange.ekey);
4,114,633✔
4108
  }
4109
  if (TSDB_CODE_SUCCESS == code) {
4,114,633✔
4110
    code = tjsonAddObject(pJson, jkInterpFuncPhysiPlanRangeExpr, nodeToJson, pNode->pTimeRange);
4,114,633✔
4111
  }
4112
  if (TSDB_CODE_SUCCESS == code) {
4,114,633✔
4113
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanInterval, pNode->interval);
4,114,633✔
4114
  }
4115
  if (TSDB_CODE_SUCCESS == code) {
4,114,633✔
4116
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanIntervalUnit, pNode->intervalUnit);
4,114,633✔
4117
  }
4118
  if (TSDB_CODE_SUCCESS == code) {
4,114,067✔
4119
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanPrecision, pNode->precision);
4,114,067✔
4120
  }
4121
  if (TSDB_CODE_SUCCESS == code) {
4,114,633✔
4122
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanFillMode, pNode->fillMode);
4,114,633✔
4123
  }
4124
  if (TSDB_CODE_SUCCESS == code) {
4,114,633✔
4125
    code = tjsonAddObject(pJson, jkInterpFuncPhysiPlanFillValues, nodeToJson, pNode->pFillValues);
4,114,633✔
4126
  }
4127
  if (TSDB_CODE_SUCCESS == code) {
4,114,633✔
4128
    code = tjsonAddObject(pJson, jkInterpFuncPhysiPlanTimeSeries, nodeToJson, pNode->pTimeSeries);
4,114,633✔
4129
  }
4130
  if (TSDB_CODE_SUCCESS == code) {
4,114,161✔
4131
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanSurroundingTime, pNode->surroundingTime);
4,114,161✔
4132
  }
4133

4134
  return code;
4,113,689✔
4135
}
4136

4137
static int32_t jsonToPhysiInterpFuncNode(const SJson* pJson, void* pObj) {
96,255✔
4138
  SInterpFuncPhysiNode* pNode = (SInterpFuncPhysiNode*)pObj;
96,255✔
4139

4140
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
96,255✔
4141
  if (TSDB_CODE_SUCCESS == code) {
96,255✔
4142
    code = jsonToNodeList(pJson, jkInterpFuncPhysiPlanExprs, &pNode->pExprs);
96,255✔
4143
  }
4144
  if (TSDB_CODE_SUCCESS == code) {
96,255✔
4145
    code = jsonToNodeList(pJson, jkInterpFuncPhysiPlanFuncs, &pNode->pFuncs);
96,255✔
4146
  }
4147
  if (TSDB_CODE_SUCCESS == code) {
96,255✔
4148
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanStartTime, &pNode->timeRange.skey);
96,255✔
4149
  }
4150
  if (TSDB_CODE_SUCCESS == code) {
96,255✔
4151
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanEndTime, &pNode->timeRange.ekey);
96,255✔
4152
  }
4153
  if (TSDB_CODE_SUCCESS == code) {
96,255✔
4154
    code = jsonToNodeObject(pJson, jkInterpFuncPhysiPlanRangeExpr, &pNode->pTimeRange);
96,255✔
4155
  }
4156
  if (TSDB_CODE_SUCCESS == code) {
96,255✔
4157
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanInterval, &pNode->interval);
96,255✔
4158
  }
4159
  if (TSDB_CODE_SUCCESS == code) {
96,255✔
4160
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncPhysiPlanIntervalUnit, &pNode->intervalUnit);
96,255✔
4161
  }
4162
  if (TSDB_CODE_SUCCESS == code) {
96,255✔
4163
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncPhysiPlanPrecision, &pNode->precision);
96,255✔
4164
  }
4165
  if (TSDB_CODE_SUCCESS == code) {
96,255✔
4166
    tjsonGetNumberValue(pJson, jkInterpFuncPhysiPlanFillMode, pNode->fillMode, code);
96,255✔
4167
  }
4168
  if (TSDB_CODE_SUCCESS == code) {
96,255✔
4169
    code = jsonToNodeObject(pJson, jkInterpFuncPhysiPlanFillValues, &pNode->pFillValues);
96,255✔
4170
  }
4171
  if (TSDB_CODE_SUCCESS == code) {
96,255✔
4172
    code = jsonToNodeObject(pJson, jkInterpFuncPhysiPlanTimeSeries, &pNode->pTimeSeries);
96,255✔
4173
  }
4174
  if (TSDB_CODE_SUCCESS == code) {
96,255✔
4175
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanSurroundingTime, &pNode->surroundingTime);
96,255✔
4176
  }
4177

4178
  return code;
96,255✔
4179
}
4180

4181
static const char* jkForecastFuncPhysiPlanExprs = "Exprs";
4182
static const char* jkForecastFuncPhysiPlanFuncs = "Funcs";
4183

4184
static int32_t physiForecastFuncNodeToJson(const void* pObj, SJson* pJson) {
×
4185
  const SForecastFuncPhysiNode* pNode = (const SForecastFuncPhysiNode*)pObj;
×
4186

4187
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
4188
  if (TSDB_CODE_SUCCESS == code) {
×
4189
    code = nodeListToJson(pJson, jkForecastFuncPhysiPlanExprs, pNode->pExprs);
×
4190
  }
4191
  if (TSDB_CODE_SUCCESS == code) {
×
4192
    code = nodeListToJson(pJson, jkForecastFuncPhysiPlanFuncs, pNode->pFuncs);
×
4193
  }
4194

4195
  return code;
×
4196
}
4197

4198
static int32_t jsonToPhysiForecastFuncNode(const SJson* pJson, void* pObj) {
×
4199
  SForecastFuncPhysiNode* pNode = (SForecastFuncPhysiNode*)pObj;
×
4200

4201
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
4202
  if (TSDB_CODE_SUCCESS == code) {
×
4203
    code = jsonToNodeList(pJson, jkForecastFuncPhysiPlanExprs, &pNode->pExprs);
×
4204
  }
4205
  if (TSDB_CODE_SUCCESS == code) {
×
4206
    code = jsonToNodeList(pJson, jkForecastFuncPhysiPlanFuncs, &pNode->pFuncs);
×
4207
  }
4208

4209
  return code;
×
4210
}
4211

4212
static const char* jkDataSinkInputDataBlockDesc = "InputDataBlockDesc";
4213

4214
static int32_t physicDataSinkNodeToJson(const void* pObj, SJson* pJson) {
375,637,734✔
4215
  const SDataSinkNode* pNode = (const SDataSinkNode*)pObj;
375,637,734✔
4216
  return tjsonAddObject(pJson, jkDataSinkInputDataBlockDesc, nodeToJson, pNode->pInputDataBlockDesc);
375,637,734✔
4217
}
4218

4219
static int32_t jsonToPhysicDataSinkNode(const SJson* pJson, void* pObj) {
5,451,001✔
4220
  SDataSinkNode* pNode = (SDataSinkNode*)pObj;
5,451,001✔
4221
  return jsonToNodeObject(pJson, jkDataSinkInputDataBlockDesc, (SNode**)&pNode->pInputDataBlockDesc);
5,451,001✔
4222
}
4223

4224
static int32_t physiDispatchNodeToJson(const void* pObj, SJson* pJson) { return physicDataSinkNodeToJson(pObj, pJson); }
373,077,735✔
4225

4226
static int32_t jsonToPhysiDispatchNode(const SJson* pJson, void* pObj) { return jsonToPhysicDataSinkNode(pJson, pObj); }
5,449,201✔
4227

4228
static const char* jkQueryInsertPhysiPlanInsertCols = "InsertCols";
4229
static const char* jkQueryInsertPhysiPlanStableId = "StableId";
4230
static const char* jkQueryInsertPhysiPlanTableId = "TableId";
4231
static const char* jkQueryInsertPhysiPlanTableType = "TableType";
4232
static const char* jkQueryInsertPhysiPlanTableFName = "TableFName";
4233
static const char* jkQueryInsertPhysiPlanVgId = "VgId";
4234
static const char* jkQueryInsertPhysiPlanEpSet = "EpSet";
4235
static const char* jkQueryInsertPhysiPlanExplain = "Explain";
4236

4237
static int32_t physiQueryInsertNodeToJson(const void* pObj, SJson* pJson) {
566,779✔
4238
  const SQueryInserterNode* pNode = (const SQueryInserterNode*)pObj;
566,779✔
4239

4240
  int32_t code = physicDataSinkNodeToJson(pObj, pJson);
566,779✔
4241
  if (TSDB_CODE_SUCCESS == code) {
566,779✔
4242
    code = nodeListToJson(pJson, jkQueryInsertPhysiPlanInsertCols, pNode->pCols);
566,779✔
4243
  }
4244
  if (TSDB_CODE_SUCCESS == code) {
566,779✔
4245
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanStableId, pNode->stableId);
566,779✔
4246
  }
4247
  if (TSDB_CODE_SUCCESS == code) {
566,779✔
4248
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanTableId, pNode->tableId);
566,779✔
4249
  }
4250
  if (TSDB_CODE_SUCCESS == code) {
566,779✔
4251
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanTableType, pNode->tableType);
566,779✔
4252
  }
4253
  if (TSDB_CODE_SUCCESS == code) {
566,779✔
4254
    code = tjsonAddStringToObject(pJson, jkQueryInsertPhysiPlanTableFName, pNode->tableName);
566,779✔
4255
  }
4256
  if (TSDB_CODE_SUCCESS == code) {
566,779✔
4257
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanVgId, pNode->vgId);
566,779✔
4258
  }
4259
  if (TSDB_CODE_SUCCESS == code) {
566,779✔
4260
    code = tjsonAddObject(pJson, jkQueryInsertPhysiPlanEpSet, epSetToJson, &pNode->epSet);
566,779✔
4261
  }
4262
  if (TSDB_CODE_SUCCESS == code) {
566,779✔
4263
    code = tjsonAddBoolToObject(pJson, jkQueryInsertPhysiPlanExplain, pNode->explain);
566,779✔
4264
  }
4265

4266
  return code;
566,779✔
4267
}
4268

4269
static int32_t jsonToPhysiQueryInsertNode(const SJson* pJson, void* pObj) {
600✔
4270
  SQueryInserterNode* pNode = (SQueryInserterNode*)pObj;
600✔
4271

4272
  int32_t code = jsonToPhysicDataSinkNode(pJson, pObj);
600✔
4273
  if (TSDB_CODE_SUCCESS == code) {
600✔
4274
    code = jsonToNodeList(pJson, jkQueryInsertPhysiPlanInsertCols, &pNode->pCols);
600✔
4275
  }
4276
  if (TSDB_CODE_SUCCESS == code) {
600✔
4277
    code = tjsonGetUBigIntValue(pJson, jkQueryInsertPhysiPlanStableId, &pNode->stableId);
600✔
4278
  }
4279
  if (TSDB_CODE_SUCCESS == code) {
600✔
4280
    code = tjsonGetUBigIntValue(pJson, jkQueryInsertPhysiPlanTableId, &pNode->tableId);
600✔
4281
  }
4282
  if (TSDB_CODE_SUCCESS == code) {
600✔
4283
    code = tjsonGetTinyIntValue(pJson, jkQueryInsertPhysiPlanTableType, &pNode->tableType);
600✔
4284
  }
4285
  if (TSDB_CODE_SUCCESS == code) {
600✔
4286
    code = tjsonGetStringValue1(pJson, jkQueryInsertPhysiPlanTableFName, pNode->tableName, sizeof(pNode->tableName));
600✔
4287
  }
4288
  if (TSDB_CODE_SUCCESS == code) {
600✔
4289
    code = tjsonGetIntValue(pJson, jkQueryInsertPhysiPlanVgId, &pNode->vgId);
600✔
4290
  }
4291
  if (TSDB_CODE_SUCCESS == code) {
600✔
4292
    code = tjsonToObject(pJson, jkQueryInsertPhysiPlanEpSet, jsonToEpSet, &pNode->epSet);
600✔
4293
  }
4294
  if (TSDB_CODE_SUCCESS == code) {
600✔
4295
    code = tjsonGetBoolValue(pJson, jkQueryInsertPhysiPlanExplain, &pNode->explain);
600✔
4296
  }
4297

4298
  return code;
600✔
4299
}
4300

4301
static const char* jkDeletePhysiPlanTableId = "TableId";
4302
static const char* jkDeletePhysiPlanTableType = "TableType";
4303
static const char* jkDeletePhysiPlanTableFName = "TableFName";
4304
static const char* jkDeletePhysiPlanTsColName = "TsColName";
4305
static const char* jkDeletePhysiPlanDeleteTimeRangeStartKey = "DeleteTimeRangeStartKey";
4306
static const char* jkDeletePhysiPlanDeleteTimeRangeEndKey = "DeleteTimeRangeEndKey";
4307
static const char* jkDeletePhysiPlanAffectedRows = "AffectedRows";
4308
static const char* jkDeletePhysiPlanStartTs = "StartTs";
4309
static const char* jkDeletePhysiPlanEndTs = "EndTs";
4310
static const char* jkDeletePhysiPlanSecureDelete = "SecureDelete";
4311

4312
static int32_t physiDeleteNodeToJson(const void* pObj, SJson* pJson) {
1,993,220✔
4313
  const SDataDeleterNode* pNode = (const SDataDeleterNode*)pObj;
1,993,220✔
4314

4315
  int32_t code = physicDataSinkNodeToJson(pObj, pJson);
1,993,220✔
4316
  if (TSDB_CODE_SUCCESS == code) {
1,993,220✔
4317
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanTableId, pNode->tableId);
1,993,220✔
4318
  }
4319
  if (TSDB_CODE_SUCCESS == code) {
1,993,220✔
4320
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanTableType, pNode->tableType);
1,993,220✔
4321
  }
4322
  if (TSDB_CODE_SUCCESS == code) {
1,993,220✔
4323
    code = tjsonAddStringToObject(pJson, jkDeletePhysiPlanTableFName, pNode->tableFName);
1,993,220✔
4324
  }
4325
  if (TSDB_CODE_SUCCESS == code) {
1,993,220✔
4326
    code = tjsonAddStringToObject(pJson, jkDeletePhysiPlanTsColName, pNode->tsColName);
1,993,220✔
4327
  }
4328
  if (TSDB_CODE_SUCCESS == code) {
1,993,220✔
4329
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanDeleteTimeRangeStartKey, pNode->deleteTimeRange.skey);
1,993,220✔
4330
  }
4331
  if (TSDB_CODE_SUCCESS == code) {
1,993,220✔
4332
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanDeleteTimeRangeEndKey, pNode->deleteTimeRange.ekey);
1,993,220✔
4333
  }
4334
  if (TSDB_CODE_SUCCESS == code) {
1,993,220✔
4335
    code = tjsonAddObject(pJson, jkDeletePhysiPlanAffectedRows, nodeToJson, pNode->pAffectedRows);
1,993,220✔
4336
  }
4337
  if (TSDB_CODE_SUCCESS == code) {
1,993,220✔
4338
    code = tjsonAddObject(pJson, jkDeletePhysiPlanStartTs, nodeToJson, pNode->pStartTs);
1,993,220✔
4339
  }
4340
  if (TSDB_CODE_SUCCESS == code) {
1,993,220✔
4341
    code = tjsonAddObject(pJson, jkDeletePhysiPlanEndTs, nodeToJson, pNode->pEndTs);
1,993,220✔
4342
  }
4343
  if (TSDB_CODE_SUCCESS == code) {
1,993,220✔
4344
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanSecureDelete, pNode->secureDelete);
1,993,220✔
4345
  }
4346

4347
  return code;
1,993,220✔
4348
}
4349

4350
static int32_t jsonToPhysiDeleteNode(const SJson* pJson, void* pObj) {
1,200✔
4351
  SDataDeleterNode* pNode = (SDataDeleterNode*)pObj;
1,200✔
4352

4353
  int32_t code = jsonToPhysicDataSinkNode(pJson, pObj);
1,200✔
4354
  if (TSDB_CODE_SUCCESS == code) {
1,200✔
4355
    code = tjsonGetUBigIntValue(pJson, jkDeletePhysiPlanTableId, &pNode->tableId);
1,200✔
4356
  }
4357
  if (TSDB_CODE_SUCCESS == code) {
1,200✔
4358
    code = tjsonGetTinyIntValue(pJson, jkDeletePhysiPlanTableType, &pNode->tableType);
1,200✔
4359
  }
4360
  if (TSDB_CODE_SUCCESS == code) {
1,200✔
4361
    code = tjsonGetStringValue1(pJson, jkDeletePhysiPlanTableFName, pNode->tableFName, sizeof(pNode->tableFName));
1,200✔
4362
  }
4363
  if (TSDB_CODE_SUCCESS == code) {
1,200✔
4364
    code = tjsonGetStringValue1(pJson, jkDeletePhysiPlanTsColName, pNode->tsColName, sizeof(pNode->tsColName));
1,200✔
4365
  }
4366
  if (TSDB_CODE_SUCCESS == code) {
1,200✔
4367
    code = tjsonGetBigIntValue(pJson, jkDeletePhysiPlanDeleteTimeRangeStartKey, &pNode->deleteTimeRange.skey);
1,200✔
4368
  }
4369
  if (TSDB_CODE_SUCCESS == code) {
1,200✔
4370
    code = tjsonGetBigIntValue(pJson, jkDeletePhysiPlanDeleteTimeRangeEndKey, &pNode->deleteTimeRange.ekey);
1,200✔
4371
  }
4372
  if (TSDB_CODE_SUCCESS == code) {
1,200✔
4373
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanAffectedRows, &pNode->pAffectedRows);
1,200✔
4374
  }
4375
  if (TSDB_CODE_SUCCESS == code) {
1,200✔
4376
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanStartTs, &pNode->pStartTs);
1,200✔
4377
  }
4378
  if (TSDB_CODE_SUCCESS == code) {
1,200✔
4379
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanEndTs, &pNode->pEndTs);
1,200✔
4380
  }
4381
  if (TSDB_CODE_SUCCESS == code) {
1,200✔
4382
    code = tjsonGetTinyIntValue(pJson, jkDeletePhysiPlanSecureDelete, &pNode->secureDelete);
1,200✔
4383
  }
4384

4385
  return code;
1,200✔
4386
}
4387

4388
static const char* jkGroupCachePhysiPlanGroupCols = "GroupColumns";
4389
static const char* jkGroupCachePhysiPlanGrpColsMayBeNull = "GroupColumnsMayBeNull";
4390
static const char* jkGroupCachePhysiPlanGroupByUid = "GroupByUid";
4391
static const char* jkGroupCachePhysiPlanGlobalGroup = "GlobalGroup";
4392
static const char* jkGroupCachePhysiPlanBatchFetch = "BatchFetch";
4393

4394
static int32_t physiGroupCacheNodeToJson(const void* pObj, SJson* pJson) {
2,133,169✔
4395
  const SGroupCachePhysiNode* pNode = (const SGroupCachePhysiNode*)pObj;
2,133,169✔
4396

4397
  int32_t code = physicPlanNodeToJson(pObj, pJson);
2,133,169✔
4398
  if (TSDB_CODE_SUCCESS == code) {
2,133,169✔
4399
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGrpColsMayBeNull, pNode->grpColsMayBeNull);
2,133,169✔
4400
  }
4401
  if (TSDB_CODE_SUCCESS == code) {
2,133,169✔
4402
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGroupByUid, pNode->grpByUid);
2,133,169✔
4403
  }
4404
  if (TSDB_CODE_SUCCESS == code) {
2,133,169✔
4405
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGlobalGroup, pNode->globalGrp);
2,133,169✔
4406
  }
4407
  if (TSDB_CODE_SUCCESS == code) {
2,133,169✔
4408
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanBatchFetch, pNode->batchFetch);
2,133,169✔
4409
  }
4410
  if (TSDB_CODE_SUCCESS == code) {
2,133,169✔
4411
    code = nodeListToJson(pJson, jkGroupCachePhysiPlanGroupCols, pNode->pGroupCols);
2,133,169✔
4412
  }
4413
  return code;
2,133,169✔
4414
}
4415

4416
static int32_t jsonToPhysiGroupCacheNode(const SJson* pJson, void* pObj) {
1,565✔
4417
  SGroupCachePhysiNode* pNode = (SGroupCachePhysiNode*)pObj;
1,565✔
4418

4419
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
1,565✔
4420
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
4421
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGrpColsMayBeNull, &pNode->grpColsMayBeNull);
1,565✔
4422
  }
4423
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
4424
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGroupByUid, &pNode->grpByUid);
1,565✔
4425
  }
4426
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
4427
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGlobalGroup, &pNode->globalGrp);
1,565✔
4428
  }
4429
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
4430
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanBatchFetch, &pNode->batchFetch);
1,565✔
4431
  }
4432
  if (TSDB_CODE_SUCCESS == code) {
1,565✔
4433
    code = jsonToNodeList(pJson, jkGroupCachePhysiPlanGroupCols, &pNode->pGroupCols);
1,565✔
4434
  }
4435
  return code;
1,565✔
4436
}
4437

4438
static const char* jkDynQueryCtrlPhysiPlanQueryType = "QueryType";
4439
static const char* jkDynQueryCtrlPhysiPlanBatchFetch = "BatchFetch";
4440
static const char* jkDynQueryCtrlPhysiPlanVgSlot0 = "VgSlot[0]";
4441
static const char* jkDynQueryCtrlPhysiPlanVgSlot1 = "VgSlot[1]";
4442
static const char* jkDynQueryCtrlPhysiPlanUidSlot0 = "UidSlot[0]";
4443
static const char* jkDynQueryCtrlPhysiPlanUidSlot1 = "UidSlot[1]";
4444
static const char* jkDynQueryCtrlPhysiPlanSrcScan0 = "SrcScan[0]";
4445
static const char* jkDynQueryCtrlPhysiPlanSrcScan1 = "SrcScan[1]";
4446
static const char* jkDynQueryCtrlPhysiPlanDynTbname = "DynTbname";
4447
static const char* jkDynQueryCtrlPhysiPlanBatchProcessChild = "BatchProcessChild";
4448
static const char* jkDynQueryCtrlPhysiPlanHasPartition = "HasPartition";
4449
static const char* jkDynQueryCtrlPhysiPlanScanAllCols = "ScanAllCols";
4450
static const char* jkDynQueryCtrlPhysiPlanIsSuperTable = "IsSuperTable";
4451
static const char* jkDynQueryCtrlPhysiPlanDbName= "DbName";
4452
static const char* jkDynQueryCtrlPhysiPlanStbName= "StbName";
4453
static const char* jkDynQueryCtrlPhysiPlanSuid= "Suid";
4454
static const char* jkDynQueryCtrlPhysiPlanUid= "Uid";
4455
static const char* jkDynQueryCtrlPhysiPlanAccountId= "AccountId";
4456
static const char* jkDynQueryCtrlPhysiPlanEpSet = "EpSet";
4457
static const char* jkDynQueryCtrlPhysiPlanScanCols = "ScanCols";
4458
static const char* jkDynQueryCtrlPhysiPlanRVersion = "RVersion";
4459
static const char* jkDynQueryCtrlPhysiPlanOrgVgIds = "OrgVgIds";
4460
static const char* jkDynQueryCtrlPhysiPlanWstartSlotId = "WstartSlotId";
4461
static const char* jkDynQueryCtrlPhysiPlanWendSlotId = "WendSlotId";
4462
static const char* jkDynQueryCtrlPhysiPlanWdurationSlotId = "WdurationSlotId";
4463
static const char* jkDynQueryCtrlPhysiPlanTargets = "Targets";
4464
static const char* jkDynQueryCtrlPhysiPlanIsVstb = "IsVstb";
4465
static const char* jkDynQueryCtrlPhysiPlanStateExtendOption = "StateExtendOption";
4466

4467

4468
static int32_t physiDynQueryCtrlNodeToJson(const void* pObj, SJson* pJson) {
7,420,482✔
4469
  const SDynQueryCtrlPhysiNode* pNode = (const SDynQueryCtrlPhysiNode*)pObj;
7,420,482✔
4470

4471
  int32_t code = physicPlanNodeToJson(pObj, pJson);
7,420,482✔
4472
  if (TSDB_CODE_SUCCESS == code) {
7,420,482✔
4473
    code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType);
7,420,482✔
4474
  }
4475
  if (TSDB_CODE_SUCCESS == code) {
7,420,482✔
4476
    switch (pNode->qType) {
7,420,482✔
4477
      case DYN_QTYPE_STB_HASH: {
2,133,169✔
4478
        code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanBatchFetch, pNode->stbJoin.batchFetch);
2,133,169✔
4479
        if (TSDB_CODE_SUCCESS == code) {
2,133,169✔
4480
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanVgSlot0, pNode->stbJoin.vgSlot[0]);
2,133,169✔
4481
        }
4482
        if (TSDB_CODE_SUCCESS == code) {
2,133,169✔
4483
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanVgSlot1, pNode->stbJoin.vgSlot[1]);
2,133,169✔
4484
        }
4485
        if (TSDB_CODE_SUCCESS == code) {
2,133,169✔
4486
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanUidSlot0, pNode->stbJoin.uidSlot[0]);
2,133,169✔
4487
        }
4488
        if (TSDB_CODE_SUCCESS == code) {
2,133,169✔
4489
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanUidSlot1, pNode->stbJoin.uidSlot[1]);
2,133,169✔
4490
        }
4491
        if (TSDB_CODE_SUCCESS == code) {
2,133,169✔
4492
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanSrcScan0, pNode->stbJoin.srcScan[0]);
2,133,169✔
4493
        }
4494
        if (TSDB_CODE_SUCCESS == code) {
2,133,169✔
4495
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanSrcScan1, pNode->stbJoin.srcScan[1]);
2,133,169✔
4496
        }
4497
        break;
2,133,169✔
4498
      }
4499
      case DYN_QTYPE_VTB_WINDOW: {
740,020✔
4500
        code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanWstartSlotId, pNode->vtbWindow.wstartSlotId);
740,020✔
4501
        if (TSDB_CODE_SUCCESS == code) {
740,020✔
4502
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanWendSlotId, pNode->vtbWindow.wendSlotId);
740,020✔
4503
        }
4504
        if (TSDB_CODE_SUCCESS == code) {
740,020✔
4505
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanWdurationSlotId, pNode->vtbWindow.wdurationSlotId);
740,020✔
4506
        }
4507
        if (TSDB_CODE_SUCCESS == code) {
740,020✔
4508
          code = nodeListToJson(pJson, jkDynQueryCtrlPhysiPlanTargets, pNode->vtbWindow.pTargets);
740,020✔
4509
        }
4510
        if (TSDB_CODE_SUCCESS == code) {
740,020✔
4511
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanIsVstb, pNode->vtbWindow.isVstb);
740,020✔
4512
        }
4513
        if (TSDB_CODE_SUCCESS == code) {
740,020✔
4514
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanStateExtendOption, pNode->vtbWindow.extendOption);
740,020✔
4515
        }
4516
        // do not break
4517
      }
4518
      case DYN_QTYPE_VTB_TS_SCAN:
4519
      case DYN_QTYPE_VTB_INTERVAL:
4520
      case DYN_QTYPE_VTB_AGG:
4521
      case DYN_QTYPE_VTB_SCAN: {
4522
        code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanBatchProcessChild, pNode->vtbScan.batchProcessChild);
5,287,313✔
4523
        if (TSDB_CODE_SUCCESS == code) {
5,287,313✔
4524
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanScanAllCols, pNode->vtbScan.scanAllCols);
5,287,313✔
4525
        }
4526
        if (TSDB_CODE_SUCCESS == code) {
5,287,313✔
4527
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanIsSuperTable, pNode->vtbScan.isSuperTable);
5,287,313✔
4528
        }
4529
        if (TSDB_CODE_SUCCESS == code) {
5,287,313✔
4530
          code = tjsonAddStringToObject(pJson, jkDynQueryCtrlPhysiPlanDbName, pNode->vtbScan.dbName);
5,287,313✔
4531
        }
4532
        if (TSDB_CODE_SUCCESS == code) {
5,287,313✔
4533
          code = tjsonAddStringToObject(pJson, jkDynQueryCtrlPhysiPlanStbName, pNode->vtbScan.tbName);
5,287,313✔
4534
        }
4535
        if (TSDB_CODE_SUCCESS == code) {
5,287,313✔
4536
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanSuid, pNode->vtbScan.suid);
5,287,313✔
4537
        }
4538
        if (TSDB_CODE_SUCCESS == code) {
5,287,313✔
4539
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanUid, pNode->vtbScan.uid);
5,287,313✔
4540
        }
4541
        if (TSDB_CODE_SUCCESS == code) {
5,287,313✔
4542
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanRVersion, pNode->vtbScan.rversion);
5,287,313✔
4543
        }
4544
        if (TSDB_CODE_SUCCESS == code) {
5,287,313✔
4545
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanAccountId, pNode->vtbScan.accountId);
5,287,313✔
4546
        }
4547
        if (TSDB_CODE_SUCCESS == code) {
5,287,313✔
4548
          code = tjsonAddObject(pJson, jkDynQueryCtrlPhysiPlanEpSet, epSetToJson, &pNode->vtbScan.mgmtEpSet);
5,287,313✔
4549
        }
4550
        if (TSDB_CODE_SUCCESS == code) {
5,287,313✔
4551
          code = nodeListToJson(pJson, jkDynQueryCtrlPhysiPlanScanCols, pNode->vtbScan.pScanCols);
5,287,313✔
4552
        }
4553
        if (TSDB_CODE_SUCCESS == code) {
5,287,313✔
4554
          code = nodeListToJson(pJson, jkDynQueryCtrlPhysiPlanOrgVgIds, pNode->vtbScan.pOrgVgIds);
5,287,313✔
4555
        }
4556
        if (TSDB_CODE_SUCCESS == code) {
5,287,313✔
4557
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanHasPartition, pNode->vtbScan.hasPartition);
5,287,313✔
4558
        }
4559
        break;
5,287,313✔
4560
      }
4561
      default:
×
4562
        return TSDB_CODE_INVALID_PARA;
×
4563
    }
4564
  }
4565
  if (TSDB_CODE_SUCCESS == code) {
7,420,482✔
4566
    code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanDynTbname, pNode->dynTbname);
7,420,482✔
4567
  }
4568
  return code;
7,420,482✔
4569
}
4570

4571
static int32_t jsonToPhysiDynQueryCtrlNode(const SJson* pJson, void* pObj) {
215,386✔
4572
  SDynQueryCtrlPhysiNode* pNode = (SDynQueryCtrlPhysiNode*)pObj;
215,386✔
4573

4574
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
215,386✔
4575
  if (TSDB_CODE_SUCCESS == code) {
215,386✔
4576
    tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType, code);
215,386✔
4577
  }
4578
  if (TSDB_CODE_SUCCESS == code) {
215,386✔
4579
    switch (pNode->qType) {
215,386✔
4580
      case DYN_QTYPE_STB_HASH: {
1,565✔
4581
        tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType, code);
1,565✔
4582
        if (TSDB_CODE_SUCCESS == code) {
1,565✔
4583
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanBatchFetch, &pNode->stbJoin.batchFetch);
1,565✔
4584
        }
4585
        if (TSDB_CODE_SUCCESS == code) {
1,565✔
4586
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanVgSlot0, pNode->stbJoin.vgSlot[0], code);
1,565✔
4587
        }
4588
        if (TSDB_CODE_SUCCESS == code) {
1,565✔
4589
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanVgSlot1, pNode->stbJoin.vgSlot[1], code);
1,565✔
4590
        }
4591
        if (TSDB_CODE_SUCCESS == code) {
1,565✔
4592
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanUidSlot0, pNode->stbJoin.uidSlot[0], code);
1,565✔
4593
        }
4594
        if (TSDB_CODE_SUCCESS == code) {
1,565✔
4595
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanUidSlot1, pNode->stbJoin.uidSlot[1], code);
1,565✔
4596
        }
4597
        if (TSDB_CODE_SUCCESS == code) {
1,565✔
4598
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanSrcScan0, &pNode->stbJoin.srcScan[0]);
1,565✔
4599
        }
4600
        if (TSDB_CODE_SUCCESS == code) {
1,565✔
4601
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanSrcScan1, &pNode->stbJoin.srcScan[1]);
1,565✔
4602
        }
4603
        break;
1,565✔
4604
      }
4605
      case DYN_QTYPE_VTB_WINDOW: {
×
4606
        tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanWstartSlotId, pNode->vtbWindow.wstartSlotId, code);
×
4607
        if (TSDB_CODE_SUCCESS == code) {
×
4608
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanWendSlotId, pNode->vtbWindow.wendSlotId, code);
×
4609
        }
4610
        if (TSDB_CODE_SUCCESS == code) {
×
4611
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanWdurationSlotId, pNode->vtbWindow.wdurationSlotId, code);
×
4612
        }
4613
        if (TSDB_CODE_SUCCESS == code) {
×
4614
          code = jsonToNodeList(pJson, jkDynQueryCtrlPhysiPlanTargets, &pNode->vtbWindow.pTargets);
×
4615
        }
4616
        if (TSDB_CODE_SUCCESS == code) {
×
4617
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanIsVstb, &pNode->vtbWindow.isVstb);
×
4618
        }
4619
        if (TSDB_CODE_SUCCESS == code) {
×
4620
          code = tjsonGetIntValue(pJson, jkDynQueryCtrlPhysiPlanStateExtendOption, (int32_t*)&pNode->vtbWindow.extendOption);
×
4621
        }
4622
        // do not break
4623
      }
4624
      case DYN_QTYPE_VTB_TS_SCAN:
4625
      case DYN_QTYPE_VTB_INTERVAL:
4626
      case DYN_QTYPE_VTB_AGG:
4627
      case DYN_QTYPE_VTB_SCAN: {
4628
        code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanBatchProcessChild, &pNode->vtbScan.batchProcessChild);
213,821✔
4629
        if (TSDB_CODE_SUCCESS == code) {
213,821✔
4630
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanScanAllCols, &pNode->vtbScan.scanAllCols);
213,821✔
4631
        }
4632
        if (TSDB_CODE_SUCCESS == code) {
213,821✔
4633
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanIsSuperTable, &pNode->vtbScan.isSuperTable);
213,821✔
4634
        }
4635
        if (TSDB_CODE_SUCCESS == code) {
213,821✔
4636
          code = tjsonGetStringValue1(pJson, jkDynQueryCtrlPhysiPlanDbName, pNode->vtbScan.dbName,
213,821✔
4637
                                      sizeof(pNode->vtbScan.dbName));
4638
        }
4639
        if (TSDB_CODE_SUCCESS == code) {
213,821✔
4640
          code = tjsonGetStringValue1(pJson, jkDynQueryCtrlPhysiPlanStbName, pNode->vtbScan.tbName,
213,821✔
4641
                                      sizeof(pNode->vtbScan.tbName));
4642
        }
4643
        if (TSDB_CODE_SUCCESS == code) {
213,821✔
4644
          code = tjsonGetUBigIntValue(pJson, jkDynQueryCtrlPhysiPlanSuid, &pNode->vtbScan.suid);
213,821✔
4645
        }
4646
        if (TSDB_CODE_SUCCESS == code) {
213,821✔
4647
          code = tjsonGetUBigIntValue(pJson, jkDynQueryCtrlPhysiPlanUid, &pNode->vtbScan.uid);
213,821✔
4648
        }
4649
        if (TSDB_CODE_SUCCESS == code) {
213,821✔
4650
          code = tjsonGetIntValue(pJson, jkDynQueryCtrlPhysiPlanRVersion, &pNode->vtbScan.rversion);
213,821✔
4651
        }
4652
        if (TSDB_CODE_SUCCESS == code) {
213,821✔
4653
          code = tjsonGetIntValue(pJson, jkDynQueryCtrlPhysiPlanAccountId, &pNode->vtbScan.accountId);
213,821✔
4654
        }
4655
        if (TSDB_CODE_SUCCESS == code) {
213,821✔
4656
          code = tjsonToObject(pJson, jkDynQueryCtrlPhysiPlanEpSet, jsonToEpSet, &pNode->vtbScan.mgmtEpSet);
213,821✔
4657
        }
4658
        if (TSDB_CODE_SUCCESS == code) {
213,821✔
4659
          code = jsonToNodeList(pJson, jkDynQueryCtrlPhysiPlanScanCols, &pNode->vtbScan.pScanCols);
213,821✔
4660
        }
4661
        if (TSDB_CODE_SUCCESS == code) {
213,821✔
4662
          code = jsonToNodeList(pJson, jkDynQueryCtrlPhysiPlanOrgVgIds, &pNode->vtbScan.pOrgVgIds);
213,821✔
4663
        }
4664
        if (TSDB_CODE_SUCCESS == code) {
213,821✔
4665
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanHasPartition, &pNode->vtbScan.hasPartition);
213,821✔
4666
        }
4667
        break;
213,821✔
4668
      }
4669
      default:
×
4670
        return TSDB_CODE_INVALID_PARA;
×
4671
    }
4672
  }
4673
  if (TSDB_CODE_SUCCESS == code) {
215,386✔
4674
    code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanDynTbname, &pNode->dynTbname);
215,386✔
4675
  }
4676
  return code;
215,386✔
4677
}
4678

4679
static const char* jkQueryNodeAddrId = "Id";
4680
static const char* jkQueryNodeAddrInUse = "InUse";
4681
static const char* jkQueryNodeAddrNumOfEps = "NumOfEps";
4682
static const char* jkQueryNodeAddrEps = "Eps";
4683

4684
static int32_t queryNodeAddrToJson(const void* pObj, SJson* pJson) {
965,578,749✔
4685
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
965,578,749✔
4686

4687
  int32_t code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrId, pNode->nodeId);
965,578,749✔
4688
  if (TSDB_CODE_SUCCESS == code) {
965,584,017✔
4689
    code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrInUse, pNode->epSet.inUse);
965,584,017✔
4690
  }
4691
  if (TSDB_CODE_SUCCESS == code) {
965,578,391✔
4692
    code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrNumOfEps, pNode->epSet.numOfEps);
965,578,391✔
4693
  }
4694
  if (TSDB_CODE_SUCCESS == code) {
965,579,721✔
4695
    code = tjsonAddArray(pJson, jkQueryNodeAddrEps, epToJson, pNode->epSet.eps, sizeof(SEp), pNode->epSet.numOfEps);
965,579,721✔
4696
  }
4697

4698
  return code;
965,568,044✔
4699
}
4700

4701
static int32_t jsonToQueryNodeAddr(const SJson* pJson, void* pObj) {
8,459,159✔
4702
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
8,459,159✔
4703

4704
  int32_t code = tjsonGetIntValue(pJson, jkQueryNodeAddrId, &pNode->nodeId);
8,459,159✔
4705
  if (TSDB_CODE_SUCCESS == code) {
8,459,721✔
4706
    code = tjsonGetTinyIntValue(pJson, jkQueryNodeAddrInUse, &pNode->epSet.inUse);
8,459,721✔
4707
  }
4708
  if (TSDB_CODE_SUCCESS == code) {
8,459,721✔
4709
    code = tjsonGetTinyIntValue(pJson, jkQueryNodeAddrNumOfEps, &pNode->epSet.numOfEps);
8,459,721✔
4710
  }
4711
  if (TSDB_CODE_SUCCESS == code) {
8,459,721✔
4712
    code = tjsonToArray(pJson, jkQueryNodeAddrEps, jsonToEp, pNode->epSet.eps, sizeof(SEp));
8,459,721✔
4713
  }
4714

4715
  return code;
8,459,721✔
4716
}
4717

4718
static const char* jkColOtableName = "colOtableName";
4719
static const char* jkColVtableId = "colVtableId";
4720
static int32_t     colIdNameToJson(const void* pObj, SJson* pJson) {
×
4721
  const SColIdName* pCol = (const SColIdName*)pObj;
×
4722

4723
  int32_t code = tjsonAddIntegerToObject(pJson, jkColVtableId, pCol->colId);
×
4724
  if (TSDB_CODE_SUCCESS == code) {
×
4725
    code = tjsonAddStringToObject(pJson, jkColOtableName, pCol->colName);
×
4726
  }
4727

4728
  return code;
×
4729
}
4730

4731
static const char* jkOtableHashSize = "otbHashSize";
4732
static const char* jkOtableHashKV = "otbHashKeyValue";
4733
static const char* jkOtableHashName = "otbHashName";
4734
static const char* jkOtableHashValue = "otbHashValue";
4735
static int32_t     oTableHashToJson(const void* pObj, SJson* pJson) {
×
4736
  const SSHashObj* pHash = (const SSHashObj*)pObj;
×
4737
  int32_t          code = tjsonAddIntegerToObject(pJson, jkOtableHashSize, tSimpleHashGetSize(pHash));
×
4738
  if (code) {
×
4739
    return code;
×
4740
  }
4741

4742
  SJson* pJsonArray = tjsonAddArrayToObject(pJson, jkOtableHashKV);
×
4743
  if (NULL == pJsonArray) {
×
4744
    return terrno;
×
4745
  }
4746

4747
  int32_t  iter = 0;
×
4748
  SArray** pCols = NULL;
×
4749
  char*    pKey = NULL;
×
4750
  void*    p = NULL;
×
4751
  while (NULL != (p = tSimpleHashIterate(pHash, p, &iter))) {
×
4752
    pKey = (char*)tSimpleHashGetKey(p, NULL);
×
4753
    pCols = (SArray**)p;
×
4754
    SJson* pJobj = tjsonCreateObject();
×
4755
    if (pJobj == NULL) {
×
4756
      return terrno;
×
4757
    }
4758
    code = tjsonAddStringToObject(pJobj, jkOtableHashName, pKey);
×
4759
    if (code) {
×
4760
      return code;
×
4761
    }
4762
    code = tjsonAddArray(pJobj, jkOtableHashValue, colIdNameToJson, TARRAY_GET_ELEM(*pCols, 0), sizeof(SColIdName),
×
4763
                             taosArrayGetSize(*pCols));
×
4764
    if (code) {
×
4765
      return code;
×
4766
    }
4767
    code = tjsonAddItemToArray(pJsonArray, pJobj);
×
4768
    if (code) {
×
4769
      return code;
×
4770
    }
4771
  }
4772

4773
  return code;
×
4774
}
4775

4776
static const char* jkVtablesHashSize = "vtbHashSize";
4777
static const char* jkVtablesHashKV = "vtbHashKeyValue";
4778
static const char* jkVtablesVuid = "vtbHashVuid";
4779
static const char* jkVtablesVValue = "vtbHashVValue";
4780
static int32_t     vtablesHashToJson(const void* pObj, SJson* pJson) {
×
4781
  const SSHashObj* pHash = (const SSHashObj*)pObj;
×
4782
  int32_t          code = tjsonAddIntegerToObject(pJson, jkVtablesHashSize, tSimpleHashGetSize(pHash));
×
4783
  if (code) {
×
4784
    return code;
×
4785
  }
4786

4787
  SJson* pJsonArray = tjsonAddArrayToObject(pJson, jkVtablesHashKV);
×
4788
  if (NULL == pJsonArray) {
×
4789
    return terrno;
×
4790
  }
4791

4792
  int32_t     iter = 0;
×
4793
  SSHashObj** pOtable = NULL;
×
4794
  char*       pKey = NULL;
×
4795
  void*       p = NULL;
×
4796
  while (NULL != (p = tSimpleHashIterate(pHash, p, &iter))) {
×
4797
    pKey = (char*)tSimpleHashGetKey(p, NULL);
×
4798
    pOtable = (SSHashObj**)p;
×
4799
    SJson* pJobj = tjsonCreateObject();
×
4800
    if (pJobj == NULL) {
×
4801
      return terrno;
×
4802
    }
4803
    code = tjsonAddIntegerToObject(pJobj, jkVtablesVuid, *(uint64_t*)((int32_t*)pKey + 1));
×
4804
    if (code) {
×
4805
      return code;
×
4806
    }
4807
    code = tjsonAddObject(pJobj, jkVtablesVValue, oTableHashToJson, *pOtable);
×
4808
    if (code) {
×
4809
      return code;
×
4810
    }
4811
    code = tjsonAddItemToArray(pJsonArray, pJobj);
×
4812
    if (code) {
×
4813
      return code;
×
4814
    }
4815
  }
4816

4817
  return code;
×
4818
}
4819

4820
static const char* jkSubplanId = "Id";
4821
static const char* jkSubplanType = "SubplanType";
4822
static const char* jkSubplanMsgType = "MsgType";
4823
static const char* jkSubplanLevel = "Level";
4824
static const char* jkSubplanDbFName = "DbFName";
4825
static const char* jkSubplanParent = "Parent";
4826
static const char* jkSubplanChildren = "Child";
4827
static const char* jkSubplanUser = "User";
4828
static const char* jkSubplanNodeAddr = "NodeAddr";
4829
static const char* jkSubplanRootNode = "RootNode";
4830
static const char* jkSubplanDataSink = "DataSink";
4831
static const char* jkSubplanSubQ = "SubQ";
4832
static const char* jkSubplanTagCond = "TagCond";
4833
static const char* jkSubplanTagIndexCond = "TagIndexCond";
4834
static const char* jkSubplanVTables = "VTables";
4835
static const char* jkSubplanShowRewrite = "ShowRewrite";
4836
static const char* jkSubplanRowsThreshold = "RowThreshold";
4837
static const char* jkSubplanDynamicRowsThreshold = "DyRowThreshold";
4838
static const char* jkSubplanIsView = "IsView";
4839
static const char* jkSubplanIsAudit = "IsAudit";
4840
static const char* jkSubplanDynTbname = "DynTbname";
4841
static const char* jkSubplanProcessOneBlock = "ProcessOneBlock";
4842

4843
static int32_t subplanToJson(const void* pObj, SJson* pJson) {
963,301,819✔
4844
  const SSubplan* pNode = (const SSubplan*)pObj;
963,301,819✔
4845

4846
  int32_t code = tjsonAddObject(pJson, jkSubplanId, subplanIdToJson, &pNode->id);
963,301,819✔
4847
  if (TSDB_CODE_SUCCESS == code) {
963,300,191✔
4848
    code = tjsonAddIntegerToObject(pJson, jkSubplanType, pNode->subplanType);
963,299,570✔
4849
  }
4850
  if (TSDB_CODE_SUCCESS == code) {
963,306,701✔
4851
    code = tjsonAddIntegerToObject(pJson, jkSubplanMsgType, pNode->msgType);
963,306,701✔
4852
  }
4853
  if (TSDB_CODE_SUCCESS == code) {
963,300,107✔
4854
    code = tjsonAddIntegerToObject(pJson, jkSubplanLevel, pNode->level);
963,300,107✔
4855
  }
4856
  if (TSDB_CODE_SUCCESS == code) {
963,305,564✔
4857
    code = tjsonAddStringToObject(pJson, jkSubplanDbFName, pNode->dbFName);
963,305,564✔
4858
  }
4859
  if (TSDB_CODE_SUCCESS == code) {
963,301,019✔
4860
    code = tjsonAddStringToObject(pJson, jkSubplanUser, pNode->user);
963,301,019✔
4861
  }
4862
  if (TSDB_CODE_SUCCESS == code) {
963,302,737✔
4863
    code = tjsonAddObject(pJson, jkSubplanNodeAddr, queryNodeAddrToJson, &pNode->execNode);
963,302,737✔
4864
  }
4865
  if (TSDB_CODE_SUCCESS == code) {
963,299,711✔
4866
    code = nodeListToJson(pJson, jkSubplanChildren, pNode->pChildren);
963,299,711✔
4867
  }
4868
  if (TSDB_CODE_SUCCESS == code) {
963,296,388✔
4869
    code = tjsonAddObject(pJson, jkSubplanRootNode, nodeToJson, pNode->pNode);
963,296,388✔
4870
  }
4871
  if (TSDB_CODE_SUCCESS == code) {
963,302,072✔
4872
    code = tjsonAddObject(pJson, jkSubplanDataSink, nodeToJson, pNode->pDataSink);
963,302,072✔
4873
  }
4874
  if (TSDB_CODE_SUCCESS == code) {
963,311,428✔
4875
    code = nodeListToJson(pJson, jkSubplanSubQ, pNode->pSubQ);
963,311,428✔
4876
  }
4877
  if (TSDB_CODE_SUCCESS == code) {
963,310,845✔
4878
    code = tjsonAddObject(pJson, jkSubplanTagCond, nodeToJson, pNode->pTagCond);
963,310,845✔
4879
  }
4880
  if (TSDB_CODE_SUCCESS == code) {
963,310,262✔
4881
    code = tjsonAddObject(pJson, jkSubplanTagIndexCond, nodeToJson, pNode->pTagIndexCond);
963,310,262✔
4882
  }
4883
  if (TSDB_CODE_SUCCESS == code) {
963,310,262✔
4884
    code = tjsonAddObject(pJson, jkSubplanVTables, vtablesHashToJson, pNode->pVTables);
963,310,262✔
4885
  }
4886
  if (TSDB_CODE_SUCCESS == code) {
963,309,113✔
4887
    code = tjsonAddBoolToObject(pJson, jkSubplanShowRewrite, pNode->showRewrite);
963,309,113✔
4888
  }
4889
  if (TSDB_CODE_SUCCESS == code) {
963,311,428✔
4890
    code = tjsonAddBoolToObject(pJson, jkSubplanIsView, pNode->isView);
963,311,428✔
4891
  }
4892
  if (TSDB_CODE_SUCCESS == code) {
963,310,262✔
4893
    code = tjsonAddBoolToObject(pJson, jkSubplanIsAudit, pNode->isAudit);
963,310,262✔
4894
  }
4895
  if (TSDB_CODE_SUCCESS == code) {
963,311,014✔
4896
    code = tjsonAddIntegerToObject(pJson, jkSubplanRowsThreshold, pNode->rowsThreshold);
963,311,014✔
4897
  }
4898
  if (TSDB_CODE_SUCCESS == code) {
963,309,318✔
4899
    code = tjsonAddBoolToObject(pJson, jkSubplanDynamicRowsThreshold, pNode->dynamicRowThreshold);
963,309,318✔
4900
  }
4901
  if (TSDB_CODE_SUCCESS == code) {
963,310,285✔
4902
    code = tjsonAddBoolToObject(pJson, jkSubplanDynTbname, pNode->dynTbname);
963,310,285✔
4903
  }
4904
  if (TSDB_CODE_SUCCESS == code) {
963,310,078✔
4905
    code = tjsonAddBoolToObject(pJson, jkSubplanProcessOneBlock, pNode->processOneBlock);
963,310,078✔
4906
  }
4907

4908
  return code;
963,310,373✔
4909
}
4910

4911
static int32_t jsonToOtableCols(const SJson* pJson, void* pObj) {
×
4912
  SArray**   pCols = (SArray**)pObj;
×
4913
  SColIdName col;
×
4914
  char       colName[TSDB_COL_NAME_LEN];
×
4915
  int32_t    code = 0;
×
4916
  int32_t    colNum = tjsonGetArraySize(pJson);
×
4917
  *pCols = taosArrayInit(colNum, sizeof(SColIdName));
×
4918
  if (NULL == *pCols) {
×
4919
    return terrno;
×
4920
  }
4921
  for (int32_t i = 0; i < colNum; ++i) {
×
4922
    SJson* pCol = tjsonGetArrayItem(pJson, i);
×
4923
    code = tjsonGetSmallIntValue(pCol, jkColVtableId, &col.colId);
×
4924
    if (code < 0) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4925
    code = tjsonGetStringValue1(pCol, jkColOtableName, colName, sizeof(colName));
×
4926
    if (code < 0) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4927
    col.colName = taosStrdup(colName);
×
4928
    if (NULL == col.colName) {
×
4929
      return terrno;
×
4930
    }
4931
    if (NULL == taosArrayPush(*pCols, &col)) {
×
4932
      return terrno;
×
4933
    }
4934
  }
4935

4936
  return code;
×
4937
}
4938

4939
static int32_t jsonToOtableHash(const SJson* pJson, void* pObj) {
×
4940
  SSHashObj** pHash = (SSHashObj**)pObj;
×
4941
  int32_t     hashSize = 0;
×
4942
  int32_t     code = tjsonGetIntValue(pJson, jkOtableHashSize, &hashSize);
×
4943
  if (TSDB_CODE_SUCCESS == code && hashSize > 0) {
×
4944
    *pHash = tSimpleHashInit(hashSize, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY));
×
4945
    if (NULL == *pHash) {
×
4946
      return terrno;
×
4947
    }
4948
    tSimpleHashSetFreeFp(*pHash, tFreeStreamVtbOtbInfo);
×
4949

4950
    SJson *ovalues = tjsonGetObjectItem(pJson, jkOtableHashKV);
×
4951
    if (ovalues == NULL) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4952
    char    tbName[TSDB_TABLE_NAME_LEN];
×
4953
    SArray* pCols = NULL;
×
4954
    for (int32_t d = 0; d < hashSize; ++d) {
×
4955
      SJson* okeyValue = tjsonGetArrayItem(ovalues, d);
×
4956
      if (okeyValue == NULL) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4957

4958
      code = tjsonGetStringValue1(okeyValue, jkOtableHashName, tbName, sizeof(tbName));
×
4959
      if (code < 0) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4960
      SJson* ovalue = tjsonGetObjectItem(okeyValue, jkOtableHashValue);
×
4961
      code = jsonToOtableCols(ovalue, &pCols);
×
4962
      if (code < 0) return code;
×
4963
      code = tSimpleHashPut(*pHash, tbName, strlen(tbName) + 1, &pCols, POINTER_BYTES);
×
4964
      if (code < 0) return code;
×
4965
    }
4966
  }
4967

4968
  return code;
×
4969
}
4970

4971
static int32_t jsonToVtablesHash(const SJson* pJson, void* pObj) {
×
4972
  SSHashObj** pHash = (SSHashObj**)pObj;
×
4973
  int32_t     hashSize = 0;
×
4974
  int32_t     code = tjsonGetIntValue(pJson, jkVtablesHashSize, &hashSize);
×
4975
  if (TSDB_CODE_SUCCESS == code && hashSize > 0) {
×
4976
    *pHash = tSimpleHashInit(hashSize, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT));
×
4977
    if (NULL == *pHash) {
×
4978
      return terrno;
×
4979
    }
4980
    tSimpleHashSetFreeFp(*pHash, tFreeStreamVtbVtbInfo);
×
4981
    SJson* vvalues = tjsonGetObjectItem(pJson, jkVtablesHashKV);
×
4982
    if (vvalues == NULL) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4983
    uint64_t   vuid = 0;
×
4984
    SSHashObj* pOtable = NULL;
×
4985
    for (int32_t d = 0; d < hashSize; ++d) {
×
4986
      SJson* vkeyValue = tjsonGetArrayItem(vvalues, d);
×
4987
      if (vkeyValue == NULL) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4988

4989
      code = tjsonGetUBigIntValue(vkeyValue, jkVtablesVuid, &vuid);
×
4990
      if (code < 0) return TSDB_CODE_INVALID_JSON_FORMAT;
×
4991
      SJson* vvalue = tjsonGetObjectItem(vkeyValue, jkVtablesVValue);
×
4992
      code = jsonToOtableHash(vvalue, &pOtable);
×
4993
      if (code < 0) return code;
×
4994
      code = tSimpleHashPut(*pHash, &vuid, sizeof(vuid), &pOtable, POINTER_BYTES);
×
4995
      if (code < 0) return code;
×
4996
    }
4997
  }
4998

4999
  return code;
×
5000
}
5001

5002
static int32_t jsonToSubplan(const SJson* pJson, void* pObj) {
5,859,952✔
5003
  SSubplan* pNode = (SSubplan*)pObj;
5,859,952✔
5004

5005
  int32_t code = tjsonToObject(pJson, jkSubplanId, jsonToSubplanId, &pNode->id);
5,859,952✔
5006
  if (TSDB_CODE_SUCCESS == code) {
5,859,952✔
5007
    tjsonGetNumberValue(pJson, jkSubplanType, pNode->subplanType, code);
5,859,952✔
5008
  }
5009
  if (TSDB_CODE_SUCCESS == code) {
5,859,952✔
5010
    code = tjsonGetIntValue(pJson, jkSubplanMsgType, &pNode->msgType);
5,859,952✔
5011
  }
5012
  if (TSDB_CODE_SUCCESS == code) {
5,859,952✔
5013
    code = tjsonGetIntValue(pJson, jkSubplanLevel, &pNode->level);
5,859,952✔
5014
  }
5015
  if (TSDB_CODE_SUCCESS == code) {
5,859,550✔
5016
    code = tjsonGetStringValue1(pJson, jkSubplanDbFName, pNode->dbFName, sizeof(pNode->dbFName));
5,859,550✔
5017
  }
5018
  if (TSDB_CODE_SUCCESS == code) {
5,859,792✔
5019
    code = tjsonGetStringValue1(pJson, jkSubplanUser, pNode->user, sizeof(pNode->user));
5,859,792✔
5020
  }
5021
  if (TSDB_CODE_SUCCESS == code) {
5,859,952✔
5022
    code = tjsonToObject(pJson, jkSubplanNodeAddr, jsonToQueryNodeAddr, &pNode->execNode);
5,859,952✔
5023
  }
5024
  if (TSDB_CODE_SUCCESS == code) {
5,859,952✔
5025
    code = jsonToNodeList(pJson, jkSubplanChildren, &pNode->pChildren);
5,859,952✔
5026
  }
5027
  if (TSDB_CODE_SUCCESS == code) {
5,859,550✔
5028
    code = jsonToNodeObject(pJson, jkSubplanRootNode, (SNode**)&pNode->pNode);
5,859,550✔
5029
  }
5030
  if (TSDB_CODE_SUCCESS == code) {
5,859,792✔
5031
    code = jsonToNodeObject(pJson, jkSubplanDataSink, (SNode**)&pNode->pDataSink);
5,859,792✔
5032
  }
5033
  if (TSDB_CODE_SUCCESS == code) {
5,859,952✔
5034
    code = jsonToNodeList(pJson, jkSubplanSubQ, &pNode->pSubQ);
5,859,952✔
5035
  }
5036
  if (TSDB_CODE_SUCCESS == code) {
5,859,952✔
5037
    code = jsonToNodeObject(pJson, jkSubplanTagCond, (SNode**)&pNode->pTagCond);
5,859,952✔
5038
  }
5039
  if (TSDB_CODE_SUCCESS == code) {
5,859,952✔
5040
    code = jsonToNodeObject(pJson, jkSubplanTagIndexCond, (SNode**)&pNode->pTagIndexCond);
5,859,952✔
5041
  }
5042
  if (TSDB_CODE_SUCCESS == code) {
5,859,952✔
5043
    code = tjsonToObject(pJson, jkSubplanVTables, jsonToVtablesHash, &pNode->pVTables);
5,859,952✔
5044
  }
5045
  if (TSDB_CODE_SUCCESS == code) {
5,859,952✔
5046
    code = tjsonGetBoolValue(pJson, jkSubplanShowRewrite, &pNode->showRewrite);
5,859,952✔
5047
  }
5048
  if (TSDB_CODE_SUCCESS == code) {
5,859,952✔
5049
    code = tjsonGetBoolValue(pJson, jkSubplanIsView, &pNode->isView);
5,859,952✔
5050
  }
5051
  if (TSDB_CODE_SUCCESS == code) {
5,859,952✔
5052
    code = tjsonGetBoolValue(pJson, jkSubplanIsAudit, &pNode->isAudit);
5,859,952✔
5053
  }
5054
  if (TSDB_CODE_SUCCESS == code) {
5,859,952✔
5055
    code = tjsonGetIntValue(pJson, jkSubplanRowsThreshold, &pNode->rowsThreshold);
5,859,952✔
5056
  }
5057
  if (TSDB_CODE_SUCCESS == code) {
5,859,952✔
5058
    code = tjsonGetBoolValue(pJson, jkSubplanDynamicRowsThreshold, &pNode->dynamicRowThreshold);
5,859,952✔
5059
  }
5060
  if (TSDB_CODE_SUCCESS == code) {
5,859,952✔
5061
    SNode* pChild = NULL;
5,859,952✔
5062
    FOREACH(pChild, pNode->pChildren) {
8,667,186✔
5063
      if (nodeType(pChild) == QUERY_NODE_PHYSICAL_SUBPLAN) {
2,807,234✔
5064
        SSubplan* pSubplan = (SSubplan*)pChild;
198,456✔
5065
        code = nodesListMakeAppend(&pSubplan->pParents, (SNode*)pNode);
198,456✔
5066
      }
5067
    }
5068
  }
5069
  if (TSDB_CODE_SUCCESS == code) {
5,859,792✔
5070
    code = tjsonGetBoolValue(pJson, jkSubplanDynTbname, &pNode->dynTbname);
5,859,792✔
5071
  }
5072
  if (TSDB_CODE_SUCCESS == code) {
5,859,363✔
5073
    code = tjsonGetBoolValue(pJson, jkSubplanProcessOneBlock, &pNode->processOneBlock);
5,859,363✔
5074
  }
5075

5076
  return code;
5,859,952✔
5077
}
5078

5079
static const char* jkPlanQueryId = "QueryId";
5080
static const char* jkPlanNumOfSubplans = "NumOfSubplans";
5081
static const char* jkPlanSubplans = "Subplans";
5082
static const char* jkPlanSubQueriesNum = "SubQueriesNum";
5083
static const char* jkPlanSubQueries = "SubQueries";
5084

5085
static int32_t planToJson(const void* pObj, SJson* pJson) {
700,207,326✔
5086
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
700,207,326✔
5087
  char tmpBuf[64] = {0};
700,207,326✔
5088
  SNode* pTmp = NULL;
700,207,522✔
5089
  int32_t i = 0;
700,207,522✔
5090

5091
  int32_t code = tjsonAddIntegerToObject(pJson, jkPlanQueryId, pNode->queryId);
700,207,522✔
5092
  if (TSDB_CODE_SUCCESS == code) {
700,204,947✔
5093
    code = tjsonAddIntegerToObject(pJson, jkPlanNumOfSubplans, pNode->numOfSubplans);
700,205,070✔
5094
  }
5095
  if (TSDB_CODE_SUCCESS == code) {
700,207,885✔
5096
    code = tjsonAddObject(pJson, jkPlanSubplans, nodeToJson, nodesListGetNode(pNode->pSubplans, 0));
700,207,885✔
5097
  }
5098
  if (TSDB_CODE_SUCCESS == code && pNode->pChildren) {
700,216,889✔
5099
    code = tjsonAddIntegerToObject(pJson, jkPlanSubQueriesNum, pNode->pChildren->length);
282,949✔
5100
  }
5101
  if (TSDB_CODE_SUCCESS == code && pNode->pChildren) {
700,216,533✔
5102
    i = 0;
282,949✔
5103
    FOREACH(pTmp, pNode->pChildren) {
614,463✔
5104
      snprintf(tmpBuf, sizeof(tmpBuf), "%s%d", jkPlanSubQueries, i);
331,514✔
5105
      code = tjsonAddObject(pJson, tmpBuf, nodeToJson, pTmp);
331,514✔
5106
      ++i;
331,514✔
5107
    }
5108
  }
5109
  
5110
  return code;
700,217,005✔
5111
}
5112

5113
static int32_t pushSubplan(SNode* pSubplan, int32_t level, SNodeList* pSubplans) {
1,389,330✔
5114
  SNodeListNode* pGroup = NULL;
1,389,330✔
5115
  if (level >= LIST_LENGTH(pSubplans)) {
1,389,330✔
5116
    pGroup = NULL;
1,281,115✔
5117
    int32_t code = nodesMakeNode(QUERY_NODE_NODE_LIST, (SNode**)&pGroup);
1,281,115✔
5118
    if (NULL == pGroup) {
1,281,115✔
5119
      return code;
×
5120
    }
5121
    if (TSDB_CODE_SUCCESS != nodesListStrictAppend(pSubplans, (SNode*)pGroup)) {
1,281,115✔
5122
      return TSDB_CODE_OUT_OF_MEMORY;
×
5123
    }
5124
  } else {
5125
    pGroup = (SNodeListNode*)nodesListGetNode(pSubplans, level);
108,215✔
5126
  }
5127
  if (NULL == pGroup->pNodeList) {
1,389,330✔
5128
    int32_t code = nodesMakeList(&pGroup->pNodeList);
1,281,115✔
5129
    if (NULL == pGroup->pNodeList) {
1,281,115✔
5130
      return code;
×
5131
    }
5132
  }
5133
  return nodesListAppend(pGroup->pNodeList, (SNode*)pSubplan);
1,389,330✔
5134
}
5135

5136
static int32_t buildSubplan(SSubplan* pSubplan, SQueryPlan* pQueryPlan) {
1,389,330✔
5137
  int32_t code = TSDB_CODE_SUCCESS;
1,389,330✔
5138
  if (TSDB_CODE_SUCCESS == code) {
1,389,330✔
5139
    code = pushSubplan((SNode*)pSubplan, pSubplan->level, pQueryPlan->pSubplans);
1,389,330✔
5140
    ++(pQueryPlan->numOfSubplans);
1,389,330✔
5141
  }
5142

5143
  if (TSDB_CODE_SUCCESS != code) {
1,389,330✔
5144
    nodesDestroyNode((SNode*)pSubplan);
×
5145
    return code;
×
5146
  }
5147

5148
  if (TSDB_CODE_SUCCESS == code) {
1,389,330✔
5149
    SNode* pChild = NULL;
1,389,330✔
5150
    FOREACH(pChild, pSubplan->pChildren) {
4,168,564✔
5151
      if (nodeType(pChild) == QUERY_NODE_PHYSICAL_SUBPLAN) {
2,779,234✔
5152
        code = buildSubplan((SSubplan*)pChild, pQueryPlan);
170,456✔
5153
        if (TSDB_CODE_SUCCESS != code) {
170,456✔
5154
          break;
×
5155
        }
5156
      }
5157
    }
5158
  }
5159
  return code;
1,389,330✔
5160
}
5161

5162
static int32_t jsonToPlan(const SJson* pJson, void* pObj) {
1,218,674✔
5163
  SQueryPlan* pNode = (SQueryPlan*)pObj;
1,218,674✔
5164

5165
  int32_t code = tjsonGetUBigIntValue(pJson, jkPlanQueryId, &pNode->queryId);
1,218,674✔
5166
  int32_t numOfSubplan = 0;
1,218,674✔
5167
  if (TSDB_CODE_SUCCESS == code) {
1,218,674✔
5168
    code = tjsonGetIntValue(pJson, jkPlanNumOfSubplans, &numOfSubplan);
1,218,674✔
5169
  }
5170
  SNodeListNode* pTopSubplan = NULL;
1,218,674✔
5171
  if (TSDB_CODE_SUCCESS == code) {
1,218,674✔
5172
    code = jsonToNodeObject(pJson, jkPlanSubplans, (SNode**)&pTopSubplan);
1,218,674✔
5173
  }
5174
  if (TSDB_CODE_SUCCESS == code) {
1,218,674✔
5175
    code = nodesMakeList(&pNode->pSubplans);
1,218,674✔
5176
  }
5177
  if (TSDB_CODE_SUCCESS == code && pTopSubplan) {
1,218,674✔
5178
    SNode* pGroupItem = NULL;
1,218,674✔
5179
    FOREACH(pGroupItem, pTopSubplan->pNodeList) {
2,437,548✔
5180
      if (nodeType(pGroupItem) == QUERY_NODE_PHYSICAL_SUBPLAN) {
1,218,874✔
5181
        code = buildSubplan((SSubplan*)pGroupItem, pNode);
1,218,874✔
5182
        if (TSDB_CODE_SUCCESS != code) {
1,218,874✔
5183
          break;
×
5184
        }
5185
      }
5186
    }
5187
  }
5188
  if (TSDB_CODE_SUCCESS == code) {
1,218,674✔
5189
    nodesClearList(pTopSubplan->pNodeList);
1,218,674✔
5190
    pTopSubplan->pNodeList = NULL;
1,218,674✔
5191
    nodesDestroyNode((SNode*)pTopSubplan);
1,218,674✔
5192
    if (numOfSubplan != pNode->numOfSubplans) {
1,218,674✔
5193
      code = TSDB_CODE_PLAN_INTERNAL_ERROR;
×
5194
      nodesError("%s toNode error numOfSubplan %d != %d", nodesNodeName(pNode->type), numOfSubplan,
×
5195
                 pNode->numOfSubplans);
5196
    }
5197
  }
5198
  int32_t numOfSubQueries = 0;
1,218,674✔
5199
  if (TSDB_CODE_SUCCESS == code) {
1,218,674✔
5200
    code = tjsonGetIntValue(pJson, jkPlanSubQueriesNum, &numOfSubQueries);
1,218,674✔
5201
  }
5202
  if (TSDB_CODE_SUCCESS == code && numOfSubQueries > 0) {
1,218,674✔
5203
    char tmpBuf[64] = {0};
107,736✔
5204
    SNode* pPlan = NULL;
107,736✔
5205
    for (int32_t i = 0; i < numOfSubQueries; ++i) {
235,862✔
5206
      snprintf(tmpBuf, sizeof(tmpBuf), "%s%d", jkPlanSubQueries, i);
128,126✔
5207
      code = jsonToNodeObject(pJson, tmpBuf, (SNode**)&pPlan);
128,126✔
5208
      if (code) {
128,126✔
5209
        break;
×
5210
      }
5211
      code = nodesListMakeStrictAppend(&pNode->pChildren, pPlan);
128,126✔
5212
      if (code) {
128,126✔
5213
        nodesDestroyNode(pPlan);
×
5214
        break;
×
5215
      }
5216
    }
5217
  }
5218
  
5219
  return code;
1,218,674✔
5220
}
5221

5222
static const char* jkAggLogicPlanGroupKeys = "GroupKeys";
5223
static const char* jkAggLogicPlanAggFuncs = "AggFuncs";
5224

5225
static int32_t logicAggNodeToJson(const void* pObj, SJson* pJson) {
119,900✔
5226
  const SAggLogicNode* pNode = (const SAggLogicNode*)pObj;
119,900✔
5227

5228
  int32_t code = logicPlanNodeToJson(pObj, pJson);
119,900✔
5229
  if (TSDB_CODE_SUCCESS == code) {
119,900✔
5230
    code = nodeListToJson(pJson, jkAggLogicPlanGroupKeys, pNode->pGroupKeys);
119,900✔
5231
  }
5232
  if (TSDB_CODE_SUCCESS == code) {
119,900✔
5233
    code = nodeListToJson(pJson, jkAggLogicPlanAggFuncs, pNode->pAggFuncs);
119,900✔
5234
  }
5235

5236
  return code;
119,900✔
5237
}
5238

5239
static int32_t jsonToLogicAggNode(const SJson* pJson, void* pObj) {
54,600✔
5240
  SAggLogicNode* pNode = (SAggLogicNode*)pObj;
54,600✔
5241

5242
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
54,600✔
5243
  if (TSDB_CODE_SUCCESS == code) {
54,600✔
5244
    code = jsonToNodeList(pJson, jkAggLogicPlanGroupKeys, &pNode->pGroupKeys);
54,600✔
5245
  }
5246
  if (TSDB_CODE_SUCCESS == code) {
54,600✔
5247
    code = jsonToNodeList(pJson, jkAggLogicPlanAggFuncs, &pNode->pAggFuncs);
54,600✔
5248
  }
5249

5250
  return code;
54,600✔
5251
}
5252

5253
static const char* jkDataTypeType = "Type";
5254
static const char* jkDataTypePrecision = "Precision";
5255
static const char* jkDataTypeScale = "Scale";
5256
static const char* jkDataTypeDataBytes = "Bytes";
5257

5258
static int32_t dataTypeToJson(const void* pObj, SJson* pJson) {
2,147,483,647✔
5259
  const SDataType* pNode = (const SDataType*)pObj;
2,147,483,647✔
5260

5261
  int32_t code = tjsonAddIntegerToObject(pJson, jkDataTypeType, pNode->type);
2,147,483,647✔
5262
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5263
    code = tjsonAddIntegerToObject(pJson, jkDataTypePrecision, pNode->precision);
2,147,483,647✔
5264
  }
5265
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5266
    code = tjsonAddIntegerToObject(pJson, jkDataTypeScale, pNode->scale);
2,147,483,647✔
5267
  }
5268
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5269
    code = tjsonAddIntegerToObject(pJson, jkDataTypeDataBytes, pNode->bytes);
2,147,483,647✔
5270
  }
5271

5272
  return code;
2,147,483,647✔
5273
}
5274

5275
static int32_t jsonToDataType(const SJson* pJson, void* pObj) {
167,709,156✔
5276
  SDataType* pNode = (SDataType*)pObj;
167,709,156✔
5277

5278
  int32_t code = tjsonGetUTinyIntValue(pJson, jkDataTypeType, &pNode->type);
167,709,156✔
5279
  if (TSDB_CODE_SUCCESS == code) {
167,710,496✔
5280
    code = tjsonGetUTinyIntValue(pJson, jkDataTypePrecision, &pNode->precision);
167,710,823✔
5281
  }
5282
  if (TSDB_CODE_SUCCESS == code) {
167,710,259✔
5283
    code = tjsonGetUTinyIntValue(pJson, jkDataTypeScale, &pNode->scale);
167,710,259✔
5284
  }
5285
  if (TSDB_CODE_SUCCESS == code) {
167,713,094✔
5286
    code = tjsonGetIntValue(pJson, jkDataTypeDataBytes, &pNode->bytes);
167,713,094✔
5287
  }
5288

5289
  return TSDB_CODE_SUCCESS;
167,709,434✔
5290
}
5291

5292
static const char* jkExprDataType = "DataType";
5293
static const char* jkExprAliasName = "AliasName";
5294
static const char* jkExprUserAlias = "UserAlias";
5295
static const char* jkExprRelateTo = "RelatedTo";
5296
static const char* jkExprBindExprID = "BindExprID";
5297
static const char* jkExprHasNull = "HasNull";
5298

5299
static int32_t exprNodeToJson(const void* pObj, SJson* pJson) {
2,147,483,647✔
5300
  const SExprNode* pNode = (const SExprNode*)pObj;
2,147,483,647✔
5301

5302
  int32_t code = tjsonAddObject(pJson, jkExprDataType, dataTypeToJson, &pNode->resType);
2,147,483,647✔
5303
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5304
    code = tjsonAddStringToObject(pJson, jkExprAliasName, pNode->aliasName);
2,147,483,647✔
5305
  }
5306
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5307
    code = tjsonAddStringToObject(pJson, jkExprUserAlias, pNode->userAlias);
2,147,483,647✔
5308
  }
5309
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5310
    code = tjsonAddBoolToObject(pJson, jkExprHasNull, pNode->hasNull);
2,147,483,647✔
5311
  }
5312
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5313
    code = tjsonAddIntegerToObject(pJson, jkExprRelateTo, pNode->relatedTo);
2,147,483,647✔
5314
  }
5315
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5316
    code = tjsonAddIntegerToObject(pJson, jkExprBindExprID, pNode->bindExprID);
2,147,483,647✔
5317
  }
5318

5319
  return code;
2,147,483,647✔
5320
}
5321

5322
static int32_t jsonToExprNode(const SJson* pJson, void* pObj) {
82,083,086✔
5323
  SExprNode* pNode = (SExprNode*)pObj;
82,083,086✔
5324

5325
  int32_t code = tjsonToObject(pJson, jkExprDataType, jsonToDataType, &pNode->resType);
82,083,086✔
5326
  if (TSDB_CODE_SUCCESS == code) {
82,083,779✔
5327
    code = tjsonGetStringValue1(pJson, jkExprAliasName, pNode->aliasName, sizeof(pNode->aliasName));
82,083,779✔
5328
  }
5329
  if (TSDB_CODE_SUCCESS == code) {
82,082,146✔
5330
    code = tjsonGetStringValue1(pJson, jkExprUserAlias, pNode->userAlias, sizeof(pNode->userAlias));
82,082,146✔
5331
  }
5332
  if (TSDB_CODE_SUCCESS == code) {
82,084,626✔
5333
    code = tjsonGetBoolValue(pJson, jkExprHasNull, &pNode->hasNull);
82,084,626✔
5334
  }
5335
  if (TSDB_CODE_SUCCESS == code) {
82,084,898✔
5336
    code = tjsonGetIntValue(pJson, jkExprRelateTo, &pNode->relatedTo);
82,084,898✔
5337
  }
5338
  if (TSDB_CODE_SUCCESS == code) {
82,081,234✔
5339
    code = tjsonGetIntValue(pJson, jkExprBindExprID, &pNode->bindExprID);
82,081,234✔
5340
  }
5341

5342
  return code;
82,082,221✔
5343
}
5344

5345
static const char* jkColumnTableId = "TableId";
5346
static const char* jkColumnTableType = "TableType";
5347
static const char* jkColumnColId = "ColId";
5348
static const char* jkColumnColType = "ColType";
5349
static const char* jkColumnProjId = "ProjId";
5350
static const char* jkColumnDbName = "DbName";
5351
static const char* jkColumnTableName = "TableName";
5352
static const char* jkColumnTableAlias = "TableAlias";
5353
static const char* jkColumnColName = "ColName";
5354
static const char* jkColumnDataBlockId = "DataBlockId";
5355
static const char* jkColumnSlotId = "SlotId";
5356
static const char* jkColumnTableHasPk = "TableHasPk";
5357
static const char* jkColumnIsPk = "IsPk";
5358
static const char* jkColumnNumOfPKs = "NumOfPKs";
5359
static const char* jkColumnHasRef = "HasRef";
5360
static const char* jkColumnHasDep = "HasDep";
5361
static const char* jkColumnRefDb = "RefDb";
5362
static const char* jkColumnRefTable = "RefTable";
5363
static const char* jkColumnRefCol = "RefCol";
5364
static const char* jkColumnIsPrimTs = "IsPrimTs";
5365

5366
static int32_t columnNodeToJson(const void* pObj, SJson* pJson) {
2,147,483,647✔
5367
  const SColumnNode* pNode = (const SColumnNode*)pObj;
2,147,483,647✔
5368

5369
  int32_t code = exprNodeToJson(pObj, pJson);
2,147,483,647✔
5370
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5371
    code = tjsonAddIntegerToObject(pJson, jkColumnTableId, pNode->tableId);
2,147,483,647✔
5372
  }
5373
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5374
    code = tjsonAddIntegerToObject(pJson, jkColumnTableType, pNode->tableType);
2,147,483,647✔
5375
  }
5376
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5377
    code = tjsonAddIntegerToObject(pJson, jkColumnColId, pNode->colId);
2,147,483,647✔
5378
  }
5379
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5380
    code = tjsonAddIntegerToObject(pJson, jkColumnProjId, pNode->projIdx);
2,147,483,647✔
5381
  }
5382
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5383
    code = tjsonAddIntegerToObject(pJson, jkColumnColType, pNode->colType);
2,147,483,647✔
5384
  }
5385
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5386
    code = tjsonAddStringToObject(pJson, jkColumnDbName, pNode->dbName);
2,147,483,647✔
5387
  }
5388
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5389
    code = tjsonAddStringToObject(pJson, jkColumnTableName, pNode->tableName);
2,147,483,647✔
5390
  }
5391
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5392
    code = tjsonAddStringToObject(pJson, jkColumnTableAlias, pNode->tableAlias);
2,147,483,647✔
5393
  }
5394
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5395
    code = tjsonAddStringToObject(pJson, jkColumnColName, pNode->colName);
2,147,483,647✔
5396
  }
5397
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5398
    code = tjsonAddIntegerToObject(pJson, jkColumnDataBlockId, pNode->dataBlockId);
2,147,483,647✔
5399
  }
5400
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5401
    code = tjsonAddIntegerToObject(pJson, jkColumnSlotId, pNode->slotId);
2,147,483,647✔
5402
  }
5403
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5404
    code = tjsonAddBoolToObject(pJson, jkColumnTableHasPk, pNode->tableHasPk);
2,147,483,647✔
5405
  }
5406
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5407
    code = tjsonAddBoolToObject(pJson, jkColumnIsPk, pNode->isPk);
2,147,483,647✔
5408
  }
5409
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5410
    code = tjsonAddIntegerToObject(pJson, jkColumnNumOfPKs, pNode->numOfPKs);
2,147,483,647✔
5411
  }
5412
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5413
    code = tjsonAddBoolToObject(pJson, jkColumnHasDep, pNode->hasDep);
2,147,483,647✔
5414
  }
5415
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5416
    code = tjsonAddBoolToObject(pJson, jkRefColHasRef, pNode->hasRef);
2,147,483,647✔
5417
  }
5418
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5419
    code = tjsonAddStringToObject(pJson, jkColumnRefDb, pNode->refDbName);
2,147,483,647✔
5420
  }
5421
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5422
    code = tjsonAddStringToObject(pJson, jkColumnRefTable, pNode->refTableName);
2,147,483,647✔
5423
  }
5424
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5425
    code = tjsonAddStringToObject(pJson, jkColumnRefCol, pNode->refColName);
2,147,483,647✔
5426
  }
5427
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5428
    code = tjsonAddBoolToObject(pJson, jkColumnIsPrimTs, pNode->isPrimTs);
2,147,483,647✔
5429
  }
5430
  return code;
2,147,483,647✔
5431
}
5432

5433
static int32_t jsonToColumnNode(const SJson* pJson, void* pObj) {
45,368,348✔
5434
  SColumnNode* pNode = (SColumnNode*)pObj;
45,368,348✔
5435

5436
  int32_t code = jsonToExprNode(pJson, pObj);
45,368,348✔
5437
  if (TSDB_CODE_SUCCESS == code) {
45,367,876✔
5438
    code = tjsonGetUBigIntValue(pJson, jkColumnTableId, &pNode->tableId);
45,367,876✔
5439
  }
5440
  if (TSDB_CODE_SUCCESS == code) {
45,368,813✔
5441
    code = tjsonGetTinyIntValue(pJson, jkColumnTableType, &pNode->tableType);
45,368,813✔
5442
  }
5443
  if (TSDB_CODE_SUCCESS == code) {
45,367,758✔
5444
    code = tjsonGetSmallIntValue(pJson, jkColumnColId, &pNode->colId);
45,367,758✔
5445
  }
5446
  if (TSDB_CODE_SUCCESS == code) {
45,368,332✔
5447
    code = tjsonGetSmallIntValue(pJson, jkColumnProjId, &pNode->projIdx);
45,368,332✔
5448
  }
5449
  if (TSDB_CODE_SUCCESS == code) {
45,368,503✔
5450
    tjsonGetNumberValue(pJson, jkColumnColType, pNode->colType, code);
45,368,503✔
5451
  }
5452
  if (TSDB_CODE_SUCCESS == code) {
45,368,251✔
5453
    code = tjsonGetStringValue1(pJson, jkColumnDbName, pNode->dbName, sizeof(pNode->dbName));
45,368,251✔
5454
  }
5455
  if (TSDB_CODE_SUCCESS == code) {
45,369,686✔
5456
    code = tjsonGetStringValue1(pJson, jkColumnTableName, pNode->tableName, sizeof(pNode->tableName));
45,369,686✔
5457
  }
5458
  if (TSDB_CODE_SUCCESS == code) {
45,368,699✔
5459
    code = tjsonGetStringValue1(pJson, jkColumnTableAlias, pNode->tableAlias, sizeof(pNode->tableAlias));
45,368,699✔
5460
  }
5461
  if (TSDB_CODE_SUCCESS == code) {
45,368,677✔
5462
    code = tjsonGetStringValue1(pJson, jkColumnColName, pNode->colName, sizeof(pNode->colName));
45,368,677✔
5463
  }
5464
  if (TSDB_CODE_SUCCESS == code) {
45,369,610✔
5465
    code = tjsonGetBigIntValue(pJson, jkColumnDataBlockId, &pNode->dataBlockId);
45,369,610✔
5466
  }
5467
  if (TSDB_CODE_SUCCESS == code) {
45,367,841✔
5468
    code = tjsonGetSmallIntValue(pJson, jkColumnSlotId, &pNode->slotId);
45,367,841✔
5469
  }
5470
  if (TSDB_CODE_SUCCESS == code) {
45,368,603✔
5471
    code = tjsonGetBoolValue(pJson, jkColumnTableHasPk, &pNode->tableHasPk);
45,368,603✔
5472
  }
5473
  if (TSDB_CODE_SUCCESS == code) {
45,370,015✔
5474
    code = tjsonGetBoolValue(pJson, jkColumnIsPk, &pNode->isPk);
45,370,015✔
5475
  }
5476
  if (TSDB_CODE_SUCCESS == code) {
45,369,128✔
5477
    code = tjsonGetSmallIntValue(pJson, jkColumnNumOfPKs, &pNode->numOfPKs);
45,369,128✔
5478
  }
5479
  if (TSDB_CODE_SUCCESS == code) {
45,368,842✔
5480
    code = tjsonGetBoolValue(pJson, jkColumnHasDep, &pNode->hasDep);
45,368,842✔
5481
  }
5482
  if (TSDB_CODE_SUCCESS == code) {
45,369,337✔
5483
    code = tjsonGetBoolValue(pJson, jkColumnHasRef, &pNode->hasRef);
45,369,337✔
5484
  }
5485
  if (TSDB_CODE_SUCCESS == code) {
45,368,461✔
5486
    code = tjsonGetStringValue1(pJson, jkColumnRefDb, pNode->refDbName, sizeof(pNode->refDbName));
45,368,461✔
5487
  }
5488
  if (TSDB_CODE_SUCCESS == code) {
45,370,015✔
5489
    code = tjsonGetStringValue1(pJson, jkColumnRefTable, pNode->refTableName, sizeof(pNode->refTableName));
45,370,015✔
5490
  }
5491
  if (TSDB_CODE_SUCCESS == code) {
45,368,128✔
5492
    code = tjsonGetStringValue1(pJson, jkColumnRefCol, pNode->refColName, sizeof(pNode->refColName));
45,368,128✔
5493
  }
5494
  if (TSDB_CODE_SUCCESS == code) {
45,369,210✔
5495
    code = tjsonGetBoolValue(pJson, jkColumnIsPrimTs, &pNode->isPrimTs);
45,369,210✔
5496
  }
5497
  return code;
45,369,178✔
5498
}
5499

5500
static const char* jkValueLiteralSize = "LiteralSize";
5501
static const char* jkValueLiteral = "Literal";
5502
static const char* jkValueFlag = "Flag";
5503
static const char* jkValueTranslate = "Translate";
5504
static const char* jkValueNotReserved = "NotReserved";
5505
static const char* jkValueIsNull = "IsNull";
5506
static const char* jkValueUnit = "Unit";
5507
static const char* jkValueDatum = "Datum";
5508

5509
static int32_t datumToJson(const void* pObj, SJson* pJson) {
506,802,461✔
5510
  const SValueNode* pNode = (const SValueNode*)pObj;
506,802,461✔
5511

5512
  int32_t code = TSDB_CODE_SUCCESS;
506,802,461✔
5513
  switch (pNode->node.resType.type) {
506,802,461✔
5514
    case TSDB_DATA_TYPE_NULL:
×
5515
      break;
×
5516
    case TSDB_DATA_TYPE_BOOL:
14,926,309✔
5517
      code = tjsonAddBoolToObject(pJson, jkValueDatum, pNode->datum.b);
14,926,309✔
5518
      break;
14,926,309✔
5519
    case TSDB_DATA_TYPE_TINYINT:
368,815,468✔
5520
    case TSDB_DATA_TYPE_SMALLINT:
5521
    case TSDB_DATA_TYPE_INT:
5522
    case TSDB_DATA_TYPE_BIGINT:
5523
    case TSDB_DATA_TYPE_TIMESTAMP:
5524
      code = tjsonAddIntegerToObject(pJson, jkValueDatum, pNode->datum.i);
368,815,468✔
5525
      break;
368,816,034✔
5526
    case TSDB_DATA_TYPE_UTINYINT:
19,149✔
5527
    case TSDB_DATA_TYPE_USMALLINT:
5528
    case TSDB_DATA_TYPE_UINT:
5529
    case TSDB_DATA_TYPE_UBIGINT:
5530
      code = tjsonAddIntegerToObject(pJson, jkValueDatum, pNode->datum.u);
19,149✔
5531
      break;
19,149✔
5532
    case TSDB_DATA_TYPE_FLOAT:
38,837,158✔
5533
    case TSDB_DATA_TYPE_DOUBLE:
5534
      code = tjsonAddDoubleToObject(pJson, jkValueDatum, pNode->datum.d);
38,837,158✔
5535
      break;
38,837,158✔
5536
    case TSDB_DATA_TYPE_NCHAR: {
79,795✔
5537
      // cJSON only support utf-8 encoding. Convert memory content to hex string.
5538
      int32_t bufSize = varDataLen(pNode->datum.p) * 2 + 1;
79,795✔
5539

5540
      char*   buf = taosMemoryCalloc(bufSize, sizeof(char));
79,795✔
5541
      if (!buf) return terrno;
79,795✔
5542
      code = taosHexEncode(varDataVal(pNode->datum.p), buf, varDataLen(pNode->datum.p), bufSize);
79,795✔
5543
      if (code != TSDB_CODE_SUCCESS) {
79,795✔
5544
        taosMemoryFree(buf);
×
5545
        return TSDB_CODE_TSC_INVALID_VALUE;
×
5546
      }
5547
      code = tjsonAddStringToObject(pJson, jkValueDatum, buf);
79,795✔
5548
      taosMemoryFree(buf);
79,795✔
5549
      break;
79,795✔
5550
    }
5551
    case TSDB_DATA_TYPE_VARCHAR:
84,118,856✔
5552
    case TSDB_DATA_TYPE_VARBINARY:
5553
    case TSDB_DATA_TYPE_GEOMETRY:
5554
      code = tjsonAddStringToObject(pJson, jkValueDatum, varDataVal(pNode->datum.p));
84,118,856✔
5555
      break;
84,122,354✔
5556
    case TSDB_DATA_TYPE_JSON: {
1,662✔
5557
      int32_t len = getJsonValueLen(pNode->datum.p);
1,662✔
5558
      int32_t bufSize = len * 2 + 1;
1,662✔
5559
      char*   buf = taosMemoryCalloc(bufSize, sizeof(char));
1,662✔
5560
      if (!buf) return terrno;
1,662✔
5561

5562
      code = taosHexEncode(pNode->datum.p, buf, len, bufSize);
1,662✔
5563
      if (code != TSDB_CODE_SUCCESS) {
1,662✔
5564
        taosMemoryFree(buf);
×
5565
        return TSDB_CODE_TSC_INVALID_VALUE;
×
5566
      }
5567
      code = tjsonAddStringToObject(pJson, jkValueDatum, buf);
1,662✔
5568
      taosMemoryFree(buf);
1,662✔
5569
      break;
1,662✔
5570
    }
5571
    case TSDB_DATA_TYPE_DECIMAL:
×
5572
      break;
×
5573
    case TSDB_DATA_TYPE_BLOB:
×
5574
      code = tjsonAddStringToObject(pJson, jkValueDatum, blobDataVal(pNode->datum.p));
×
5575
      // todo
5576
    default:
×
5577
      break;
×
5578
  }
5579

5580
  return code;
506,802,461✔
5581
}
5582

5583
static int32_t valueNodeToJson(const void* pObj, SJson* pJson) {
508,822,335✔
5584
  const SValueNode* pNode = (const SValueNode*)pObj;
508,822,335✔
5585

5586
  int32_t code = exprNodeToJson(pObj, pJson);
508,822,335✔
5587
  if (TSDB_CODE_SUCCESS == code) {
508,821,530✔
5588
    code = tjsonAddIntegerToObject(pJson, jkValueLiteralSize, NULL != pNode->literal ? strlen(pNode->literal) : 0);
508,821,530✔
5589
  }
5590
  if (TSDB_CODE_SUCCESS == code && NULL != pNode->literal) {
508,821,641✔
5591
    code = tjsonAddStringToObject(pJson, jkValueLiteral, pNode->literal);
340,612,072✔
5592
  }
5593
  if (TSDB_CODE_SUCCESS == code) {
508,822,696✔
5594
    code = tjsonAddBoolToObject(pJson, jkValueFlag, pNode->flag);
508,822,696✔
5595
  }
5596
  if (TSDB_CODE_SUCCESS == code) {
508,822,113✔
5597
    code = tjsonAddBoolToObject(pJson, jkValueTranslate, pNode->translate);
508,822,113✔
5598
  }
5599
  if (TSDB_CODE_SUCCESS == code) {
508,821,530✔
5600
    code = tjsonAddBoolToObject(pJson, jkValueNotReserved, pNode->notReserved);
508,820,947✔
5601
  }
5602
  if (TSDB_CODE_SUCCESS == code) {
508,823,390✔
5603
    code = tjsonAddBoolToObject(pJson, jkValueIsNull, pNode->isNull);
508,822,807✔
5604
  }
5605
  if (TSDB_CODE_SUCCESS == code) {
508,821,547✔
5606
    code = tjsonAddIntegerToObject(pJson, jkValueUnit, pNode->unit);
508,821,547✔
5607
  }
5608
  if (TSDB_CODE_SUCCESS == code && pNode->translate && !pNode->isNull) {
508,822,696✔
5609
    code = datumToJson(pNode, pJson);
506,802,933✔
5610
  }
5611

5612
  return code;
508,822,807✔
5613
}
5614

5615

5616
static int32_t jsonToDatum(const SJson* pJson, void* pObj) {
13,147,936✔
5617
  SValueNode* pNode = (SValueNode*)pObj;
13,147,936✔
5618

5619
  int32_t code = TSDB_CODE_SUCCESS;
13,147,936✔
5620
  switch (pNode->node.resType.type) {
13,147,936✔
5621
    case TSDB_DATA_TYPE_NULL:
×
5622
      break;
×
5623
    case TSDB_DATA_TYPE_BOOL:
69,538✔
5624
      code = tjsonGetBoolValue(pJson, jkValueDatum, &pNode->datum.b);
69,538✔
5625
      *(bool*)&pNode->typeData = pNode->datum.b;
69,538✔
5626
      break;
69,538✔
5627
    case TSDB_DATA_TYPE_TINYINT:
666,469✔
5628
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
666,469✔
5629
      *(int8_t*)&pNode->typeData = pNode->datum.i;
666,469✔
5630
      break;
666,469✔
5631
    case TSDB_DATA_TYPE_SMALLINT:
42,454✔
5632
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
42,454✔
5633
      *(int16_t*)&pNode->typeData = pNode->datum.i;
42,454✔
5634
      break;
42,454✔
5635
    case TSDB_DATA_TYPE_INT:
1,210,641✔
5636
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
1,210,641✔
5637
      *(int32_t*)&pNode->typeData = pNode->datum.i;
1,210,641✔
5638
      break;
1,210,641✔
5639
    case TSDB_DATA_TYPE_BIGINT:
4,831,520✔
5640
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
4,831,520✔
5641
      *(int64_t*)&pNode->typeData = pNode->datum.i;
4,831,918✔
5642
      break;
4,832,320✔
5643
    case TSDB_DATA_TYPE_TIMESTAMP:
5,031,399✔
5644
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
5,031,399✔
5645
      *(int64_t*)&pNode->typeData = pNode->datum.i;
5,031,719✔
5646
      break;
5,031,559✔
5647
    case TSDB_DATA_TYPE_UTINYINT:
×
5648
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
5649
      *(uint8_t*)&pNode->typeData = pNode->datum.u;
×
5650
      break;
×
5651
    case TSDB_DATA_TYPE_USMALLINT:
×
5652
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
5653
      *(uint16_t*)&pNode->typeData = pNode->datum.u;
×
5654
      break;
×
5655
    case TSDB_DATA_TYPE_UINT:
×
5656
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
5657
      *(uint32_t*)&pNode->typeData = pNode->datum.u;
×
5658
      break;
×
5659
    case TSDB_DATA_TYPE_UBIGINT:
600✔
5660
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
600✔
5661
      *(uint64_t*)&pNode->typeData = pNode->datum.u;
600✔
5662
      break;
600✔
5663
    case TSDB_DATA_TYPE_FLOAT:
8,877✔
5664
      code = tjsonGetDoubleValue(pJson, jkValueDatum, &pNode->datum.d);
8,877✔
5665
      *(float*)&pNode->typeData = pNode->datum.d;
8,877✔
5666
      break;
8,877✔
5667
    case TSDB_DATA_TYPE_DOUBLE:
12,894✔
5668
      code = tjsonGetDoubleValue(pJson, jkValueDatum, &pNode->datum.d);
12,894✔
5669
      *(double*)&pNode->typeData = pNode->datum.d;
12,894✔
5670
      break;
12,894✔
5671
    case TSDB_DATA_TYPE_NCHAR:
1,272,986✔
5672
    case TSDB_DATA_TYPE_VARCHAR:
5673
    case TSDB_DATA_TYPE_VARBINARY:
5674
    case TSDB_DATA_TYPE_GEOMETRY: {
5675
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
1,272,986✔
5676
      if (NULL == pNode->datum.p) {
1,272,986✔
5677
        code = terrno;
×
5678
        break;
×
5679
      }
5680
      varDataSetLen(pNode->datum.p, pNode->node.resType.bytes - VARSTR_HEADER_SIZE);
1,272,986✔
5681
      if (TSDB_DATA_TYPE_NCHAR == pNode->node.resType.type) {
1,272,986✔
5682
        char* buf = taosMemoryCalloc(1, pNode->node.resType.bytes * 2 + VARSTR_HEADER_SIZE + 1);
×
5683
        if (NULL == buf) {
×
5684
          code = terrno;
×
5685
          break;
×
5686
        }
5687
        code = tjsonGetStringValue1(pJson, jkValueDatum, buf, pNode->node.resType.bytes * 2 + VARSTR_HEADER_SIZE + 1);
×
5688
        if (code != TSDB_CODE_SUCCESS) {
×
5689
          taosMemoryFree(buf);
×
5690
          break;
×
5691
        }
5692
        code = taosHexDecode(buf, varDataVal(pNode->datum.p), pNode->node.resType.bytes - VARSTR_HEADER_SIZE);
×
5693
        if (code != TSDB_CODE_SUCCESS) {
×
5694
          taosMemoryFree(buf);
×
5695
          break;
×
5696
        }
5697
        taosMemoryFree(buf);
×
5698
      } else {
5699
        code = tjsonGetStringValue1(pJson, jkValueDatum, varDataVal(pNode->datum.p),
1,272,986✔
5700
                                    pNode->node.resType.bytes + 1 - VARSTR_HEADER_SIZE);
1,272,986✔
5701
        if (code != TSDB_CODE_SUCCESS) {
1,272,986✔
5702
          break;
×
5703
        }
5704
        int32_t actualLen = strnlen(varDataVal(pNode->datum.p), pNode->node.resType.bytes - VARSTR_HEADER_SIZE);
1,272,986✔
5705
        varDataSetLen(pNode->datum.p, actualLen);
1,272,986✔
5706
      }
5707
      break;
1,272,986✔
5708
    }
5709
    case TSDB_DATA_TYPE_JSON: {
×
5710
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes);
×
5711
      if (NULL == pNode->datum.p) {
×
5712
        code = terrno;
×
5713
        break;
×
5714
      }
5715
      char* buf = taosMemoryCalloc(1, pNode->node.resType.bytes * 2 + 1);
×
5716
      if (NULL == buf) {
×
5717
        code = terrno;
×
5718
        break;
×
5719
      }
5720
      code = tjsonGetStringValue1(pJson, jkValueDatum, buf, pNode->node.resType.bytes * 2 + 1);
×
5721
      if (code != TSDB_CODE_SUCCESS) {
×
5722
        taosMemoryFree(buf);
×
5723
        break;
×
5724
      }
5725
      code = taosHexDecode(buf, pNode->datum.p, pNode->node.resType.bytes);
×
5726
      if (code != TSDB_CODE_SUCCESS) {
×
5727
        taosMemoryFree(buf);
×
5728
        break;
×
5729
      }
5730
      taosMemoryFree(buf);
×
5731
      break;
×
5732
    }
5733
    case TSDB_DATA_TYPE_DECIMAL:
×
5734
      break;
×
5735
    case TSDB_DATA_TYPE_BLOB: {
×
5736
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
×
5737
      if (NULL == pNode->datum.p) {
×
5738
        code = terrno;
×
5739
        break;
×
5740
      }
5741
      blobDataSetLen(pNode->datum.p, pNode->node.resType.bytes - BLOBSTR_HEADER_SIZE);
×
5742
      code = tjsonGetStringValue1(pJson, jkValueDatum, blobDataVal(pNode->datum.p),
×
5743
                                  pNode->node.resType.bytes + 1 - BLOBSTR_HEADER_SIZE);
×
5744
      break;
×
5745
    }
5746
      // todo
5747
    default:
×
5748
      break;
×
5749
  }
5750

5751
  return code;
13,147,776✔
5752
}
5753

5754
static int32_t jsonToValueNode(const SJson* pJson, void* pObj) {
14,683,883✔
5755
  SValueNode* pNode = (SValueNode*)pObj;
14,683,883✔
5756

5757
  int32_t code = jsonToExprNode(pJson, pObj);
14,683,883✔
5758
  int32_t literalSize = 0;
14,684,285✔
5759
  if (TSDB_CODE_SUCCESS == code) {
14,684,285✔
5760
    code = tjsonGetIntValue(pJson, jkValueLiteralSize, &literalSize);
14,684,285✔
5761
  }
5762
  if (TSDB_CODE_SUCCESS == code && literalSize > 0) {
14,683,723✔
5763
    code = tjsonDupStringValue(pJson, jkValueLiteral, &pNode->literal);
3,212,407✔
5764
  }
5765
  if (TSDB_CODE_SUCCESS == code) {
14,683,723✔
5766
    code = tjsonGetIntValue(pJson, jkValueFlag, &pNode->flag);
14,683,723✔
5767
  }
5768
  if (TSDB_CODE_SUCCESS == code) {
14,684,125✔
5769
    code = tjsonGetBoolValue(pJson, jkValueTranslate, &pNode->translate);
14,684,125✔
5770
  }
5771
  if (TSDB_CODE_SUCCESS == code) {
14,684,285✔
5772
    code = tjsonGetBoolValue(pJson, jkValueNotReserved, &pNode->notReserved);
14,684,285✔
5773
  }
5774
  if (TSDB_CODE_SUCCESS == code) {
14,684,285✔
5775
    code = tjsonGetBoolValue(pJson, jkValueIsNull, &pNode->isNull);
14,684,285✔
5776
  }
5777
  if (TSDB_CODE_SUCCESS == code) {
14,684,285✔
5778
    code = tjsonGetTinyIntValue(pJson, jkValueUnit, &pNode->unit);
14,684,285✔
5779
  }
5780
  if (TSDB_CODE_SUCCESS == code && pNode->translate && !pNode->isNull) {
14,683,723✔
5781
    code = jsonToDatum(pJson, pNode);
13,147,936✔
5782
  }
5783

5784
  return code;
14,683,965✔
5785
}
5786

5787

5788

5789
static const char* jkRemoteValueValSet = "valSet";
5790
static const char* jkRemoteValueSubQIdx = "subQIdx";
5791

5792
static int32_t remoteValueToJson(const void* pObj, SJson* pJson) {
88,193✔
5793
  const SRemoteValueNode* pNode = (const SRemoteValueNode*)pObj;
88,193✔
5794

5795
  int32_t code = valueNodeToJson(pObj, pJson);
88,193✔
5796
/*
5797
  if (TSDB_CODE_SUCCESS == code) {
5798
    code = tjsonAddBoolToObject(pJson, jkRemoteValueValSet, pNode->valSet);
5799
  }
5800
*/
5801
  if (TSDB_CODE_SUCCESS == code) {
88,193✔
5802
    code = tjsonAddIntegerToObject(pJson, jkRemoteValueSubQIdx, pNode->subQIdx);
88,193✔
5803
  }
5804

5805
  return code;
88,193✔
5806
}
5807

5808

5809
static int32_t jsonToRemoteValue(const SJson* pJson, void* pObj) {
98,940✔
5810
  SRemoteValueNode* pNode = (SRemoteValueNode*)pObj;
98,940✔
5811

5812
  int32_t code = jsonToValueNode(pJson, pObj);
98,940✔
5813
/*
5814
  if (TSDB_CODE_SUCCESS == code) {
5815
    code = tjsonGetBoolValue(pJson, jkRemoteValueValSet, &pNode->valSet);
5816
  }
5817
*/
5818
  if (TSDB_CODE_SUCCESS == code) {
98,940✔
5819
    code = tjsonGetIntValue(pJson, jkRemoteValueSubQIdx, &pNode->subQIdx);
98,940✔
5820
  }
5821

5822
  return code;
98,940✔
5823
}
5824

5825

5826

5827
static const char* jkRemoteValueListFlag = "flag";
5828
static const char* jkRemoteValueListSubQIdx = "subQIdx";
5829

5830
static int32_t remoteValueListToJson(const void* pObj, SJson* pJson) {
179,594✔
5831
  const SRemoteValueListNode* pNode = (const SRemoteValueListNode*)pObj;
179,594✔
5832

5833
  int32_t code = exprNodeToJson(pObj, pJson);
179,594✔
5834
  if (TSDB_CODE_SUCCESS == code) {
179,594✔
5835
    code = tjsonAddIntegerToObject(pJson, jkRemoteValueListFlag, pNode->flag);
179,594✔
5836
  }
5837
  if (TSDB_CODE_SUCCESS == code) {
179,594✔
5838
    code = tjsonAddIntegerToObject(pJson, jkRemoteValueListSubQIdx, pNode->subQIdx);
179,594✔
5839
  }
5840

5841
  return code;
179,594✔
5842
}
5843

5844

5845

5846
static int32_t jsonToRemoteValueList(const SJson* pJson, void* pObj) {
84,258✔
5847
  SRemoteValueListNode* pNode = (SRemoteValueListNode*)pObj;
84,258✔
5848

5849
  int32_t code = jsonToExprNode(pJson, pObj);
84,258✔
5850
  if (TSDB_CODE_SUCCESS == code) {
84,258✔
5851
    code = tjsonGetIntValue(pJson, jkRemoteValueListFlag, &pNode->flag);
84,258✔
5852
  }
5853
  if (TSDB_CODE_SUCCESS == code) {
84,258✔
5854
    code = tjsonGetIntValue(pJson, jkRemoteValueListSubQIdx, &pNode->subQIdx);
84,258✔
5855
  }
5856

5857
  return code;
84,258✔
5858
}
5859

5860
static const char* jkTagValueTagName = "TagName";
5861
static const char* jkTagValueVal = "Val";
5862
static const char* jkTagValueRegexp = "Regexp";
5863
static const char* jkTagValueReplacement = "Replacement";
5864

5865
static int32_t updateTagValueNodeToJson(const void* pObj, SJson* pJson) {
×
5866
  const SUpdateTagValueNode* pNode = (const SUpdateTagValueNode*)pObj;
×
5867

5868
  int32_t code = tjsonAddStringToObject(pJson, jkTagValueTagName, pNode->tagName);
×
5869
  if (TSDB_CODE_SUCCESS != code) {
×
5870
    return code;
×
5871
  }
5872
  if (pNode->pVal != NULL) {
×
5873
    code = tjsonAddObject(pJson, jkTagValueVal, nodeToJson, pNode->pVal);
×
5874
  } else {
5875
    code = tjsonAddStringToObject(pJson, jkTagValueRegexp, pNode->regexp);
×
5876
    if (TSDB_CODE_SUCCESS == code) {
×
5877
      code = tjsonAddStringToObject(pJson, jkTagValueReplacement, pNode->replacement);
×
5878
    }
5879
  }
5880

5881
  return code;
×
5882
}
5883

5884
static int32_t jsonToUpdateTagValueNode(const SJson* pJson, void* pObj) {
×
5885
  SUpdateTagValueNode* pNode = (SUpdateTagValueNode*)pObj;
×
5886

5887
  int32_t code = tjsonGetStringValue(pJson, jkTagValueTagName, pNode->tagName);
×
5888
  if (TSDB_CODE_SUCCESS != code) {
×
5889
    return code;
×
5890
  }
5891

5892
  if (tjsonGetObjectItem(pJson, jkTagValueVal) != NULL) {
×
5893
    code = jsonToNodeObject(pJson, jkTagValueVal, (SNode**)&pNode->pVal);
×
5894
  } else {
5895
    code = tjsonDupStringValue(pJson, jkTagValueRegexp, &pNode->regexp);
×
5896
    if (TSDB_CODE_SUCCESS != code) {
×
5897
      return code;
×
5898
    }
5899
    code = tjsonDupStringValue(pJson, jkTagValueReplacement, &pNode->replacement);
×
5900
  }
5901

5902
  return code;
×
5903
}
5904

5905
static const char* jkRemoteRowIsMinVal = "isMinVal";
5906
static const char* jkRemoteRowValSet = "valueSet";
5907
static const char* jkRemoteRowHasValue = "hasValue";
5908
static const char* jkRemoteRowHasNull = "hasNull";
5909
static const char* jkRemoteRowSubQIdx = "subQIdx";
5910

5911
static int32_t remoteRowToJson(const void* pObj, SJson* pJson) {
6,110✔
5912
  const SRemoteRowNode* pNode = (const SRemoteRowNode*)pObj;
6,110✔
5913

5914
  int32_t code = valueNodeToJson(pObj, pJson);
6,110✔
5915
  if (TSDB_CODE_SUCCESS == code) {
6,110✔
5916
    code = tjsonAddBoolToObject(pJson, jkRemoteRowIsMinVal, pNode->isMinVal);
6,110✔
5917
  }
5918
  if (TSDB_CODE_SUCCESS == code) {
6,110✔
5919
    code = tjsonAddBoolToObject(pJson, jkRemoteRowValSet, pNode->valSet);
6,110✔
5920
  }
5921
  if (TSDB_CODE_SUCCESS == code) {
6,110✔
5922
    code = tjsonAddBoolToObject(pJson, jkRemoteRowHasValue, pNode->hasValue);
6,110✔
5923
  }
5924
  if (TSDB_CODE_SUCCESS == code) {
6,110✔
5925
    code = tjsonAddBoolToObject(pJson, jkRemoteRowHasNull, pNode->hasNull);
6,110✔
5926
  }
5927
  if (TSDB_CODE_SUCCESS == code) {
6,110✔
5928
    code = tjsonAddIntegerToObject(pJson, jkRemoteRowSubQIdx, pNode->subQIdx);
6,110✔
5929
  }
5930

5931
  return code;
6,110✔
5932
}
5933

5934
static int32_t jsonToRemoteRow(const SJson* pJson, void* pObj) {
7,134✔
5935
  SRemoteRowNode* pNode = (SRemoteRowNode*)pObj;
7,134✔
5936

5937
  int32_t code = jsonToValueNode(pJson, pObj);
7,134✔
5938
  if (TSDB_CODE_SUCCESS == code) {
7,134✔
5939
    code = tjsonGetBoolValue(pJson, jkRemoteRowIsMinVal, &pNode->isMinVal);
7,134✔
5940
  }
5941
  if (TSDB_CODE_SUCCESS == code) {
7,134✔
5942
    code = tjsonGetBoolValue(pJson, jkRemoteRowValSet, &pNode->valSet);
7,134✔
5943
  }
5944
  if (TSDB_CODE_SUCCESS == code) {
7,134✔
5945
    code = tjsonGetBoolValue(pJson, jkRemoteRowHasValue, &pNode->hasValue);
7,134✔
5946
  }
5947
  if (TSDB_CODE_SUCCESS == code) {
7,134✔
5948
    code = tjsonGetBoolValue(pJson, jkRemoteRowHasNull, &pNode->hasNull);
7,134✔
5949
  }
5950
  if (TSDB_CODE_SUCCESS == code) {
7,134✔
5951
    code = tjsonGetIntValue(pJson, jkRemoteRowSubQIdx, &pNode->subQIdx);
7,134✔
5952
  }
5953

5954
  return code;
7,134✔
5955
}
5956

5957

5958
static int32_t remoteZeroRowsToJson(const void* pObj, SJson* pJson) {
4,448✔
5959
  return remoteValueToJson(pObj, pJson);
4,448✔
5960
}
5961

5962
static int32_t jsonToRemoteZeroRows(const SJson* pJson, void* pObj) {
2,920✔
5963
  return jsonToRemoteValue(pJson, pObj);
2,920✔
5964
}
5965
static const char* jkAlterTableUpdateTagValClauseDbName = "DbName";
5966
static const char* jkAlterTableUpdateTagValClauseTableName = "TableName";
5967
static const char* jkAlterTableUpdateTagValClauseList = "Tags";
5968

5969
static int32_t alterTableUpdateTagValClauseToJson(const void* pObj, SJson* pJson) {
×
5970
  const SAlterTableUpdateTagValClause* pNode = (const SAlterTableUpdateTagValClause*)pObj;
×
5971

5972
  int32_t code = tjsonAddStringToObject(pJson, jkAlterTableUpdateTagValClauseDbName, pNode->dbName);
×
5973
  if (TSDB_CODE_SUCCESS == code) {
×
5974
    code = tjsonAddStringToObject(pJson, jkAlterTableUpdateTagValClauseTableName, pNode->tableName);
×
5975
  }
5976
  if (TSDB_CODE_SUCCESS == code) {
×
5977
    code = nodeListToJson(pJson, jkAlterTableUpdateTagValClauseList, pNode->pTagList);
×
5978
  }
5979

5980
  return code;
×
5981
}
5982

5983
static int32_t jsonToAlterTableUpdateTagValClause(const SJson* pJson, void* pObj) {
×
5984
  SAlterTableUpdateTagValClause* pNode = (SAlterTableUpdateTagValClause*)pObj;
×
5985

5986
  int32_t code = tjsonGetStringValue(pJson, jkAlterTableUpdateTagValClauseDbName, pNode->dbName);
×
5987
  if (TSDB_CODE_SUCCESS == code) {
×
5988
    code = tjsonGetStringValue(pJson, jkAlterTableUpdateTagValClauseTableName, pNode->tableName);
×
5989
  }
5990
  if (TSDB_CODE_SUCCESS == code) {
×
5991
    code = jsonToNodeList(pJson, jkAlterTableUpdateTagValClauseList, &pNode->pTagList);
×
5992
  }
5993

5994
  return code;
×
5995
}
5996

5997
static const char* jkRemoteTableFlag = "flag";
5998
static const char* jkRemoteTableResCols = "resCols";
5999
static const char* jkRemoteTableSubQIdx = "subQIdx";
6000

6001
static int32_t remoteTableToJson(const void* pObj, SJson* pJson) {
×
6002
  const SRemoteTableNode* pNode = (const SRemoteTableNode*)pObj;
×
6003

6004
  int32_t code = tjsonAddIntegerToObject(pJson, jkRemoteTableFlag, pNode->flag);
×
6005
  if (TSDB_CODE_SUCCESS == code) {
×
6006
    code = tjsonAddIntegerToObject(pJson, jkRemoteTableResCols, pNode->resCols);
×
6007
  }
6008
  if (TSDB_CODE_SUCCESS == code) {
×
6009
    code = tjsonAddIntegerToObject(pJson, jkRemoteTableSubQIdx, pNode->subQIdx);
×
6010
  }
6011

6012
  return code;
×
6013
}
6014

6015
static int32_t jsonToRemoteTable(const SJson* pJson, void* pObj) {
×
6016
  SRemoteTableNode* pNode = (SRemoteTableNode*)pObj;
×
6017

6018
  int32_t code = tjsonGetIntValue(pJson, jkRemoteTableFlag, &pNode->flag);
×
6019
  if (TSDB_CODE_SUCCESS == code) {
×
6020
    code = tjsonGetIntValue(pJson, jkRemoteTableResCols, &pNode->resCols);
×
6021
  }
6022
  if (TSDB_CODE_SUCCESS == code) {
×
6023
    code = tjsonGetIntValue(pJson, jkRemoteTableSubQIdx, &pNode->subQIdx);
×
6024
  }
6025

6026
  return code;
×
6027
}
6028

6029

6030
static const char* jkOperatorType = "OpType";
6031
static const char* jkOperatorFlag = "OpFlag";
6032
static const char* jkOperatorLeft = "Left";
6033
static const char* jkOperatorRight = "Right";
6034

6035
static int32_t operatorNodeToJson(const void* pObj, SJson* pJson) {
291,331,387✔
6036
  const SOperatorNode* pNode = (const SOperatorNode*)pObj;
291,331,387✔
6037

6038
  int32_t code = exprNodeToJson(pObj, pJson);
291,331,387✔
6039
  if (TSDB_CODE_SUCCESS == code) {
291,331,970✔
6040
    code = tjsonAddIntegerToObject(pJson, jkOperatorType, pNode->opType);
291,331,970✔
6041
  }
6042
  if (TSDB_CODE_SUCCESS == code) {
291,331,387✔
6043
    code = tjsonAddIntegerToObject(pJson, jkOperatorFlag, pNode->flag);
291,331,387✔
6044
  }
6045
  if (TSDB_CODE_SUCCESS == code) {
291,331,970✔
6046
    code = tjsonAddObject(pJson, jkOperatorLeft, nodeToJson, pNode->pLeft);
291,331,970✔
6047
  }
6048
  if (TSDB_CODE_SUCCESS == code) {
291,330,804✔
6049
    code = tjsonAddObject(pJson, jkOperatorRight, nodeToJson, pNode->pRight);
291,330,804✔
6050
  }
6051

6052
  return code;
291,330,804✔
6053
}
6054

6055
static int32_t jsonToOperatorNode(const SJson* pJson, void* pObj) {
5,450,023✔
6056
  SOperatorNode* pNode = (SOperatorNode*)pObj;
5,450,023✔
6057

6058
  int32_t code = jsonToExprNode(pJson, pObj);
5,450,023✔
6059
  if (TSDB_CODE_SUCCESS == code) {
5,449,962✔
6060
    tjsonGetNumberValue(pJson, jkOperatorType, pNode->opType, code);
5,449,962✔
6061
  }
6062
  if (TSDB_CODE_SUCCESS == code) {
5,449,802✔
6063
    tjsonGetNumberValue(pJson, jkOperatorFlag, pNode->flag, code);
5,449,802✔
6064
  }
6065
  if (TSDB_CODE_SUCCESS == code) {
5,450,183✔
6066
    code = jsonToNodeObject(pJson, jkOperatorLeft, &pNode->pLeft);
5,450,183✔
6067
  }
6068
  if (TSDB_CODE_SUCCESS == code) {
5,449,781✔
6069
    code = jsonToNodeObject(pJson, jkOperatorRight, &pNode->pRight);
5,449,781✔
6070
  }
6071

6072
  return code;
5,450,183✔
6073
}
6074

6075
static const char* jkLogicCondType = "CondType";
6076
static const char* jkLogicCondParameters = "Parameters";
6077

6078
static int32_t logicConditionNodeToJson(const void* pObj, SJson* pJson) {
70,819,523✔
6079
  const SLogicConditionNode* pNode = (const SLogicConditionNode*)pObj;
70,819,523✔
6080

6081
  int32_t code = exprNodeToJson(pObj, pJson);
70,819,523✔
6082
  if (TSDB_CODE_SUCCESS == code) {
70,819,523✔
6083
    code = tjsonAddIntegerToObject(pJson, jkLogicCondType, pNode->condType);
70,819,523✔
6084
  }
6085
  if (TSDB_CODE_SUCCESS == code) {
70,819,523✔
6086
    code = nodeListToJson(pJson, jkLogicCondParameters, pNode->pParameterList);
70,819,523✔
6087
  }
6088

6089
  return code;
70,819,523✔
6090
}
6091

6092
static int32_t jsonToLogicConditionNode(const SJson* pJson, void* pObj) {
334,555✔
6093
  SLogicConditionNode* pNode = (SLogicConditionNode*)pObj;
334,555✔
6094

6095
  int32_t code = jsonToExprNode(pJson, pObj);
334,555✔
6096
  if (TSDB_CODE_SUCCESS == code) {
334,555✔
6097
    tjsonGetNumberValue(pJson, jkLogicCondType, pNode->condType, code);
334,555✔
6098
  }
6099
  if (TSDB_CODE_SUCCESS == code) {
334,555✔
6100
    code = jsonToNodeList(pJson, jkLogicCondParameters, &pNode->pParameterList);
334,555✔
6101
  }
6102

6103
  return code;
334,555✔
6104
}
6105

6106
static const char* jkFunctionName = "Name";
6107
static const char* jkFunctionId = "Id";
6108
static const char* jkFunctionType = "Type";
6109
static const char* jkFunctionParameter = "Parameters";
6110
static const char* jkFunctionUdfBufSize = "UdfBufSize";
6111
static const char* jkFunctionHasPk = "HasPk";
6112
static const char* jkFunctionPkBytes = "PkBytes";
6113
static const char* jkFunctionIsMergeFunc = "IsMergeFunc";
6114
static const char* jkFunctionMergeFuncOf = "MergeFuncOf";
6115
static const char* jkFunctionTrimType = "TrimType";
6116
static const char* jkFunctionSrcFuncInputDT = "SrcFuncInputDataType";
6117

6118
static int32_t functionNodeToJson(const void* pObj, SJson* pJson) {
638,032,297✔
6119
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
638,032,297✔
6120

6121
  int32_t code = exprNodeToJson(pObj, pJson);
638,032,297✔
6122
  if (TSDB_CODE_SUCCESS == code) {
638,033,713✔
6123
    code = tjsonAddStringToObject(pJson, jkFunctionName, pNode->functionName);
638,033,713✔
6124
  }
6125
  if (TSDB_CODE_SUCCESS == code) {
638,032,769✔
6126
    code = tjsonAddIntegerToObject(pJson, jkFunctionId, pNode->funcId);
638,032,769✔
6127
  }
6128
  if (TSDB_CODE_SUCCESS == code) {
638,033,713✔
6129
    code = tjsonAddIntegerToObject(pJson, jkFunctionType, pNode->funcType);
638,033,713✔
6130
  }
6131
  if (TSDB_CODE_SUCCESS == code) {
638,032,769✔
6132
    code = nodeListToJson(pJson, jkFunctionParameter, pNode->pParameterList);
638,032,769✔
6133
  }
6134
  if (TSDB_CODE_SUCCESS == code) {
638,033,241✔
6135
    code = tjsonAddIntegerToObject(pJson, jkFunctionUdfBufSize, pNode->udfBufSize);
638,033,241✔
6136
  }
6137
  if (TSDB_CODE_SUCCESS == code) {
638,033,241✔
6138
    code = tjsonAddBoolToObject(pJson, jkFunctionHasPk, pNode->hasPk);
638,033,241✔
6139
  }
6140
  if (TSDB_CODE_SUCCESS == code) {
638,031,731✔
6141
    code = tjsonAddIntegerToObject(pJson, jkFunctionPkBytes, pNode->pkBytes);
638,031,731✔
6142
  }
6143
  if (TSDB_CODE_SUCCESS == code) {
638,032,203✔
6144
    code = tjsonAddBoolToObject(pJson, jkFunctionIsMergeFunc, pNode->hasOriginalFunc);
638,032,203✔
6145
  }
6146
  if (TSDB_CODE_SUCCESS == code) {
638,033,713✔
6147
    code = tjsonAddIntegerToObject(pJson, jkFunctionMergeFuncOf, pNode->originalFuncId);
638,033,713✔
6148
  }
6149
  if (TSDB_CODE_SUCCESS == code) {
638,033,713✔
6150
    code = tjsonAddIntegerToObject(pJson, jkFunctionTrimType, pNode->trimType);
638,033,713✔
6151
  }
6152
  if (TSDB_CODE_SUCCESS == code) {
638,032,675✔
6153
    code = tjsonAddObject(pJson, jkFunctionSrcFuncInputDT, dataTypeToJson, &pNode->srcFuncInputType);
638,032,675✔
6154
  }
6155
  return code;
638,033,241✔
6156
}
6157

6158
static int32_t jsonToFunctionNode(const SJson* pJson, void* pObj) {
14,346,180✔
6159
  SFunctionNode* pNode = (SFunctionNode*)pObj;
14,346,180✔
6160

6161
  int32_t code = jsonToExprNode(pJson, pObj);
14,346,180✔
6162
  if (TSDB_CODE_SUCCESS == code) {
14,346,742✔
6163
    code = tjsonGetStringValue1(pJson, jkFunctionName, pNode->functionName, sizeof(pNode->functionName));
14,346,742✔
6164
  }
6165
  if (TSDB_CODE_SUCCESS == code) {
14,346,742✔
6166
    code = tjsonGetIntValue(pJson, jkFunctionId, &pNode->funcId);
14,346,742✔
6167
  }
6168
  if (TSDB_CODE_SUCCESS == code) {
14,346,252✔
6169
    code = tjsonGetIntValue(pJson, jkFunctionType, &pNode->funcType);
14,346,252✔
6170
  }
6171
  if (TSDB_CODE_SUCCESS == code) {
14,346,742✔
6172
    code = jsonToNodeList(pJson, jkFunctionParameter, &pNode->pParameterList);
14,346,742✔
6173
  }
6174
  if (TSDB_CODE_SUCCESS == code) {
14,346,742✔
6175
    code = tjsonGetIntValue(pJson, jkFunctionUdfBufSize, &pNode->udfBufSize);
14,346,742✔
6176
  }
6177
  if (TSDB_CODE_SUCCESS == code) {
14,346,742✔
6178
    code = tjsonGetBoolValue(pJson, jkFunctionHasPk, &pNode->hasPk);
14,346,742✔
6179
  }
6180
  if (TSDB_CODE_SUCCESS == code) {
14,346,742✔
6181
    code = tjsonGetIntValue(pJson, jkFunctionPkBytes, &pNode->pkBytes);
14,346,742✔
6182
  }
6183
  if (TSDB_CODE_SUCCESS == code) {
14,346,742✔
6184
    code = tjsonGetBoolValue(pJson, jkFunctionIsMergeFunc, &pNode->hasOriginalFunc);
14,346,742✔
6185
  }
6186
  if (TSDB_CODE_SUCCESS == code) {
14,346,742✔
6187
    code = tjsonGetIntValue(pJson, jkFunctionMergeFuncOf, &pNode->originalFuncId);
14,346,742✔
6188
  }
6189
  if (TSDB_CODE_SUCCESS == code) {
14,346,742✔
6190
    tjsonGetNumberValue(pJson, jkFunctionTrimType, pNode->trimType, code);
14,346,742✔
6191
  }
6192
  if (TSDB_CODE_SUCCESS == code) {
14,346,742✔
6193
    code = tjsonToObject(pJson, jkFunctionSrcFuncInputDT, jsonToDataType, &pNode->srcFuncInputType);
14,346,742✔
6194
  }
6195

6196
  return code;
14,346,742✔
6197
}
6198

6199
static const char* jkTableDbName = "DbName";
6200
static const char* jkTableTableName = "tableName";
6201
static const char* jkTableTableAlias = "tableAlias";
6202

6203
static int32_t tableNodeToJson(const void* pObj, SJson* pJson) {
555,315✔
6204
  const STableNode* pNode = (const STableNode*)pObj;
555,315✔
6205

6206
  int32_t code = exprNodeToJson(pObj, pJson);
555,315✔
6207
  if (TSDB_CODE_SUCCESS == code) {
555,315✔
6208
    code = tjsonAddStringToObject(pJson, jkTableDbName, pNode->dbName);
555,315✔
6209
  }
6210
  if (TSDB_CODE_SUCCESS == code) {
555,315✔
6211
    code = tjsonAddStringToObject(pJson, jkTableTableName, pNode->tableName);
555,315✔
6212
  }
6213
  if (TSDB_CODE_SUCCESS == code) {
555,315✔
6214
    code = tjsonAddStringToObject(pJson, jkTableTableAlias, pNode->tableAlias);
555,315✔
6215
  }
6216

6217
  return code;
555,315✔
6218
}
6219

6220
static int32_t jsonToTableNode(const SJson* pJson, void* pObj) {
452,618✔
6221
  STableNode* pNode = (STableNode*)pObj;
452,618✔
6222

6223
  int32_t code = jsonToExprNode(pJson, pObj);
452,618✔
6224
  if (TSDB_CODE_SUCCESS == code) {
452,618✔
6225
    code = tjsonGetStringValue1(pJson, jkTableDbName, pNode->dbName, sizeof(pNode->dbName));
452,618✔
6226
  }
6227
  if (TSDB_CODE_SUCCESS == code) {
452,618✔
6228
    code = tjsonGetStringValue1(pJson, jkTableTableName, pNode->tableName, sizeof(pNode->tableName));
452,618✔
6229
  }
6230
  if (TSDB_CODE_SUCCESS == code) {
452,618✔
6231
    code = tjsonGetStringValue1(pJson, jkTableTableAlias, pNode->tableAlias, sizeof(pNode->tableAlias));
452,618✔
6232
  }
6233

6234
  return code;
452,618✔
6235
}
6236

6237
static const char* jkTableIndexInfoIntervalUnit = "IntervalUnit";
6238
static const char* jkTableIndexInfoSlidingUnit = "SlidingUnit";
6239
static const char* jkTableIndexInfoInterval = "Interval";
6240
static const char* jkTableIndexInfoOffset = "Offset";
6241
static const char* jkTableIndexInfoSliding = "Sliding";
6242
static const char* jkTableIndexInfoDstTbUid = "DstTbUid";
6243
static const char* jkTableIndexInfoDstVgId = "DstVgId";
6244
static const char* jkTableIndexInfoEpSet = "EpSet";
6245
static const char* jkTableIndexInfoExpr = "Expr";
6246

6247
static int32_t tableIndexInfoToJson(const void* pObj, SJson* pJson) {
×
6248
  const STableIndexInfo* pNode = (const STableIndexInfo*)pObj;
×
6249

6250
  int32_t code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoIntervalUnit, pNode->intervalUnit);
×
6251
  if (TSDB_CODE_SUCCESS == code) {
×
6252
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoSlidingUnit, pNode->slidingUnit);
×
6253
  }
6254
  if (TSDB_CODE_SUCCESS == code) {
×
6255
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoInterval, pNode->interval);
×
6256
  }
6257
  if (TSDB_CODE_SUCCESS == code) {
×
6258
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoOffset, pNode->offset);
×
6259
  }
6260
  if (TSDB_CODE_SUCCESS == code) {
×
6261
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoSliding, pNode->sliding);
×
6262
  }
6263
  if (TSDB_CODE_SUCCESS == code) {
×
6264
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoDstTbUid, pNode->dstTbUid);
×
6265
  }
6266
  if (TSDB_CODE_SUCCESS == code) {
×
6267
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoDstVgId, pNode->dstVgId);
×
6268
  }
6269
  if (TSDB_CODE_SUCCESS == code) {
×
6270
    code = tjsonAddObject(pJson, jkTableIndexInfoEpSet, epSetToJson, &pNode->epSet);
×
6271
  }
6272
  if (TSDB_CODE_SUCCESS == code) {
×
6273
    code = tjsonAddStringToObject(pJson, jkTableIndexInfoExpr, pNode->expr);
×
6274
  }
6275

6276
  return code;
×
6277
}
6278

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

6282
  int32_t code = tjsonGetTinyIntValue(pJson, jkTableIndexInfoIntervalUnit, &pNode->intervalUnit);
×
6283
  if (TSDB_CODE_SUCCESS == code) {
×
6284
    code = tjsonGetTinyIntValue(pJson, jkTableIndexInfoSlidingUnit, &pNode->slidingUnit);
×
6285
  }
6286
  if (TSDB_CODE_SUCCESS == code) {
×
6287
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoInterval, &pNode->interval);
×
6288
  }
6289
  if (TSDB_CODE_SUCCESS == code) {
×
6290
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoOffset, &pNode->offset);
×
6291
  }
6292
  if (TSDB_CODE_SUCCESS == code) {
×
6293
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoSliding, &pNode->sliding);
×
6294
  }
6295
  if (TSDB_CODE_SUCCESS == code) {
×
6296
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoDstTbUid, &pNode->dstTbUid);
×
6297
  }
6298
  if (TSDB_CODE_SUCCESS == code) {
×
6299
    code = tjsonGetIntValue(pJson, jkTableIndexInfoDstVgId, &pNode->dstVgId);
×
6300
  }
6301
  if (TSDB_CODE_SUCCESS == code) {
×
6302
    code = tjsonToObject(pJson, jkTableIndexInfoEpSet, jsonToEpSet, &pNode->epSet);
×
6303
  }
6304
  if (TSDB_CODE_SUCCESS == code) {
×
6305
    code = tjsonDupStringValue(pJson, jkTableIndexInfoExpr, &pNode->expr);
×
6306
  }
6307

6308
  return code;
×
6309
}
6310

6311
static const char* jkRealTableMetaSize = "MetaSize";
6312
static const char* jkRealTableMeta = "Meta";
6313
static const char* jkRealTableVgroupsInfoSize = "VgroupsInfoSize";
6314
static const char* jkRealTableVgroupsInfo = "VgroupsInfo";
6315
static const char* jkRealTableSmaIndexes = "SmaIndexes";
6316

6317
static int32_t realTableNodeToJson(const void* pObj, SJson* pJson) {
516,587✔
6318
  const SRealTableNode* pNode = (const SRealTableNode*)pObj;
516,587✔
6319

6320
  int32_t code = tableNodeToJson(pObj, pJson);
516,587✔
6321
  if (TSDB_CODE_SUCCESS == code) {
516,587✔
6322
    code = tjsonAddIntegerToObject(pJson, jkRealTableMetaSize, TABLE_META_FULL_SIZE(pNode->pMeta));
516,587✔
6323
  }
6324
  if (TSDB_CODE_SUCCESS == code) {
516,587✔
6325
    code = tjsonAddObject(pJson, jkRealTableMeta, tableMetaToJson, pNode->pMeta);
516,587✔
6326
  }
6327
  if (TSDB_CODE_SUCCESS == code) {
516,587✔
6328
    code = tjsonAddIntegerToObject(pJson, jkRealTableVgroupsInfoSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
516,587✔
6329
  }
6330
  if (TSDB_CODE_SUCCESS == code) {
516,587✔
6331
    code = tjsonAddObject(pJson, jkRealTableVgroupsInfo, vgroupsInfoToJson, pNode->pVgroupList);
516,587✔
6332
  }
6333
  if (TSDB_CODE_SUCCESS == code) {
516,587✔
6334
    code = tjsonAddTArray(pJson, jkRealTableSmaIndexes, tableIndexInfoToJson, pNode->pSmaIndexes);
516,587✔
6335
  }
6336

6337
  return code;
516,587✔
6338
}
6339

6340
static int32_t jsonToRealTableNode(const SJson* pJson, void* pObj) {
426,990✔
6341
  SRealTableNode* pNode = (SRealTableNode*)pObj;
426,990✔
6342

6343
  int32_t objSize = 0;
426,990✔
6344
  int32_t code = jsonToTableNode(pJson, pObj);
426,990✔
6345
  if (TSDB_CODE_SUCCESS == code) {
426,990✔
6346
    code = tjsonGetIntValue(pJson, jkRealTableMetaSize, &objSize);
426,990✔
6347
  }
6348
  if (TSDB_CODE_SUCCESS == code) {
426,990✔
6349
    code = tjsonMakeObject(pJson, jkRealTableMeta, jsonToTableMeta, (void**)&pNode->pMeta, objSize);
426,990✔
6350
  }
6351
  if (TSDB_CODE_SUCCESS == code) {
426,990✔
6352
    code = tjsonGetIntValue(pJson, jkRealTableVgroupsInfoSize, &objSize);
426,990✔
6353
  }
6354
  if (TSDB_CODE_SUCCESS == code) {
426,990✔
6355
    code = tjsonMakeObject(pJson, jkRealTableVgroupsInfo, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
426,990✔
6356
  }
6357
  if (TSDB_CODE_SUCCESS == code) {
426,990✔
6358
    code =
6359
        tjsonToTArray(pJson, jkRealTableSmaIndexes, jsonToTableIndexInfo, &pNode->pSmaIndexes, sizeof(STableIndexInfo));
426,990✔
6360
  }
6361

6362
  return code;
426,990✔
6363
}
6364

6365
static const char* jkTempTableSubquery = "Subquery";
6366

6367
static int32_t tempTableNodeToJson(const void* pObj, SJson* pJson) {
26,228✔
6368
  const STempTableNode* pNode = (const STempTableNode*)pObj;
26,228✔
6369

6370
  int32_t code = tableNodeToJson(pObj, pJson);
26,228✔
6371
  if (TSDB_CODE_SUCCESS == code) {
26,228✔
6372
    code = tjsonAddObject(pJson, jkTempTableSubquery, nodeToJson, pNode->pSubquery);
26,228✔
6373
  }
6374

6375
  return code;
26,228✔
6376
}
6377

6378
static int32_t jsonToTempTableNode(const SJson* pJson, void* pObj) {
18,228✔
6379
  STempTableNode* pNode = (STempTableNode*)pObj;
18,228✔
6380

6381
  int32_t code = jsonToTableNode(pJson, pObj);
18,228✔
6382
  if (TSDB_CODE_SUCCESS == code) {
18,228✔
6383
    code = jsonToNodeObject(pJson, jkTempTableSubquery, &pNode->pSubquery);
18,228✔
6384
  }
6385

6386
  return code;
18,228✔
6387
}
6388

6389
static const char* jkJoinTableJoinType = "JoinType";
6390
static const char* jkJoinTableSubType = "SubType";
6391
static const char* jkJoinTableLeft = "Left";
6392
static const char* jkJoinTableRight = "Right";
6393
static const char* jkJoinTableOnCond = "OnCond";
6394

6395
static int32_t joinTableNodeToJson(const void* pObj, SJson* pJson) {
11,800✔
6396
  const SJoinTableNode* pNode = (const SJoinTableNode*)pObj;
11,800✔
6397

6398
  int32_t code = tableNodeToJson(pObj, pJson);
11,800✔
6399
  if (TSDB_CODE_SUCCESS == code) {
11,800✔
6400
    code = tjsonAddIntegerToObject(pJson, jkJoinTableJoinType, pNode->joinType);
11,800✔
6401
  }
6402
  if (TSDB_CODE_SUCCESS == code) {
11,800✔
6403
    code = tjsonAddIntegerToObject(pJson, jkJoinTableSubType, pNode->subType);
11,800✔
6404
  }
6405
  if (TSDB_CODE_SUCCESS == code) {
11,800✔
6406
    code = tjsonAddObject(pJson, jkJoinTableLeft, nodeToJson, pNode->pLeft);
11,800✔
6407
  }
6408
  if (TSDB_CODE_SUCCESS == code) {
11,800✔
6409
    code = tjsonAddObject(pJson, jkJoinTableRight, nodeToJson, pNode->pRight);
11,800✔
6410
  }
6411
  if (TSDB_CODE_SUCCESS == code) {
11,800✔
6412
    code = tjsonAddObject(pJson, jkJoinTableOnCond, nodeToJson, pNode->pOnCond);
11,800✔
6413
  }
6414

6415
  return code;
11,800✔
6416
}
6417

6418
static int32_t jsonToJoinTableNode(const SJson* pJson, void* pObj) {
7,400✔
6419
  SJoinTableNode* pNode = (SJoinTableNode*)pObj;
7,400✔
6420

6421
  int32_t code = jsonToTableNode(pJson, pObj);
7,400✔
6422
  if (TSDB_CODE_SUCCESS == code) {
7,400✔
6423
    tjsonGetNumberValue(pJson, jkJoinTableJoinType, pNode->joinType, code);
7,400✔
6424
  }
6425
  if (TSDB_CODE_SUCCESS == code) {
7,400✔
6426
    tjsonGetNumberValue(pJson, jkJoinTableSubType, pNode->subType, code);
7,400✔
6427
  }
6428
  if (TSDB_CODE_SUCCESS == code) {
7,400✔
6429
    code = jsonToNodeObject(pJson, jkJoinTableLeft, &pNode->pLeft);
7,400✔
6430
  }
6431
  if (TSDB_CODE_SUCCESS == code) {
7,400✔
6432
    code = jsonToNodeObject(pJson, jkJoinTableRight, &pNode->pRight);
7,400✔
6433
  }
6434
  if (TSDB_CODE_SUCCESS == code) {
7,400✔
6435
    code = jsonToNodeObject(pJson, jkJoinTableOnCond, &pNode->pOnCond);
7,400✔
6436
  }
6437

6438
  return code;
7,400✔
6439
}
6440

6441
static const char* jkVirtualTableMetaSize = "MetaSize";
6442
static const char* jkVirtuaTableMeta = "Meta";
6443
static const char* jkVirtuaTableVgroupsInfoSize = "VgroupsInfoSize";
6444
static const char* jkVirtuaTableVgroupsInfo = "VgroupsInfo";
6445
static const char* jkVirtuaTableRefTables = "RefTables";
6446

6447
static int32_t virtualTableNodeToJson(const void* pObj, SJson* pJson) {
×
6448
  const SVirtualTableNode* pNode = (const SVirtualTableNode*)pObj;
×
6449

6450
  int32_t code = tableNodeToJson(pObj, pJson);
×
6451
  if (TSDB_CODE_SUCCESS == code) {
×
6452
    code = tjsonAddIntegerToObject(pJson, jkVirtualTableMetaSize, TABLE_META_FULL_SIZE(pNode->pMeta));
×
6453
  }
6454
  if (TSDB_CODE_SUCCESS == code) {
×
6455
    code = tjsonAddObject(pJson, jkVirtuaTableMeta, tableMetaToJson, pNode->pMeta);
×
6456
  }
6457
  if (TSDB_CODE_SUCCESS == code) {
×
6458
    code = tjsonAddIntegerToObject(pJson, jkVirtuaTableVgroupsInfoSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
×
6459
  }
6460
  if (TSDB_CODE_SUCCESS == code) {
×
6461
    code = tjsonAddObject(pJson, jkVirtuaTableVgroupsInfo, vgroupsInfoToJson, pNode->pVgroupList);
×
6462
  }
6463
  if (TSDB_CODE_SUCCESS == code) {
×
6464
    code = nodeListToJson(pJson, jkVirtuaTableRefTables, pNode->refTables);
×
6465
  }
6466

6467
  return code;
×
6468
}
6469

6470
static int32_t jsonToVirtualTableNode(const SJson* pJson, void* pObj) {
×
6471
  SVirtualTableNode* pNode = (SVirtualTableNode*)pObj;
×
6472

6473
  int32_t objSize = 0;
×
6474
  int32_t code = jsonToTableNode(pJson, pObj);
×
6475
  if (TSDB_CODE_SUCCESS == code) {
×
6476
    code = tjsonGetIntValue(pJson, jkVirtualTableMetaSize, &objSize);
×
6477
  }
6478
  if (TSDB_CODE_SUCCESS == code) {
×
6479
    code = tjsonMakeObject(pJson, jkVirtuaTableMeta, jsonToTableMeta, (void**)&pNode->pMeta, objSize);
×
6480
  }
6481
  if (TSDB_CODE_SUCCESS == code) {
×
6482
    code = tjsonGetIntValue(pJson, jkVirtuaTableVgroupsInfoSize, &objSize);
×
6483
  }
6484
  if (TSDB_CODE_SUCCESS == code) {
×
6485
    code = tjsonMakeObject(pJson, jkVirtuaTableVgroupsInfo, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
×
6486
  }
6487
  if (TSDB_CODE_SUCCESS == code) {
×
6488
    code = jsonToNodeList(pJson, jkVirtuaTableRefTables, &pNode->refTables);
×
6489
  }
6490

6491
  return code;
×
6492
}
6493

6494
static const char* jkPlaceHolderTableMetaSize = "MetaSize";
6495
static const char* jkPlaceHolderTableMeta = "Meta";
6496
static const char* jkPlaceHolderTableVgroupsInfoSize = "VgroupsInfoSize";
6497
static const char* jkPlaceHolderTableVgroupsInfo = "VgroupsInfo";
6498
static const char* jkPlaceHolderTablePlaceholderType = "PlaceHolderType";
6499

6500
static int32_t placeHolderTableNodeToJson(const void* pObj, SJson* pJson) {
700✔
6501
  const SPlaceHolderTableNode* pNode = (const SPlaceHolderTableNode*)pObj;
700✔
6502

6503
  int32_t code = tableNodeToJson(pObj, pJson);
700✔
6504
  if (TSDB_CODE_SUCCESS == code) {
700✔
6505
    code = tjsonAddIntegerToObject(pJson, jkPlaceHolderTableMetaSize, TABLE_META_FULL_SIZE(pNode->pMeta));
700✔
6506
  }
6507
  if (TSDB_CODE_SUCCESS == code) {
700✔
6508
    code = tjsonAddObject(pJson, jkPlaceHolderTableMeta, tableMetaToJson, pNode->pMeta);
700✔
6509
  }
6510
  if (TSDB_CODE_SUCCESS == code) {
700✔
6511
    code = tjsonAddIntegerToObject(pJson, jkPlaceHolderTableVgroupsInfoSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
700✔
6512
  }
6513
  if (TSDB_CODE_SUCCESS == code) {
700✔
6514
    code = tjsonAddObject(pJson, jkPlaceHolderTableVgroupsInfo, vgroupsInfoToJson, pNode->pVgroupList);
700✔
6515
  }
6516
  if (TSDB_CODE_SUCCESS == code) {
700✔
6517
    code = tjsonAddIntegerToObject(pJson, jkPlaceHolderTablePlaceholderType, pNode->placeholderType);
700✔
6518
  }
6519
  return code;
700✔
6520
}
6521

6522
static int32_t jsonToPlaceHolderTableNode(const SJson* pJson, void* pObj) {
×
6523
  SPlaceHolderTableNode* pNode = (SPlaceHolderTableNode*)pObj;
×
6524
  int32_t                code = jsonToTableNode(pJson, pObj);
×
6525
  int32_t                objSize = 0;
×
6526
  if (TSDB_CODE_SUCCESS == code) {
×
6527
    code = tjsonGetIntValue(pJson, jkPlaceHolderTableMetaSize, &objSize);
×
6528
  }
6529
  if (TSDB_CODE_SUCCESS == code) {
×
6530
    code = tjsonMakeObject(pJson, jkPlaceHolderTableMeta, jsonToTableMeta, (void**)&pNode->pMeta, objSize);
×
6531
  }
6532
  if (TSDB_CODE_SUCCESS == code) {
×
6533
    code = tjsonGetIntValue(pJson, jkPlaceHolderTableVgroupsInfoSize, &objSize);
×
6534
  }
6535
  if (TSDB_CODE_SUCCESS == code) {
×
6536
    code =
6537
        tjsonMakeObject(pJson, jkPlaceHolderTableVgroupsInfo, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
×
6538
  }
6539
  if (TSDB_CODE_SUCCESS == code) {
×
6540
    tjsonGetNumberValue(pJson, jkPlaceHolderTablePlaceholderType, pNode->placeholderType, code);
×
6541
  }
6542
  return code;
×
6543
}
6544

6545
static const char* jkSlidingWindowOffset = "Offset";
6546
static const char* jkSlidingWindowSlidingVal = "SlidingVal";
6547

6548
static int32_t slidingWindowNodeToJson(const void* pObj, SJson* pJson) {
×
6549
  const SSlidingWindowNode* pNode = (const SSlidingWindowNode*)pObj;
×
6550
  int32_t                   code = tjsonAddObject(pJson, jkSlidingWindowOffset, nodeToJson, pNode->pOffset);
×
6551
  if (TSDB_CODE_SUCCESS == code) {
×
6552
    code = tjsonAddObject(pJson, jkSlidingWindowSlidingVal, nodeToJson, pNode->pSlidingVal);
×
6553
  }
6554
  return code;
×
6555
}
6556

6557
static int32_t jsonToSlidingWindowNode(const SJson* pJson, void* pObj) {
×
6558
  SSlidingWindowNode* pNode = (SSlidingWindowNode*)pObj;
×
6559
  int32_t             code = jsonToNodeObject(pJson, jkSlidingWindowOffset, (SNode**)&pNode->pOffset);
×
6560
  if (TSDB_CODE_SUCCESS == code) {
×
6561
    code = jsonToNodeObject(pJson, jkSlidingWindowSlidingVal, (SNode**)&pNode->pSlidingVal);
×
6562
  }
6563

6564
  return code;
×
6565
}
6566

6567
static const char* jkPeriodWindowOffset = "Offset";
6568
static const char* jkPeriodWindowPeriod = "Period";
6569

6570
static int32_t periodWindowNodeToJson(const void* pObj, SJson* pJson) {
11,000✔
6571
  const SPeriodWindowNode* pNode = (const SPeriodWindowNode*)pObj;
11,000✔
6572
  int32_t                  code = tjsonAddObject(pJson, jkPeriodWindowPeriod, nodeToJson, pNode->pPeroid);
11,000✔
6573
  if (TSDB_CODE_SUCCESS == code) {
11,000✔
6574
    code = tjsonAddObject(pJson, jkPeriodWindowOffset, nodeToJson, pNode->pOffset);
11,000✔
6575
  }
6576
  return code;
11,000✔
6577
}
6578

6579
static int32_t jsonToPeriodWindowNode(const SJson* pJson, void* pObj) {
11,000✔
6580
  SPeriodWindowNode* pNode = (SPeriodWindowNode*)pObj;
11,000✔
6581
  int32_t            code = jsonToNodeObject(pJson, jkPeriodWindowPeriod, (SNode**)&pNode->pPeroid);
11,000✔
6582
  if (TSDB_CODE_SUCCESS == code) {
11,000✔
6583
    code = jsonToNodeObject(pJson, jkPeriodWindowOffset, (SNode**)&pNode->pOffset);
11,000✔
6584
  }
6585

6586
  return code;
11,000✔
6587
}
6588

6589
static const char* jkStreamTriggerTriggerWindow = "TriggerWindow";
6590
static const char* jkStreamTriggerTriggerTable = "TriggerTable";
6591
static const char* jkStreamTriggerOptions = "Options";
6592
static const char* jkStreamTriggerNotify = "Notify";
6593
static const char* jkStreamTriggerPartitionList = "PartitionList";
6594

6595
static int32_t streamTriggerNodeToJson(const void* pObj, SJson* pJson) {
91,100✔
6596
  const SStreamTriggerNode* pNode = (const SStreamTriggerNode*)pObj;
91,100✔
6597
  int32_t code = tjsonAddObject(pJson, jkStreamTriggerTriggerWindow, nodeToJson, pNode->pTriggerWindow);
91,100✔
6598
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
6599
    code = tjsonAddObject(pJson, jkStreamTriggerTriggerTable, nodeToJson, pNode->pTrigerTable);
91,100✔
6600
  }
6601
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
6602
    code = tjsonAddObject(pJson, jkStreamTriggerOptions, nodeToJson, pNode->pOptions);
91,100✔
6603
  }
6604
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
6605
    code = tjsonAddObject(pJson, jkStreamTriggerNotify, nodeToJson, pNode->pNotify);
91,100✔
6606
  }
6607
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
6608
    code = nodeListToJson(pJson, jkStreamTriggerPartitionList, pNode->pPartitionList);
91,100✔
6609
  }
6610
  return code;
91,100✔
6611
}
6612

6613
static int32_t jsonToStreamTriggerNode(const SJson* pJson, void* pObj) {
91,100✔
6614
  SStreamTriggerNode* pNode = (SStreamTriggerNode*)pObj;
91,100✔
6615
  int32_t             code = jsonToNodeObject(pJson, jkStreamTriggerTriggerWindow, (SNode**)&pNode->pTriggerWindow);
91,100✔
6616
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
6617
    code = jsonToNodeObject(pJson, jkStreamTriggerTriggerTable, (SNode**)&pNode->pTrigerTable);
91,100✔
6618
  }
6619
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
6620
    code = jsonToNodeObject(pJson, jkStreamTriggerOptions, (SNode**)&pNode->pOptions);
91,100✔
6621
  }
6622
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
6623
    code = jsonToNodeObject(pJson, jkStreamTriggerNotify, (SNode**)&pNode->pNotify);
91,100✔
6624
  }
6625
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
6626
    code = jsonToNodeList(pJson, jkStreamTriggerPartitionList, &pNode->pPartitionList);
91,100✔
6627
  }
6628
  return code;
91,100✔
6629
}
6630

6631
static const char* jkStreamDbName = "DbName";
6632
static const char* jkStreamStreamName = "StreamName";
6633

6634
static int32_t streamNodeToJson(const void* pObj, SJson* pJson) {
×
6635
  const SStreamNode* pNode = (const SStreamNode*)pObj;
×
6636
  int32_t            code = exprNodeToJson(pObj, pJson);
×
6637
  if (TSDB_CODE_SUCCESS == code) {
×
6638
    code = tjsonAddStringToObject(pJson, jkStreamDbName, pNode->dbName);
×
6639
  }
6640
  if (TSDB_CODE_SUCCESS == code) {
×
6641
    code = tjsonAddStringToObject(pJson, jkStreamStreamName, pNode->streamName);
×
6642
  }
6643
  return code;
×
6644
}
6645

6646
static int32_t jsonToStreamNode(const SJson* pJson, void* pObj) {
×
6647
  SStreamNode* pNode = (SStreamNode*)pObj;
×
6648
  int32_t      code = jsonToExprNode(pJson, pObj);
×
6649
  if (TSDB_CODE_SUCCESS == code) {
×
6650
    code = tjsonGetStringValue1(pJson, jkStreamDbName, pNode->dbName, sizeof(pNode->dbName));
×
6651
  }
6652
  if (TSDB_CODE_SUCCESS == code) {
×
6653
    code = tjsonGetStringValue1(pJson, jkStreamStreamName, pNode->streamName, sizeof(pNode->streamName));
×
6654
  }
6655
  return code;
×
6656
}
6657

6658
static const char* jkStreamTagDefTagName = "TagName";
6659
static const char* jkStreamTagDefDataType = "DataType";
6660
static const char* jkStreamTagDefTagExpr = "TagExpr";
6661
static const char* jkStreamTagDefComment = "Comment";
6662

6663
static int32_t streamTagDefNodeToJson(const void* pObj, SJson* pJson) {
17,000✔
6664
  const SStreamTagDefNode* pNode = (const SStreamTagDefNode*)pObj;
17,000✔
6665
  int32_t                  code = tjsonAddStringToObject(pJson, jkStreamTagDefTagName, pNode->tagName);
17,000✔
6666
  if (TSDB_CODE_SUCCESS == code) {
17,000✔
6667
    code = tjsonAddObject(pJson, jkStreamTagDefDataType, dataTypeToJson, &pNode->dataType);
17,000✔
6668
  }
6669
  if (TSDB_CODE_SUCCESS == code) {
17,000✔
6670
    code = tjsonAddObject(pJson, jkStreamTagDefTagExpr, nodeToJson, pNode->pTagExpr);
17,000✔
6671
  }
6672
  return code;
17,000✔
6673
}
6674

6675
static int32_t jsonToStreamTagDefNode(const SJson* pJson, void* pObj) {
17,000✔
6676
  SStreamTagDefNode* pNode = (SStreamTagDefNode*)pObj;
17,000✔
6677
  int32_t            code = tjsonGetStringValue1(pJson, jkStreamTagDefTagName, pNode->tagName, sizeof(pNode->tagName));
17,000✔
6678
  if (TSDB_CODE_SUCCESS == code) {
17,000✔
6679
    code = tjsonToObject(pJson, jkStreamTagDefDataType, jsonToDataType, &pNode->dataType);
17,000✔
6680
  }
6681
  if (TSDB_CODE_SUCCESS == code) {
17,000✔
6682
    code = jsonToNodeObject(pJson, jkStreamTagDefTagExpr, &pNode->pTagExpr);
17,000✔
6683
  }
6684
  return code;
17,000✔
6685
}
6686

6687
static const char* jkExternalWindowProjectionList = "ProjectionList";
6688
static const char* jkExternalWindowAggFuncList = "AggFuncList";
6689
static const char* jkExternalWindowStartTime = "StartTime";
6690
static const char* jkExternalWindowEndTime = "EndTime";
6691
static const char* jkExternalWindowCol = "Col";
6692

6693
static int32_t externalWindowNodeToJson(const void* pObj, SJson* pJson) {
4,200✔
6694
  const SExternalWindowNode* pNode = (const SExternalWindowNode*)pObj;
4,200✔
6695
  int32_t                    code = nodeListToJson(pJson, jkExternalWindowProjectionList, pNode->pProjectionList);
4,200✔
6696
  if (TSDB_CODE_SUCCESS == code) {
4,200✔
6697
    code = nodeListToJson(pJson, jkExternalWindowAggFuncList, pNode->pAggFuncList);
4,200✔
6698
  }
6699
  if (TSDB_CODE_SUCCESS == code) {
4,200✔
6700
    code = tjsonAddIntegerToObject(pJson, jkExternalWindowStartTime, pNode->timeRange.skey);
4,200✔
6701
  }
6702
  if (TSDB_CODE_SUCCESS == code) {
4,200✔
6703
    code = tjsonAddIntegerToObject(pJson, jkExternalWindowEndTime, pNode->timeRange.ekey);
4,200✔
6704
  }
6705
  if (TSDB_CODE_SUCCESS == code) {
4,200✔
6706
    code = tjsonAddObject(pJson, jkExternalWindowCol, nodeToJson, pNode->pCol);
4,200✔
6707
  }
6708
  return code;
4,200✔
6709
}
6710

6711
static int32_t jsonToExternalWindowNode(const SJson* pJson, void* pObj) {
×
6712
  SExternalWindowNode* pNode = (SExternalWindowNode*)pObj;
×
6713
  int32_t              code = jsonToNodeList(pJson, jkExternalWindowProjectionList, &pNode->pProjectionList);
×
6714
  if (TSDB_CODE_SUCCESS == code) {
×
6715
    code = jsonToNodeList(pJson, jkExternalWindowAggFuncList, &pNode->pAggFuncList);
×
6716
  }
6717
  if (TSDB_CODE_SUCCESS == code) {
×
6718
    code = tjsonGetBigIntValue(pJson, jkExternalWindowStartTime, &pNode->timeRange.skey);
×
6719
  }
6720
  if (TSDB_CODE_SUCCESS == code) {
×
6721
    code = tjsonGetBigIntValue(pJson, jkExternalWindowEndTime, &pNode->timeRange.ekey);
×
6722
  }
6723
  if (TSDB_CODE_SUCCESS == code) {
×
6724
    code = jsonToNodeObject(pJson, jkExternalWindowCol, (SNode**)&pNode->pCol);
×
6725
  }
6726
  return code;
×
6727
}
6728

6729
static const char* jkGroupingSetType = "GroupingSetType";
6730
static const char* jkGroupingSetParameter = "Parameters";
6731

6732
static int32_t groupingSetNodeToJson(const void* pObj, SJson* pJson) {
66,300✔
6733
  const SGroupingSetNode* pNode = (const SGroupingSetNode*)pObj;
66,300✔
6734

6735
  int32_t code = tjsonAddIntegerToObject(pJson, jkGroupingSetType, pNode->groupingSetType);
66,300✔
6736
  if (TSDB_CODE_SUCCESS == code) {
66,300✔
6737
    code = nodeListToJson(pJson, jkGroupingSetParameter, pNode->pParameterList);
66,300✔
6738
  }
6739

6740
  return code;
66,300✔
6741
}
6742

6743
static int32_t jsonToGroupingSetNode(const SJson* pJson, void* pObj) {
40,800✔
6744
  SGroupingSetNode* pNode = (SGroupingSetNode*)pObj;
40,800✔
6745

6746
  int32_t code = TSDB_CODE_SUCCESS;
40,800✔
6747
  tjsonGetNumberValue(pJson, jkGroupingSetType, pNode->groupingSetType, code);
40,800✔
6748
  if (TSDB_CODE_SUCCESS == code) {
40,800✔
6749
    code = jsonToNodeList(pJson, jkGroupingSetParameter, &pNode->pParameterList);
40,800✔
6750
  }
6751

6752
  return code;
40,800✔
6753
}
6754

6755
static const char* jkOrderByExprExpr = "Expr";
6756
static const char* jkOrderByExprOrder = "Order";
6757
static const char* jkOrderByExprNullOrder = "NullOrder";
6758

6759
static int32_t orderByExprNodeToJson(const void* pObj, SJson* pJson) {
78,148,368✔
6760
  const SOrderByExprNode* pNode = (const SOrderByExprNode*)pObj;
78,148,368✔
6761

6762
  int32_t code = tjsonAddObject(pJson, jkOrderByExprExpr, nodeToJson, pNode->pExpr);
78,148,368✔
6763
  if (TSDB_CODE_SUCCESS == code) {
78,148,368✔
6764
    code = tjsonAddIntegerToObject(pJson, jkOrderByExprOrder, pNode->order);
78,148,368✔
6765
  }
6766
  if (TSDB_CODE_SUCCESS == code) {
78,148,368✔
6767
    code = tjsonAddIntegerToObject(pJson, jkOrderByExprNullOrder, pNode->nullOrder);
78,148,368✔
6768
  }
6769

6770
  return code;
78,148,368✔
6771
}
6772

6773
static int32_t jsonToOrderByExprNode(const SJson* pJson, void* pObj) {
279,774✔
6774
  SOrderByExprNode* pNode = (SOrderByExprNode*)pObj;
279,774✔
6775

6776
  int32_t code = jsonToNodeObject(pJson, jkOrderByExprExpr, &pNode->pExpr);
279,774✔
6777
  if (TSDB_CODE_SUCCESS == code) {
279,774✔
6778
    tjsonGetNumberValue(pJson, jkOrderByExprOrder, pNode->order, code);
279,774✔
6779
  }
6780
  if (TSDB_CODE_SUCCESS == code) {
279,774✔
6781
    tjsonGetNumberValue(pJson, jkOrderByExprNullOrder, pNode->nullOrder, code);
279,774✔
6782
  }
6783

6784
  return code;
279,774✔
6785
}
6786

6787
static const char* jkLimitLimit = "Limit";
6788
static const char* jkLimitOffset = "Offset";
6789

6790
static int32_t limitNodeToJson(const void* pObj, SJson* pJson) {
47,551,262✔
6791
  const SLimitNode* pNode = (const SLimitNode*)pObj;
47,551,262✔
6792

6793
  int32_t code = tjsonAddObject(pJson, jkLimitLimit, nodeToJson, pNode->limit);
47,551,262✔
6794
  if (TSDB_CODE_SUCCESS == code && pNode->offset) {
47,551,262✔
6795
    code = tjsonAddObject(pJson, jkLimitOffset, nodeToJson, pNode->offset);
16,412,716✔
6796
  }
6797

6798
  return code;
47,551,262✔
6799
}
6800

6801
static int32_t jsonToLimitNode(const SJson* pJson, void* pObj) {
23,600✔
6802
  SLimitNode* pNode = (SLimitNode*)pObj;
23,600✔
6803

6804
  int32_t code = jsonToNodeObject(pJson, jkLimitLimit, (SNode**)&pNode->limit);
23,600✔
6805
  if (TSDB_CODE_SUCCESS == code) {
23,600✔
6806
    code = jsonToNodeObject(pJson, jkLimitOffset, (SNode**)&pNode->offset);
23,600✔
6807
  }
6808

6809
  return code;
23,600✔
6810
}
6811

6812
static const char* jkStateWindowCol = "StateWindowCol";
6813
static const char* jkStateWindowExprList = "StateWindowExprList";
6814
static const char* jkStateWindowExprCompat = "StateWindowExpr";
6815
static const char* jkStateWindowTrueForLimit = "TrueForLimit";
6816
static const char* jkStateWindowExtend = "Extend";
6817
static const char* jkStateWindowZerothList = "ZerothList";
6818
static const char* jkStateWindowZerothCompat = "Zeroth";
6819

6820
static int32_t stateWindowNodeToJson(const void* pObj, SJson* pJson) {
25,300✔
6821
  const SStateWindowNode* pNode = (const SStateWindowNode*)pObj;
25,300✔
6822
  int32_t                 code = tjsonAddObject(pJson, jkStateWindowCol, nodeToJson, pNode->pCol);
25,300✔
6823
  if (TSDB_CODE_SUCCESS == code) {
25,300✔
6824
    code = nodeListToJson(pJson, jkStateWindowExprList, pNode->pExprList);
25,300✔
6825
  }
6826
  if (TSDB_CODE_SUCCESS == code) {
25,300✔
6827
    code = tjsonAddObject(pJson, jkStateWindowTrueForLimit, nodeToJson, pNode->pTrueForLimit);
25,300✔
6828
  }
6829
  if (TSDB_CODE_SUCCESS == code) {
25,300✔
6830
    code = tjsonAddObject(pJson, jkStateWindowExtend, nodeToJson, pNode->pExtend);
25,300✔
6831
  }
6832
  if (TSDB_CODE_SUCCESS == code) {
25,300✔
6833
    code = nodeListToJson(pJson, jkStateWindowZerothList, pNode->pZerothList);
25,300✔
6834
  }
6835
  return code;
25,300✔
6836
}
6837

6838
static int32_t jsonToStateWindowNode(const SJson* pJson, void* pObj) {
25,300✔
6839
  SStateWindowNode* pNode = (SStateWindowNode*)pObj;
25,300✔
6840

6841
  int32_t code = jsonToNodeObject(pJson, jkStateWindowCol, (SNode**)&pNode->pCol);
25,300✔
6842
  if (TSDB_CODE_SUCCESS == code) {
25,300✔
6843
    code = jsonToNodeList(pJson, jkStateWindowExprList, &pNode->pExprList);
25,300✔
6844
  }
6845
  /* V1 compat: old "StateWindowExpr" single object */
6846
  if (TSDB_CODE_SUCCESS == code && NULL == pNode->pExprList) {
25,300✔
6847
    SNode* pExpr = NULL;
×
6848
    code = jsonToNodeObject(pJson, jkStateWindowExprCompat, &pExpr);
×
6849
    if (TSDB_CODE_SUCCESS == code && pExpr != NULL) {
×
6850
      code = nodesListMakeStrictAppend(&pNode->pExprList, pExpr);
×
6851
    }
6852
  }
6853
  if (TSDB_CODE_SUCCESS == code) {
25,300✔
6854
    code = jsonToNodeObject(pJson, jkStateWindowTrueForLimit, (SNode**)&pNode->pTrueForLimit);
25,300✔
6855
  }
6856
  if (TSDB_CODE_SUCCESS == code) {
25,300✔
6857
    code = jsonToNodeObject(pJson, jkStateWindowExtend, (SNode**)&pNode->pExtend);
25,300✔
6858
  }
6859
  if (TSDB_CODE_SUCCESS == code) {
25,300✔
6860
    code = jsonToNodeList(pJson, jkStateWindowZerothList, &pNode->pZerothList);
25,300✔
6861
  }
6862
  /* V1 compat: old "Zeroth" single object */
6863
  if (TSDB_CODE_SUCCESS == code && NULL == pNode->pZerothList) {
25,300✔
6864
    SNode* pZeroth = NULL;
20,300✔
6865
    code = jsonToNodeObject(pJson, jkStateWindowZerothCompat, &pZeroth);
20,300✔
6866
    if (TSDB_CODE_SUCCESS == code && pZeroth != NULL) {
20,300✔
6867
      code = nodesListMakeStrictAppend(&pNode->pZerothList, pZeroth);
×
6868
    }
6869
  }
6870
  return code;
25,300✔
6871
}
6872

6873
static const char* jkSessionWindowTsPrimaryKey = "TsPrimaryKey";
6874
static const char* jkSessionWindowGap = "Gap";
6875

6876
static int32_t sessionWindowNodeToJson(const void* pObj, SJson* pJson) {
3,700✔
6877
  const SSessionWindowNode* pNode = (const SSessionWindowNode*)pObj;
3,700✔
6878

6879
  int32_t code = tjsonAddObject(pJson, jkSessionWindowTsPrimaryKey, nodeToJson, pNode->pCol);
3,700✔
6880
  if (TSDB_CODE_SUCCESS == code) {
3,700✔
6881
    code = tjsonAddObject(pJson, jkSessionWindowGap, nodeToJson, pNode->pGap);
3,700✔
6882
  }
6883
  return code;
3,700✔
6884
}
6885

6886
static int32_t jsonToSessionWindowNode(const SJson* pJson, void* pObj) {
3,700✔
6887
  SSessionWindowNode* pNode = (SSessionWindowNode*)pObj;
3,700✔
6888

6889
  int32_t code = jsonToNodeObject(pJson, jkSessionWindowTsPrimaryKey, (SNode**)&pNode->pCol);
3,700✔
6890
  if (TSDB_CODE_SUCCESS == code) {
3,700✔
6891
    code = jsonToNodeObject(pJson, jkSessionWindowGap, (SNode**)&pNode->pGap);
3,700✔
6892
  }
6893
  return code;
3,700✔
6894
}
6895

6896
static const char* jkEventWindowTsPrimaryKey = "TsPrimaryKey";
6897
static const char* jkEventWindowStartCond = "StartCond";
6898
static const char* jkEventWindowEndCond = "EndCond";
6899
static const char* jkEventWindowTrueForLimit = "TrueForLimit";
6900

6901
static int32_t eventWindowNodeToJson(const void* pObj, SJson* pJson) {
3,000✔
6902
  const SEventWindowNode* pNode = (const SEventWindowNode*)pObj;
3,000✔
6903

6904
  int32_t code = tjsonAddObject(pJson, jkEventWindowTsPrimaryKey, nodeToJson, pNode->pCol);
3,000✔
6905
  if (TSDB_CODE_SUCCESS == code) {
3,000✔
6906
    code = tjsonAddObject(pJson, jkEventWindowStartCond, nodeToJson, pNode->pStartCond);
3,000✔
6907
  }
6908
  if (TSDB_CODE_SUCCESS == code) {
3,000✔
6909
    code = tjsonAddObject(pJson, jkEventWindowEndCond, nodeToJson, pNode->pEndCond);
3,000✔
6910
  }
6911
  if (TSDB_CODE_SUCCESS == code) {
3,000✔
6912
    code = tjsonAddObject(pJson, jkEventWindowTrueForLimit, nodeToJson, pNode->pTrueForLimit);
3,000✔
6913
  }
6914
  return code;
3,000✔
6915
}
6916

6917
static int32_t jsonToEventWindowNode(const SJson* pJson, void* pObj) {
3,000✔
6918
  SEventWindowNode* pNode = (SEventWindowNode*)pObj;
3,000✔
6919

6920
  int32_t code = jsonToNodeObject(pJson, jkEventWindowTsPrimaryKey, &pNode->pCol);
3,000✔
6921
  if (TSDB_CODE_SUCCESS == code) {
3,000✔
6922
    code = jsonToNodeObject(pJson, jkEventWindowStartCond, &pNode->pStartCond);
3,000✔
6923
  }
6924
  if (TSDB_CODE_SUCCESS == code) {
3,000✔
6925
    code = jsonToNodeObject(pJson, jkEventWindowEndCond, &pNode->pEndCond);
3,000✔
6926
  }
6927
  if (TSDB_CODE_SUCCESS == code) {
3,000✔
6928
    code = jsonToNodeObject(pJson, jkEventWindowTrueForLimit, &pNode->pTrueForLimit);
3,000✔
6929
  }
6930
  return code;
3,000✔
6931
}
6932

6933
static const char* jkCountWindowTsPrimaryKey = "CountTsPrimaryKey";
6934
static const char* jkCountWindowCount = "CountWindowCount";
6935
static const char* jkCountWindowSliding = "CountWindowSliding";
6936

6937
static int32_t countWindowNodeToJson(const void* pObj, SJson* pJson) {
4,600✔
6938
  const SCountWindowNode* pNode = (const SCountWindowNode*)pObj;
4,600✔
6939

6940
  int32_t code = tjsonAddObject(pJson, jkCountWindowTsPrimaryKey, nodeToJson, pNode->pCol);
4,600✔
6941
  if (TSDB_CODE_SUCCESS == code) {
4,600✔
6942
    code = tjsonAddIntegerToObject(pJson, jkCountWindowCount, pNode->windowCount);
4,600✔
6943
  }
6944
  if (TSDB_CODE_SUCCESS == code) {
4,600✔
6945
    code = tjsonAddIntegerToObject(pJson, jkCountWindowSliding, pNode->windowSliding);
4,600✔
6946
  }
6947
  return code;
4,600✔
6948
}
6949

6950
static int32_t jsonToCountWindowNode(const SJson* pJson, void* pObj) {
4,600✔
6951
  SCountWindowNode* pNode = (SCountWindowNode*)pObj;
4,600✔
6952

6953
  int32_t code = jsonToNodeObject(pJson, jkCountWindowTsPrimaryKey, &pNode->pCol);
4,600✔
6954
  if (TSDB_CODE_SUCCESS == code) {
4,600✔
6955
    code = tjsonGetBigIntValue(pJson, jkCountWindowCount, &pNode->windowCount);
4,600✔
6956
  }
6957
  if (TSDB_CODE_SUCCESS == code) {
4,600✔
6958
    code = tjsonGetBigIntValue(pJson, jkCountWindowSliding, &pNode->windowSliding);
4,600✔
6959
  }
6960
  return code;
4,600✔
6961
}
6962

6963
static const char* jkAnomalyWindowTsPrimaryKey = "AnomalyTsPrimaryKey";
6964
static const char* jkAnomalyWindowExpr = "AnomalyWindowExpr";
6965
static const char* jkAnomalyWindowOption = "AnomalyWindowOpt";
6966

6967
static int32_t anomalyWindowNodeToJson(const void* pObj, SJson* pJson) {
×
6968
  const SAnomalyWindowNode* pNode = (const SAnomalyWindowNode*)pObj;
×
6969

6970
  int32_t code = tjsonAddObject(pJson, jkAnomalyWindowTsPrimaryKey, nodeToJson, pNode->pCol);
×
6971
  if (TSDB_CODE_SUCCESS == code) {
×
6972
    code = tjsonAddObject(pJson, jkAnomalyWindowExpr, nodeToJson, pNode->pExpr);
×
6973
  }
6974
  if (TSDB_CODE_SUCCESS == code) {
×
6975
    code = tjsonAddStringToObject(pJson, jkAnomalyWindowOption, pNode->anomalyOpt);
×
6976
  }
6977
  return code;
×
6978
}
6979

6980
static int32_t jsonToAnomalyWindowNode(const SJson* pJson, void* pObj) {
×
6981
  SAnomalyWindowNode* pNode = (SAnomalyWindowNode*)pObj;
×
6982

6983
  int32_t code = jsonToNodeObject(pJson, jkAnomalyWindowTsPrimaryKey, &pNode->pCol);
×
6984
  if (TSDB_CODE_SUCCESS == code) {
×
6985
    code = jsonToNodeObject(pJson, jkAnomalyWindowExpr, (SNode**)&pNode->pExpr);
×
6986
  }
6987
  if (TSDB_CODE_SUCCESS == code) {
×
6988
    code = tjsonGetStringValue1(pJson, jkAnomalyWindowOption, pNode->anomalyOpt, sizeof(pNode->anomalyOpt));
×
6989
  }
6990
  return code;
×
6991
}
6992

6993
static const char* jkTrueForType = "TrueForType";
6994
static const char* jkTrueForDuration = "Duration";
6995
static const char* jkTrueForCount = "Count";
6996

6997
static int32_t trueForNodeToJson(const void* pObj, SJson* pJson) {
1,200✔
6998
  const STrueForNode* pNode = (const STrueForNode*)pObj;
1,200✔
6999

7000
  int32_t code = tjsonAddIntegerToObject(pJson, jkTrueForType, pNode->trueForType);
1,200✔
7001
  if (TSDB_CODE_SUCCESS == code) {
1,200✔
7002
    code = tjsonAddObject(pJson, jkTrueForDuration, nodeToJson, pNode->pDuration);
1,200✔
7003
  }
7004
  if (TSDB_CODE_SUCCESS == code) {
1,200✔
7005
    code = tjsonAddIntegerToObject(pJson, jkTrueForCount, pNode->count);
1,200✔
7006
  }
7007
  return code;
1,200✔
7008
}
7009

7010
static int32_t jsonToTrueForNode(const SJson* pJson, void* pObj) {
1,200✔
7011
  STrueForNode* pNode = (STrueForNode*)pObj;
1,200✔
7012

7013
  int32_t trueForType = 0;
1,200✔
7014
  int32_t code = tjsonGetIntValue(pJson, jkTrueForType, &trueForType);
1,200✔
7015
  if (TSDB_CODE_SUCCESS == code) {
1,200✔
7016
    pNode->trueForType = (ETrueForType)trueForType;
1,200✔
7017
    code = jsonToNodeObject(pJson, jkTrueForDuration, &pNode->pDuration);
1,200✔
7018
  }
7019
  if (TSDB_CODE_SUCCESS == code) {
1,200✔
7020
    code = tjsonGetIntValue(pJson, jkTrueForCount, &pNode->count);
1,200✔
7021
  }
7022
  return code;
1,200✔
7023
}
7024

7025
static const char* jkIntervalWindowInterval = "Interval";
7026
static const char* jkIntervalWindowOffset = "Offset";
7027
static const char* jkIntervalWindowSliding = "Sliding";
7028
static const char* jkIntervalWindowFill = "Fill";
7029
static const char* jkIntervalWindowTsPk = "TsPk";
7030
static const char* jkIntervalStartTime = "StartTime";
7031
static const char* jkIntervalEndTime = "EndTime";
7032

7033
static int32_t intervalWindowNodeToJson(const void* pObj, SJson* pJson) {
85,800✔
7034
  const SIntervalWindowNode* pNode = (const SIntervalWindowNode*)pObj;
85,800✔
7035

7036
  int32_t code = tjsonAddObject(pJson, jkIntervalWindowInterval, nodeToJson, pNode->pInterval);
85,800✔
7037
  if (TSDB_CODE_SUCCESS == code) {
85,800✔
7038
    code = tjsonAddObject(pJson, jkIntervalWindowOffset, nodeToJson, pNode->pOffset);
85,800✔
7039
  }
7040
  if (TSDB_CODE_SUCCESS == code) {
85,800✔
7041
    code = tjsonAddObject(pJson, jkIntervalWindowSliding, nodeToJson, pNode->pSliding);
85,800✔
7042
  }
7043
  if (TSDB_CODE_SUCCESS == code) {
85,800✔
7044
    code = tjsonAddObject(pJson, jkIntervalWindowFill, nodeToJson, pNode->pFill);
85,800✔
7045
  }
7046
  if (TSDB_CODE_SUCCESS == code) {
85,800✔
7047
    code = tjsonAddObject(pJson, jkIntervalWindowTsPk, nodeToJson, pNode->pCol);
85,800✔
7048
  }
7049
  if (TSDB_CODE_SUCCESS == code) {
85,800✔
7050
    code = tjsonAddIntegerToObject(pJson, jkIntervalStartTime, pNode->timeRange.skey);
85,800✔
7051
  }
7052
  if (TSDB_CODE_SUCCESS == code) {
85,800✔
7053
    code = tjsonAddIntegerToObject(pJson, jkIntervalEndTime, pNode->timeRange.ekey);
85,800✔
7054
  }
7055

7056
  return code;
85,800✔
7057
}
7058

7059
static int32_t jsonToIntervalWindowNode(const SJson* pJson, void* pObj) {
81,900✔
7060
  SIntervalWindowNode* pNode = (SIntervalWindowNode*)pObj;
81,900✔
7061

7062
  int32_t code = jsonToNodeObject(pJson, jkIntervalWindowInterval, &pNode->pInterval);
81,900✔
7063
  if (TSDB_CODE_SUCCESS == code) {
81,900✔
7064
    code = jsonToNodeObject(pJson, jkIntervalWindowOffset, &pNode->pOffset);
81,900✔
7065
  }
7066
  if (TSDB_CODE_SUCCESS == code) {
81,900✔
7067
    code = jsonToNodeObject(pJson, jkIntervalWindowSliding, &pNode->pSliding);
81,900✔
7068
  }
7069
  if (TSDB_CODE_SUCCESS == code) {
81,900✔
7070
    code = jsonToNodeObject(pJson, jkIntervalWindowFill, &pNode->pFill);
81,900✔
7071
  }
7072
  if (TSDB_CODE_SUCCESS == code) {
81,900✔
7073
    code = jsonToNodeObject(pJson, jkIntervalWindowTsPk, &pNode->pCol);
81,900✔
7074
  }
7075
  if (TSDB_CODE_SUCCESS == code) {
81,900✔
7076
    code = tjsonGetBigIntValue(pJson, jkIntervalStartTime, &pNode->timeRange.skey);
81,900✔
7077
  }
7078
  if (TSDB_CODE_SUCCESS == code) {
81,900✔
7079
    code = tjsonGetBigIntValue(pJson, jkIntervalEndTime, &pNode->timeRange.ekey);
81,900✔
7080
  }
7081

7082
  return code;
81,900✔
7083
}
7084

7085
static const char* jkNodeListDataType = "DataType";
7086
static const char* jkNodeListNodeList = "NodeList";
7087

7088
static int32_t nodeListNodeToJson(const void* pObj, SJson* pJson) {
714,687,748✔
7089
  const SNodeListNode* pNode = (const SNodeListNode*)pObj;
714,687,748✔
7090

7091
  int32_t code = exprNodeToJson(pObj, pJson);
714,687,748✔
7092
  if (TSDB_CODE_SUCCESS == code) {
714,686,111✔
7093
    code = nodeListToJson(pJson, jkNodeListNodeList, pNode->pNodeList);
714,686,906✔
7094
  }
7095

7096
  return code;
714,695,287✔
7097
}
7098

7099
static int32_t jsonToNodeListNode(const SJson* pJson, void* pObj) {
1,279,424✔
7100
  SNodeListNode* pNode = (SNodeListNode*)pObj;
1,279,424✔
7101

7102
  int32_t code = jsonToExprNode(pJson, pObj);
1,279,424✔
7103
  if (TSDB_CODE_SUCCESS == code) {
1,279,424✔
7104
    code = jsonToNodeList(pJson, jkNodeListNodeList, &pNode->pNodeList);
1,279,424✔
7105
  }
7106

7107
  return code;
1,279,424✔
7108
}
7109

7110
static const char* jkFillMode = "Mode";
7111
static const char* jkFillValues = "Values";
7112
static const char* jkFillWStartTs = "WStartTs";
7113
static const char* jkFillStartTime = "StartTime";
7114
static const char* jkFillEndTime = "EndTime";
7115
static const char* jkFillSurroundingTime = "SurroundingTime";
7116

7117
static int32_t fillNodeToJson(const void* pObj, SJson* pJson) {
3,800✔
7118
  const SFillNode* pNode = (const SFillNode*)pObj;
3,800✔
7119

7120
  int32_t code = tjsonAddIntegerToObject(pJson, jkFillMode, pNode->mode);
3,800✔
7121
  if (TSDB_CODE_SUCCESS == code) {
3,800✔
7122
    code = tjsonAddObject(pJson, jkFillValues, nodeToJson, pNode->pValues);
3,800✔
7123
  }
7124
  if (TSDB_CODE_SUCCESS == code) {
3,800✔
7125
    code = tjsonAddObject(pJson, jkFillWStartTs, nodeToJson, pNode->pWStartTs);
3,800✔
7126
  }
7127
  if (TSDB_CODE_SUCCESS == code) {
3,800✔
7128
    code = tjsonAddIntegerToObject(pJson, jkFillStartTime, pNode->timeRange.skey);
3,800✔
7129
  }
7130
  if (TSDB_CODE_SUCCESS == code) {
3,800✔
7131
    code = tjsonAddIntegerToObject(pJson, jkFillEndTime, pNode->timeRange.ekey);
3,800✔
7132
  }
7133
  if (TSDB_CODE_SUCCESS == code) {
3,800✔
7134
    code = tjsonAddObject(pJson, jkFillSurroundingTime, nodeToJson,
3,800✔
7135
                          pNode->pSurroundingTime);
3,800✔
7136
  }
7137

7138
  return code;
3,800✔
7139
}
7140

7141
static int32_t jsonToFillNode(const SJson* pJson, void* pObj) {
3,800✔
7142
  SFillNode* pNode = (SFillNode*)pObj;
3,800✔
7143

7144
  int32_t code;
7145
  tjsonGetNumberValue(pJson, jkFillMode, pNode->mode, code);
3,800✔
7146
  if (TSDB_CODE_SUCCESS == code) {
3,800✔
7147
    code = jsonToNodeObject(pJson, jkFillValues, &pNode->pValues);
3,800✔
7148
  }
7149
  if (TSDB_CODE_SUCCESS == code) {
3,800✔
7150
    code = jsonToNodeObject(pJson, jkFillWStartTs, &pNode->pWStartTs);
3,800✔
7151
  }
7152
  if (TSDB_CODE_SUCCESS == code) {
3,800✔
7153
    code = tjsonGetBigIntValue(pJson, jkFillStartTime, &pNode->timeRange.skey);
3,800✔
7154
  }
7155
  if (TSDB_CODE_SUCCESS == code) {
3,800✔
7156
    code = tjsonGetBigIntValue(pJson, jkFillEndTime, &pNode->timeRange.ekey);
3,800✔
7157
  }
7158
  if (TSDB_CODE_SUCCESS == code) {
3,800✔
7159
    code = jsonToNodeObject(pJson, jkFillSurroundingTime,
3,800✔
7160
                            &pNode->pSurroundingTime);
7161
  }
7162

7163
  return code;
3,800✔
7164
}
7165

7166
static const char* jkTargetDataBlockId = "DataBlockId";
7167
static const char* jkTargetSlotId = "SlotId";
7168
static const char* jkTargetExpr = "Expr";
7169

7170
static int32_t targetNodeToJson(const void* pObj, SJson* pJson) {
2,147,483,647✔
7171
  const STargetNode* pNode = (const STargetNode*)pObj;
2,147,483,647✔
7172

7173
  int32_t code = tjsonAddIntegerToObject(pJson, jkTargetDataBlockId, pNode->dataBlockId);
2,147,483,647✔
7174
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
7175
    code = tjsonAddIntegerToObject(pJson, jkTargetSlotId, pNode->slotId);
2,147,483,647✔
7176
  }
7177
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
7178
    code = tjsonAddObject(pJson, jkTargetExpr, nodeToJson, pNode->pExpr);
2,147,483,647✔
7179
  }
7180

7181
  return code;
2,147,483,647✔
7182
}
7183

7184
static int32_t jsonToTargetNode(const SJson* pJson, void* pObj) {
37,013,570✔
7185
  STargetNode* pNode = (STargetNode*)pObj;
37,013,570✔
7186

7187
  int32_t code = tjsonGetBigIntValue(pJson, jkTargetDataBlockId, &pNode->dataBlockId);
37,013,570✔
7188
  if (TSDB_CODE_SUCCESS == code) {
37,013,897✔
7189
    code = tjsonGetSmallIntValue(pJson, jkTargetSlotId, &pNode->slotId);
37,013,897✔
7190
  }
7191
  if (TSDB_CODE_SUCCESS == code) {
37,013,293✔
7192
    code = jsonToNodeObject(pJson, jkTargetExpr, &pNode->pExpr);
37,013,293✔
7193
  }
7194

7195
  return code;
37,015,397✔
7196
}
7197

7198
static const char* jkSlotDescSlotId = "SlotId";
7199
static const char* jkSlotDescDataType = "DataType";
7200
static const char* jkSlotDescReserve = "Reserve";
7201
static const char* jkSlotDescOutput = "Output";
7202
static const char* jkSlotDescName = "Name";
7203
static const char* jkSlotTag = "Tag";
7204

7205
static int32_t slotDescNodeToJson(const void* pObj, SJson* pJson) {
2,147,483,647✔
7206
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
2,147,483,647✔
7207

7208
  int32_t code = tjsonAddIntegerToObject(pJson, jkSlotDescSlotId, pNode->slotId);
2,147,483,647✔
7209
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
7210
    code = tjsonAddObject(pJson, jkSlotDescDataType, dataTypeToJson, &pNode->dataType);
2,147,483,647✔
7211
  }
7212
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
7213
    code = tjsonAddBoolToObject(pJson, jkSlotDescReserve, pNode->reserve);
2,147,483,647✔
7214
  }
7215
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
7216
    code = tjsonAddBoolToObject(pJson, jkSlotDescOutput, pNode->output);
2,147,483,647✔
7217
  }
7218
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
7219
    code = tjsonAddStringToObject(pJson, jkSlotDescName, pNode->name);
2,147,483,647✔
7220
  }
7221
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
7222
    code = tjsonAddBoolToObject(pJson, jkSlotTag, pNode->tag);
2,147,483,647✔
7223
  }
7224

7225
  return code;
2,147,483,647✔
7226
}
7227

7228
static int32_t jsonToSlotDescNode(const SJson* pJson, void* pObj) {
69,835,656✔
7229
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
69,835,656✔
7230

7231
  int32_t code = tjsonGetSmallIntValue(pJson, jkSlotDescSlotId, &pNode->slotId);
69,835,656✔
7232
  if (TSDB_CODE_SUCCESS == code) {
69,841,195✔
7233
    code = tjsonToObject(pJson, jkSlotDescDataType, jsonToDataType, &pNode->dataType);
69,841,195✔
7234
  }
7235
  if (TSDB_CODE_SUCCESS == code) {
69,839,528✔
7236
    code = tjsonGetBoolValue(pJson, jkSlotDescReserve, &pNode->reserve);
69,839,528✔
7237
  }
7238
  if (TSDB_CODE_SUCCESS == code) {
69,841,155✔
7239
    code = tjsonGetBoolValue(pJson, jkSlotDescOutput, &pNode->output);
69,841,155✔
7240
  }
7241
  if (TSDB_CODE_SUCCESS == code) {
69,841,710✔
7242
    code = tjsonGetStringValue1(pJson, jkSlotDescName, pNode->name, sizeof(pNode->name));
69,841,710✔
7243
  }
7244
  if (TSDB_CODE_SUCCESS == code) {
69,842,526✔
7245
    code = tjsonGetBoolValue(pJson, jkSlotTag, &pNode->tag);
69,842,526✔
7246
  }
7247

7248
  return code;
69,842,377✔
7249
}
7250

7251
static const char* jkColumnDefColName = "ColName";
7252
static const char* jkColumnDefDataType = "DataType";
7253
static const char* jkColumnDefComments = "Comments";
7254
static const char* jkColumnDefSma = "Sma";
7255
static const char* jkColumnDefOptions = "ColumnOptions";
7256

7257
static int32_t columnDefNodeToJson(const void* pObj, SJson* pJson) {
1,413,000✔
7258
  const SColumnDefNode* pNode = (const SColumnDefNode*)pObj;
1,413,000✔
7259

7260
  int32_t code = tjsonAddStringToObject(pJson, jkColumnDefColName, pNode->colName);
1,413,000✔
7261
  if (TSDB_CODE_SUCCESS == code) {
1,413,000✔
7262
    code = tjsonAddObject(pJson, jkColumnDefDataType, dataTypeToJson, &pNode->dataType);
1,413,000✔
7263
  }
7264
  if (TSDB_CODE_SUCCESS == code) {
1,413,000✔
7265
    code = tjsonAddBoolToObject(pJson, jkColumnDefSma, pNode->sma);
1,413,000✔
7266
  }
7267
  if (TSDB_CODE_SUCCESS == code) {
1,413,000✔
7268
    code = tjsonAddObject(pJson, jkColumnDefOptions, nodeToJson, pNode->pOptions);
1,413,000✔
7269
  }
7270

7271
  return code;
1,413,000✔
7272
}
7273

7274
static int32_t jsonToColumnDefNode(const SJson* pJson, void* pObj) {
1,413,000✔
7275
  SColumnDefNode* pNode = (SColumnDefNode*)pObj;
1,413,000✔
7276

7277
  int32_t code = tjsonGetStringValue1(pJson, jkColumnDefColName, pNode->colName, sizeof(pNode->colName));
1,413,000✔
7278
  if (TSDB_CODE_SUCCESS == code) {
1,413,000✔
7279
    code = tjsonToObject(pJson, jkColumnDefDataType, jsonToDataType, &pNode->dataType);
1,413,000✔
7280
  }
7281
  if (TSDB_CODE_SUCCESS == code) {
1,413,000✔
7282
    code = tjsonGetBoolValue(pJson, jkColumnDefSma, &pNode->sma);
1,413,000✔
7283
  }
7284
  if (TSDB_CODE_SUCCESS == code) {
1,413,000✔
7285
    code = jsonToNodeObject(pJson, jkColumnDefOptions, (SNode**)&pNode->pOptions);
1,413,000✔
7286
  }
7287
  return code;
1,413,000✔
7288
}
7289

7290
static const char* jkDownstreamSourceAddr = "Addr";
7291
static const char* jkDownstreamSourceClientId = "ClientId";
7292
static const char* jkDownstreamSourceTaskId = "TaskId";
7293
static const char* jkDownstreamSourceSeriousId = "SeriousId";
7294
static const char* jkDownstreamSourceExecId = "ExecId";
7295
static const char* jkDownstreamSourceFetchMsgType = "FetchMsgType";
7296

7297
static int32_t downstreamSourceNodeToJson(const void* pObj, SJson* pJson) {
2,278,607✔
7298
  const SDownstreamSourceNode* pNode = (const SDownstreamSourceNode*)pObj;
2,278,607✔
7299

7300
  int32_t code = tjsonAddObject(pJson, jkDownstreamSourceAddr, queryNodeAddrToJson, &pNode->addr);
2,278,607✔
7301
  if (TSDB_CODE_SUCCESS == code) {
2,278,607✔
7302
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceClientId, pNode->clientId);
2,278,607✔
7303
  }
7304
  if (TSDB_CODE_SUCCESS == code) {
2,278,607✔
7305
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceTaskId, pNode->taskId);
2,278,607✔
7306
  }
7307
  if (TSDB_CODE_SUCCESS == code) {
2,278,607✔
7308
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceSeriousId, pNode->sId);
2,278,607✔
7309
  }
7310
  if (TSDB_CODE_SUCCESS == code) {
2,278,607✔
7311
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceExecId, pNode->execId);
2,278,607✔
7312
  }
7313
  if (TSDB_CODE_SUCCESS == code) {
2,278,607✔
7314
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceFetchMsgType, pNode->fetchMsgType);
2,278,607✔
7315
  }
7316

7317
  return code;
2,278,607✔
7318
}
7319

7320
static int32_t jsonToDownstreamSourceNode(const SJson* pJson, void* pObj) {
2,599,769✔
7321
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
2,599,769✔
7322

7323
  int32_t code = tjsonToObject(pJson, jkDownstreamSourceAddr, jsonToQueryNodeAddr, &pNode->addr);
2,599,769✔
7324
  if (TSDB_CODE_SUCCESS == code) {
2,599,769✔
7325
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceClientId, &pNode->clientId);
2,599,769✔
7326
  }
7327
  if (TSDB_CODE_SUCCESS == code) {
2,599,769✔
7328
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceTaskId, &pNode->taskId);
2,599,769✔
7329
  }
7330
  if (TSDB_CODE_SUCCESS == code) {
2,599,769✔
7331
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceSeriousId, &pNode->sId);
2,599,769✔
7332
  }
7333
  if (TSDB_CODE_SUCCESS == code) {
2,599,769✔
7334
    code = tjsonGetIntValue(pJson, jkDownstreamSourceExecId, &pNode->execId);
2,599,769✔
7335
  }
7336
  if (TSDB_CODE_SUCCESS == code) {
2,599,769✔
7337
    code = tjsonGetIntValue(pJson, jkDownstreamSourceFetchMsgType, &pNode->fetchMsgType);
2,599,769✔
7338
  }
7339

7340
  return code;
2,599,769✔
7341
}
7342

7343
static const char* jkWindowOffsetStartOffset = "StartOffset";
7344
static const char* jkWindowOffsetEndOffset = "EndOffset";
7345
static int32_t     windowOffsetNodeToJson(const void* pObj, SJson* pJson) {
72,432✔
7346
  const SWindowOffsetNode* pNode = (const SWindowOffsetNode*)pObj;
72,432✔
7347

7348
  int32_t code = tjsonAddObject(pJson, jkWindowOffsetStartOffset, nodeToJson, pNode->pStartOffset);
72,432✔
7349
  if (TSDB_CODE_SUCCESS == code) {
72,432✔
7350
    code = tjsonAddObject(pJson, jkWindowOffsetEndOffset, nodeToJson, pNode->pEndOffset);
72,432✔
7351
  }
7352
  return code;
72,432✔
7353
}
7354

7355
static int32_t jsonToWindowOffsetNode(const SJson* pJson, void* pObj) {
×
7356
  SWindowOffsetNode* pNode = (SWindowOffsetNode*)pObj;
×
7357

7358
  int32_t code = jsonToNodeObject(pJson, jkWindowOffsetStartOffset, &pNode->pStartOffset);
×
7359
  if (TSDB_CODE_SUCCESS == code) {
×
7360
    code = jsonToNodeObject(pJson, jkWindowOffsetEndOffset, &pNode->pEndOffset);
×
7361
  }
7362
  return code;
×
7363
}
7364

7365
static const char* jkDatabaseOptionsBuffer = "Buffer";
7366
static const char* jkDatabaseOptionsCacheModel = "CacheModel";
7367
static const char* jkDatabaseOptionsCompressionLevel = "CompressionLevel";
7368
static const char* jkDatabaseOptionsDaysPerFileNode = "DaysPerFileNode";
7369
static const char* jkDatabaseOptionsDaysPerFile = "DaysPerFile";
7370
static const char* jkDatabaseOptionsFsyncPeriod = "FsyncPeriod";
7371
static const char* jkDatabaseOptionsMaxRowsPerBlock = "MaxRowsPerBlock";
7372
static const char* jkDatabaseOptionsMinRowsPerBlock = "MinRowsPerBlock";
7373
static const char* jkDatabaseOptionsKeep = "Keep";
7374
static const char* jkDatabaseOptionsPages = "Pages";
7375
static const char* jkDatabaseOptionsPagesize = "Pagesize";
7376
static const char* jkDatabaseOptionsPrecision = "Precision";
7377
static const char* jkDatabaseOptionsReplica = "Replica";
7378
static const char* jkDatabaseOptionsStrict = "Strict";
7379
static const char* jkDatabaseOptionsWalLevel = "WalLevel";
7380
static const char* jkDatabaseOptionsNumOfVgroups = "NumOfVgroups";
7381
static const char* jkDatabaseOptionsSingleStable = "SingleStable";
7382
static const char* jkDatabaseOptionsRetentions = "Retentions";
7383
static const char* jkDatabaseOptionsSchemaless = "Schemaless";
7384

7385
// shared storage options, the 'S3' ones are for backward compatibility.
7386
static const char* jkDatabaseOptionsSsChunkSize = "SsChunkSize";
7387
static const char* jkDatabaseOptionsSsKeepLocalNode = "SsKeepLocalNode";
7388
static const char* jkDatabaseOptionsSsKeepLocal = "SsKeepLocal";
7389
static const char* jkDatabaseOptionsSsCompact = "SsCompact";
7390
static const char* jkDatabaseOptionsS3ChunkSize = "S3ChunkSize";
7391
static const char* jkDatabaseOptionsS3KeepLocalNode = "S3KeepLocalNode";
7392
static const char* jkDatabaseOptionsS3KeepLocal = "S3KeepLocal";
7393
static const char* jkDatabaseOptionsS3Compact = "S3Compact";
7394

7395
static const char* jkDatabaseOptionsCompactIntervalNode = "compactIntervalNode";
7396
static const char* jkDatabaseOptionsCompactTimeRange = "compactTimeRange";
7397
static const char* jkDatabaseOptionsCompactTimeOffsetNode = "compactTimeOffsetNode";
7398

7399
static int32_t databaseOptionsToJson(const void* pObj, SJson* pJson) {
42,000✔
7400
  const SDatabaseOptions* pNode = (const SDatabaseOptions*)pObj;
42,000✔
7401

7402
  int32_t code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsBuffer, pNode->buffer);
42,000✔
7403
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7404
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsCacheModel, pNode->cacheModel);
42,000✔
7405
  }
7406
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7407
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsCompressionLevel, pNode->compressionLevel);
42,000✔
7408
  }
7409
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7410
    code = tjsonAddObject(pJson, jkDatabaseOptionsDaysPerFileNode, nodeToJson, pNode->pDaysPerFile);
42,000✔
7411
  }
7412
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7413
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsDaysPerFile, pNode->daysPerFile);
42,000✔
7414
  }
7415
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7416
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsFsyncPeriod, pNode->fsyncPeriod);
42,000✔
7417
  }
7418
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7419
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsMaxRowsPerBlock, pNode->maxRowsPerBlock);
42,000✔
7420
  }
7421
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7422
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsMinRowsPerBlock, pNode->minRowsPerBlock);
42,000✔
7423
  }
7424
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7425
    code = nodeListToJson(pJson, jkDatabaseOptionsKeep, pNode->pKeep);
42,000✔
7426
  }
7427
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7428
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsPages, pNode->pages);
42,000✔
7429
  }
7430
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7431
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsPagesize, pNode->pagesize);
42,000✔
7432
  }
7433
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7434
    code = tjsonAddStringToObject(pJson, jkDatabaseOptionsPrecision, pNode->precisionStr);
42,000✔
7435
  }
7436
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7437
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsReplica, pNode->replica);
42,000✔
7438
  }
7439
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7440
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsStrict, pNode->strict);
42,000✔
7441
  }
7442
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7443
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsWalLevel, pNode->walLevel);
42,000✔
7444
  }
7445
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7446
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsNumOfVgroups, pNode->numOfVgroups);
42,000✔
7447
  }
7448
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7449
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSingleStable, pNode->singleStable);
42,000✔
7450
  }
7451
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7452
    code = nodeListToJson(pJson, jkDatabaseOptionsRetentions, pNode->pRetentions);
42,000✔
7453
  }
7454
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7455
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSchemaless, pNode->schemaless);
42,000✔
7456
  }
7457
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7458
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSsChunkSize, pNode->ssChunkSize);
42,000✔
7459
  }
7460
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7461
    code = tjsonAddObject(pJson, jkDatabaseOptionsSsKeepLocalNode, nodeToJson, pNode->ssKeepLocalStr);
42,000✔
7462
  }
7463
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7464
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSsKeepLocal, pNode->ssKeepLocal);
42,000✔
7465
  }
7466
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7467
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSsCompact, pNode->ssCompact);
42,000✔
7468
  }
7469
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7470
    code = tjsonAddObject(pJson, jkDatabaseOptionsCompactIntervalNode, nodeToJson, pNode->pCompactIntervalNode);
42,000✔
7471
  }
7472
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7473
    code = nodeListToJson(pJson, jkDatabaseOptionsCompactTimeRange, pNode->pCompactTimeRangeList);
42,000✔
7474
  }
7475
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7476
    code = tjsonAddObject(pJson, jkDatabaseOptionsCompactTimeOffsetNode, nodeToJson, pNode->pCompactTimeOffsetNode);
42,000✔
7477
  }
7478

7479
  return code;
42,000✔
7480
}
7481

7482
static int32_t jsonToDatabaseOptions(const SJson* pJson, void* pObj) {
42,000✔
7483
  SDatabaseOptions* pNode = (SDatabaseOptions*)pObj;
42,000✔
7484

7485
  int32_t code = tjsonGetIntValue(pJson, jkDatabaseOptionsBuffer, &pNode->buffer);
42,000✔
7486
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7487
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsCacheModel, &pNode->cacheModel);
42,000✔
7488
  }
7489
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7490
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsCompressionLevel, &pNode->compressionLevel);
42,000✔
7491
  }
7492
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7493
    code = jsonToNodeObject(pJson, jkDatabaseOptionsDaysPerFileNode, (SNode**)&pNode->pDaysPerFile);
42,000✔
7494
  }
7495
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7496
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsDaysPerFile, &pNode->daysPerFile);
42,000✔
7497
  }
7498
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7499
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsFsyncPeriod, &pNode->fsyncPeriod);
42,000✔
7500
  }
7501
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7502
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsMaxRowsPerBlock, &pNode->maxRowsPerBlock);
42,000✔
7503
  }
7504
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7505
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsMinRowsPerBlock, &pNode->minRowsPerBlock);
42,000✔
7506
  }
7507
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7508
    code = jsonToNodeList(pJson, jkDatabaseOptionsKeep, &pNode->pKeep);
42,000✔
7509
  }
7510
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7511
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsPages, &pNode->pages);
42,000✔
7512
  }
7513
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7514
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsPagesize, &pNode->pagesize);
42,000✔
7515
  }
7516
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7517
    code = tjsonGetStringValue1(pJson, jkDatabaseOptionsPrecision, pNode->precisionStr, sizeof(pNode->precisionStr));
42,000✔
7518
  }
7519
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7520
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsReplica, &pNode->replica);
42,000✔
7521
  }
7522
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7523
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsStrict, &pNode->strict);
42,000✔
7524
  }
7525
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7526
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsWalLevel, &pNode->walLevel);
42,000✔
7527
  }
7528
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7529
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsNumOfVgroups, &pNode->numOfVgroups);
42,000✔
7530
  }
7531
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7532
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsSingleStable, &pNode->singleStable);
42,000✔
7533
  }
7534
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7535
    code = jsonToNodeList(pJson, jkDatabaseOptionsRetentions, &pNode->pRetentions);
42,000✔
7536
  }
7537
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7538
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsSchemaless, &pNode->schemaless);
42,000✔
7539
  }
7540
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7541
    if (tjsonGetObjectItem(pJson, jkDatabaseOptionsSsChunkSize) != NULL) {
42,000✔
7542
      code = tjsonGetIntValue(pJson, jkDatabaseOptionsSsChunkSize, &pNode->ssChunkSize);
42,000✔
7543
    } else {
7544
      code = tjsonGetIntValue(pJson, jkDatabaseOptionsS3ChunkSize, &pNode->ssChunkSize);
×
7545
    }
7546
  }
7547
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7548
    if (tjsonGetObjectItem(pJson, jkDatabaseOptionsSsKeepLocalNode) != NULL) {
42,000✔
7549
      code = jsonToNodeObject(pJson, jkDatabaseOptionsSsKeepLocalNode, (SNode**)&pNode->ssKeepLocalStr);
×
7550
    } else {
7551
      code = jsonToNodeObject(pJson, jkDatabaseOptionsSsKeepLocalNode, (SNode**)&pNode->ssKeepLocalStr);
42,000✔
7552
    }
7553
  }
7554
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7555
    if (tjsonGetObjectItem(pJson, jkDatabaseOptionsSsKeepLocal) != NULL) {
42,000✔
7556
      code = tjsonGetIntValue(pJson, jkDatabaseOptionsSsKeepLocal, &pNode->ssKeepLocal);
42,000✔
7557
    } else {
7558
      code = tjsonGetIntValue(pJson, jkDatabaseOptionsS3KeepLocal, &pNode->ssKeepLocal);
×
7559
    }
7560
  }
7561
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7562
    if (tjsonGetObjectItem(pJson, jkDatabaseOptionsSsCompact) != NULL) {
42,000✔
7563
      code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsSsCompact, &pNode->ssCompact);
42,000✔
7564
    } else {
7565
      code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsS3Compact, &pNode->ssCompact);
×
7566
    }
7567
  }
7568
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7569
    code = jsonToNodeObject(pJson, jkDatabaseOptionsCompactIntervalNode, (SNode**)&pNode->pCompactIntervalNode);
42,000✔
7570
  }
7571
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7572
    code = jsonToNodeList(pJson, jkDatabaseOptionsCompactTimeRange, &pNode->pCompactTimeRangeList);
42,000✔
7573
  }
7574
  if (TSDB_CODE_SUCCESS == code) {
42,000✔
7575
    code = jsonToNodeObject(pJson, jkDatabaseOptionsCompactTimeOffsetNode, (SNode**)&pNode->pCompactTimeOffsetNode);
42,000✔
7576
  }
7577

7578
  return code;
42,000✔
7579
}
7580

7581
static const char* jkTableOptionsComment = "Comment";
7582
static const char* jkTableOptionsMaxDelay = "MaxDelay";
7583
static const char* jkTableOptionsWatermark = "Watermark";
7584
static const char* jkTableOptionsDeleteMark = "DeleteMark";
7585
static const char* jkTableOptionsRollupFuncs = "RollupFuncs";
7586
static const char* jkTableOptionsTtl = "Ttl";
7587
static const char* jkTableOptionsSma = "Sma";
7588

7589
static int32_t tableOptionsToJson(const void* pObj, SJson* pJson) {
7,800✔
7590
  const STableOptions* pNode = (const STableOptions*)pObj;
7,800✔
7591

7592
  int32_t code = tjsonAddStringToObject(pJson, jkTableOptionsComment, pNode->comment);
7,800✔
7593
  if (TSDB_CODE_SUCCESS == code) {
7,800✔
7594
    code = nodeListToJson(pJson, jkTableOptionsMaxDelay, pNode->pMaxDelay);
7,800✔
7595
  }
7596
  if (TSDB_CODE_SUCCESS == code) {
7,800✔
7597
    code = nodeListToJson(pJson, jkTableOptionsWatermark, pNode->pWatermark);
7,800✔
7598
  }
7599
  if (TSDB_CODE_SUCCESS == code) {
7,800✔
7600
    code = nodeListToJson(pJson, jkTableOptionsDeleteMark, pNode->pDeleteMark);
7,800✔
7601
  }
7602
  if (TSDB_CODE_SUCCESS == code) {
7,800✔
7603
    code = nodeListToJson(pJson, jkTableOptionsRollupFuncs, pNode->pRollupFuncs);
7,800✔
7604
  }
7605
  if (TSDB_CODE_SUCCESS == code) {
7,800✔
7606
    code = tjsonAddIntegerToObject(pJson, jkTableOptionsTtl, pNode->ttl);
7,800✔
7607
  }
7608
  if (TSDB_CODE_SUCCESS == code) {
7,800✔
7609
    code = nodeListToJson(pJson, jkTableOptionsSma, pNode->pSma);
7,800✔
7610
  }
7611

7612
  return code;
7,800✔
7613
}
7614

7615
static int32_t jsonToTableOptions(const SJson* pJson, void* pObj) {
9,600✔
7616
  STableOptions* pNode = (STableOptions*)pObj;
9,600✔
7617

7618
  int32_t code = tjsonGetStringValue1(pJson, jkTableOptionsComment, pNode->comment, sizeof(pNode->comment));
9,600✔
7619
  if (TSDB_CODE_SUCCESS == code) {
9,600✔
7620
    code = jsonToNodeList(pJson, jkTableOptionsMaxDelay, &pNode->pMaxDelay);
9,600✔
7621
  }
7622
  if (TSDB_CODE_SUCCESS == code) {
9,600✔
7623
    code = jsonToNodeList(pJson, jkTableOptionsWatermark, &pNode->pWatermark);
9,600✔
7624
  }
7625
  if (TSDB_CODE_SUCCESS == code) {
9,600✔
7626
    code = jsonToNodeList(pJson, jkTableOptionsDeleteMark, &pNode->pDeleteMark);
9,600✔
7627
  }
7628
  if (TSDB_CODE_SUCCESS == code) {
9,600✔
7629
    code = jsonToNodeList(pJson, jkTableOptionsRollupFuncs, &pNode->pRollupFuncs);
9,600✔
7630
  }
7631
  if (TSDB_CODE_SUCCESS == code) {
9,600✔
7632
    code = tjsonGetIntValue(pJson, jkTableOptionsTtl, &pNode->ttl);
9,600✔
7633
  }
7634
  if (TSDB_CODE_SUCCESS == code) {
9,600✔
7635
    code = jsonToNodeList(pJson, jkTableOptionsSma, &pNode->pSma);
9,600✔
7636
  }
7637

7638
  return code;
9,600✔
7639
}
7640

7641
static const char* jkColumnOptionsEncode = "encode";
7642
static const char* jkColumnOptionsCompress = "compress";
7643
static const char* jkColumnOptionsLevel = "level";
7644
static int32_t     columnOptionsToJson(const void* pObj, SJson* pJson) {
1,266,600✔
7645
  const SColumnOptions* pNode = (const SColumnOptions*)pObj;
1,266,600✔
7646
  int32_t               code = tjsonAddStringToObject(pJson, jkColumnOptionsEncode, pNode->encode);
1,266,600✔
7647
  code = tjsonAddStringToObject(pJson, jkColumnOptionsCompress, pNode->compress);
1,266,600✔
7648
  code = tjsonAddStringToObject(pJson, jkColumnOptionsLevel, pNode->compressLevel);
1,266,600✔
7649
  return code;
1,266,600✔
7650
}
7651

7652
static int32_t jsonToColumnOptions(const SJson* pJson, void* pObj) {
1,266,600✔
7653
  SColumnOptions* pNode = (SColumnOptions*)pObj;
1,266,600✔
7654

7655
  int32_t code = tjsonGetStringValue1(pJson, jkColumnOptionsEncode, pNode->encode, sizeof(pNode->encode));
1,266,600✔
7656
  code = tjsonGetStringValue1(pJson, jkColumnOptionsCompress, pNode->compress, sizeof(pNode->compress));
1,266,600✔
7657
  code = tjsonGetStringValue1(pJson, jkColumnOptionsLevel, pNode->compressLevel, sizeof(pNode->compressLevel));
1,266,600✔
7658
  return code;
1,266,600✔
7659
}
7660

7661
static const char* jkIndexOptionsFuncs = "Funcs";
7662
static const char* jkIndexOptionsInterval = "Interval";
7663
static const char* jkIndexOptionsOffset = "Offset";
7664
static const char* jkIndexOptionsSliding = "Sliding";
7665
static const char* jkIndexOptionsStreamOptions = "StreamOptions";
7666

7667
static int32_t indexOptionsToJson(const void* pObj, SJson* pJson) {
×
7668
  const SIndexOptions* pNode = (const SIndexOptions*)pObj;
×
7669

7670
  int32_t code = nodeListToJson(pJson, jkIndexOptionsFuncs, pNode->pFuncs);
×
7671
  if (TSDB_CODE_SUCCESS == code) {
×
7672
    code = tjsonAddObject(pJson, jkIndexOptionsInterval, nodeToJson, pNode->pInterval);
×
7673
  }
7674
  if (TSDB_CODE_SUCCESS == code) {
×
7675
    code = tjsonAddObject(pJson, jkIndexOptionsOffset, nodeToJson, pNode->pOffset);
×
7676
  }
7677
  if (TSDB_CODE_SUCCESS == code) {
×
7678
    code = tjsonAddObject(pJson, jkIndexOptionsSliding, nodeToJson, pNode->pSliding);
×
7679
  }
7680
  if (TSDB_CODE_SUCCESS == code) {
×
7681
    code = tjsonAddObject(pJson, jkIndexOptionsStreamOptions, nodeToJson, pNode->pStreamOptions);
×
7682
  }
7683

7684
  return code;
×
7685
}
7686

7687
static int32_t jsonToIndexOptions(const SJson* pJson, void* pObj) {
×
7688
  SIndexOptions* pNode = (SIndexOptions*)pObj;
×
7689

7690
  int32_t code = jsonToNodeList(pJson, jkIndexOptionsFuncs, &pNode->pFuncs);
×
7691
  if (TSDB_CODE_SUCCESS == code) {
×
7692
    code = jsonToNodeObject(pJson, jkIndexOptionsInterval, &pNode->pInterval);
×
7693
  }
7694
  if (TSDB_CODE_SUCCESS == code) {
×
7695
    code = jsonToNodeObject(pJson, jkIndexOptionsOffset, &pNode->pOffset);
×
7696
  }
7697
  if (TSDB_CODE_SUCCESS == code) {
×
7698
    code = jsonToNodeObject(pJson, jkIndexOptionsSliding, &pNode->pSliding);
×
7699
  }
7700
  if (TSDB_CODE_SUCCESS == code) {
×
7701
    code = jsonToNodeObject(pJson, jkIndexOptionsStreamOptions, &pNode->pStreamOptions);
×
7702
  }
7703

7704
  return code;
×
7705
}
7706

7707
static const char* jkExplainOptionsVerbose = "Verbose";
7708
static const char* jkExplainOptionsRatio = "Ratio";
7709

7710
static int32_t explainOptionsToJson(const void* pObj, SJson* pJson) {
3,000✔
7711
  const SExplainOptions* pNode = (const SExplainOptions*)pObj;
3,000✔
7712

7713
  int32_t code = tjsonAddBoolToObject(pJson, jkExplainOptionsVerbose, pNode->verbose);
3,000✔
7714
  if (TSDB_CODE_SUCCESS == code) {
3,000✔
7715
    code = tjsonAddDoubleToObject(pJson, jkExplainOptionsRatio, pNode->ratio);
3,000✔
7716
  }
7717

7718
  return code;
3,000✔
7719
}
7720

7721
static int32_t jsonToExplainOptions(const SJson* pJson, void* pObj) {
3,000✔
7722
  SExplainOptions* pNode = (SExplainOptions*)pObj;
3,000✔
7723

7724
  int32_t code = tjsonGetBoolValue(pJson, jkExplainOptionsVerbose, &pNode->verbose);
3,000✔
7725
  if (TSDB_CODE_SUCCESS == code) {
3,000✔
7726
    code = tjsonGetDoubleValue(pJson, jkExplainOptionsRatio, &pNode->ratio);
3,000✔
7727
  }
7728

7729
  return code;
3,000✔
7730
}
7731

7732
static const char* jkStreamOptionsTriggerType = "TriggerType";
7733
static const char* jkStreamOptionsDelay = "Delay";
7734
static const char* jkStreamOptionsWatermark = "Watermark";
7735
static const char* jkStreamOptionsDeleteMark = "DeleteMark";
7736
static const char* jkStreamOptionsFillHistory = "FillHistory";
7737
static const char* jkStreamOptionsIgnoreExpired = "IgnoreExpired";
7738
static const char* jkStreamOptionsRecInterval = "RecInterval";
7739

7740
static int32_t streamOptionsToJson(const void* pObj, SJson* pJson) {
23,600✔
7741
  const SStreamTriggerOptions* pNode = (const SStreamTriggerOptions*)pObj;
23,600✔
7742

7743
  return 0;
23,600✔
7744
}
7745

7746
static int32_t jsonToStreamOptions(const SJson* pJson, void* pObj) {
23,600✔
7747
  SStreamTriggerOptions* pNode = (SStreamTriggerOptions*)pObj;
23,600✔
7748

7749
  return 0;
23,600✔
7750
}
7751

7752
static const char* jkStreamNotifyOptionsAddrUrls = "AddrUrls";
7753
static const char* jkStreamNotifyOptionsEventType = "EventType";
7754
static const char* jkStreamNotifyOptionsErrorHandle = "ErrorHandle";
7755
static const char* jkStreamNotifyOptionsNotifyHistory = "NotifyHistory";
7756

7757
static int32_t streamNotifyOptionsToJson(const void* pObj, SJson* pJson) {
4,000✔
7758
  const SStreamNotifyOptions* pNotifyOption = (const SStreamNotifyOptions*)pObj;
4,000✔
7759
  int32_t                     code = nodeListToJson(pJson, jkStreamNotifyOptionsAddrUrls, pNotifyOption->pAddrUrls);
4,000✔
7760

7761
  return code;
4,000✔
7762
}
7763

7764
static int32_t jsonToStreamNotifyOptions(const SJson* pJson, void* pObj) {
4,000✔
7765
  SStreamNotifyOptions* pNotifyOption = (SStreamNotifyOptions*)pObj;
4,000✔
7766
  int32_t               code = jsonToNodeList(pJson, jkStreamNotifyOptionsAddrUrls, &pNotifyOption->pAddrUrls);
4,000✔
7767
  int32_t               val = 0;
4,000✔
7768

7769
  return code;
4,000✔
7770
}
7771

7772
static const char* jkColumnReferenceColumnName = "ColumnName";
7773
static const char* jkColumnReferenceRefDbName = "RefDbName";
7774
static const char* jkColumnReferenceRefTableName = "RefTableName";
7775
static const char* jkColumnReferenceRefColumnName = "RefColumnName";
7776
static int32_t     columnReferenceToJson(const void* pObj, SJson* pJson) {
×
7777
  const SColumnRefNode* pNode = (const SColumnRefNode*)pObj;
×
7778
  int32_t               code = tjsonAddStringToObject(pJson, jkColumnReferenceColumnName, pNode->colName);
×
7779
  if (TSDB_CODE_SUCCESS == code) {
×
7780
    code = tjsonAddStringToObject(pJson, jkColumnReferenceRefDbName, pNode->refDbName);
×
7781
  }
7782
  if (TSDB_CODE_SUCCESS == code) {
×
7783
    code = tjsonAddStringToObject(pJson, jkColumnReferenceRefTableName, pNode->refTableName);
×
7784
  }
7785
  if (TSDB_CODE_SUCCESS == code) {
×
7786
    code = tjsonAddStringToObject(pJson, jkColumnReferenceRefColumnName, pNode->refColName);
×
7787
  }
7788
  return code;
×
7789
}
7790

7791
static int32_t jsonToColumnReference(const SJson* pJson, void* pObj) {
×
7792
  SColumnRefNode* pNode = (SColumnRefNode*)pObj;
×
7793

7794
  int32_t code = tjsonGetStringValue1(pJson, jkColumnReferenceColumnName, pNode->colName, sizeof(pNode->colName));
×
7795
  if (TSDB_CODE_SUCCESS == code) {
×
7796
    code = tjsonGetStringValue1(pJson, jkColumnReferenceRefDbName, pNode->refDbName, sizeof(pNode->refDbName));
×
7797
  }
7798
  if (TSDB_CODE_SUCCESS == code) {
×
7799
    code = tjsonGetStringValue1(pJson, jkColumnReferenceRefTableName, pNode->refTableName, sizeof(pNode->refTableName));
×
7800
  }
7801
  if (TSDB_CODE_SUCCESS == code) {
×
7802
    code = tjsonGetStringValue1(pJson, jkColumnReferenceRefColumnName, pNode->refColName, sizeof(pNode->refColName));
×
7803
  }
7804
  return code;
×
7805
}
7806

7807
static const char* jkWhenThenWhen = "When";
7808
static const char* jkWhenThenThen = "Then";
7809

7810
static int32_t whenThenNodeToJson(const void* pObj, SJson* pJson) {
1,586,765✔
7811
  const SWhenThenNode* pNode = (const SWhenThenNode*)pObj;
1,586,765✔
7812

7813
  int32_t code = exprNodeToJson(pObj, pJson);
1,586,765✔
7814
  if (TSDB_CODE_SUCCESS == code) {
1,586,765✔
7815
    code = tjsonAddObject(pJson, jkWhenThenWhen, nodeToJson, pNode->pWhen);
1,586,765✔
7816
  }
7817
  if (TSDB_CODE_SUCCESS == code) {
1,586,765✔
7818
    code = tjsonAddObject(pJson, jkWhenThenThen, nodeToJson, pNode->pThen);
1,586,765✔
7819
  }
7820

7821
  return code;
1,586,765✔
7822
}
7823

7824
static int32_t jsonToWhenThenNode(const SJson* pJson, void* pObj) {
43,037✔
7825
  SWhenThenNode* pNode = (SWhenThenNode*)pObj;
43,037✔
7826

7827
  int32_t code = jsonToExprNode(pJson, pObj);
43,037✔
7828
  if (TSDB_CODE_SUCCESS == code) {
43,037✔
7829
    code = jsonToNodeObject(pJson, jkWhenThenWhen, &pNode->pWhen);
43,037✔
7830
  }
7831
  if (TSDB_CODE_SUCCESS == code) {
43,037✔
7832
    code = jsonToNodeObject(pJson, jkWhenThenThen, &pNode->pThen);
43,037✔
7833
  }
7834

7835
  return code;
43,037✔
7836
}
7837

7838
static const char* jkCaseWhenCase = "Case";
7839
static const char* jkCaseWhenWhenThenList = "WhenThenList";
7840
static const char* jkCaseWhenElse = "Else";
7841

7842
static int32_t caseWhenNodeToJson(const void* pObj, SJson* pJson) {
1,343,465✔
7843
  const SCaseWhenNode* pNode = (const SCaseWhenNode*)pObj;
1,343,465✔
7844

7845
  int32_t code = exprNodeToJson(pObj, pJson);
1,343,465✔
7846
  if (TSDB_CODE_SUCCESS == code) {
1,343,465✔
7847
    code = tjsonAddObject(pJson, jkCaseWhenCase, nodeToJson, pNode->pCase);
1,343,465✔
7848
  }
7849
  if (TSDB_CODE_SUCCESS == code) {
1,343,465✔
7850
    code = nodeListToJson(pJson, jkCaseWhenWhenThenList, pNode->pWhenThenList);
1,343,465✔
7851
  }
7852
  if (TSDB_CODE_SUCCESS == code) {
1,343,465✔
7853
    code = tjsonAddObject(pJson, jkCaseWhenElse, nodeToJson, pNode->pElse);
1,343,465✔
7854
  }
7855

7856
  return code;
1,343,465✔
7857
}
7858

7859
static int32_t jsonToCaseWhenNode(const SJson* pJson, void* pObj) {
41,437✔
7860
  SCaseWhenNode* pNode = (SCaseWhenNode*)pObj;
41,437✔
7861

7862
  int32_t code = jsonToExprNode(pJson, pObj);
41,437✔
7863
  if (TSDB_CODE_SUCCESS == code) {
41,437✔
7864
    code = jsonToNodeObject(pJson, jkCaseWhenCase, &pNode->pCase);
41,437✔
7865
  }
7866
  if (TSDB_CODE_SUCCESS == code) {
41,437✔
7867
    code = jsonToNodeList(pJson, jkCaseWhenWhenThenList, &pNode->pWhenThenList);
41,437✔
7868
  }
7869
  if (TSDB_CODE_SUCCESS == code) {
41,437✔
7870
    code = jsonToNodeObject(pJson, jkCaseWhenElse, &pNode->pElse);
41,437✔
7871
  }
7872

7873
  return code;
41,437✔
7874
}
7875

7876
static const char* jkDataBlockDescDataBlockId = "DataBlockId";
7877
static const char* jkDataBlockDescSlots = "Slots";
7878
static const char* jkDataBlockTotalRowSize = "TotalRowSize";
7879
static const char* jkDataBlockOutputRowSize = "OutputRowSize";
7880
static const char* jkDataBlockPrecision = "Precision";
7881

7882
static int32_t dataBlockDescNodeToJson(const void* pObj, SJson* pJson) {
1,161,355,304✔
7883
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
1,161,355,304✔
7884

7885
  int32_t code = tjsonAddIntegerToObject(pJson, jkDataBlockDescDataBlockId, pNode->dataBlockId);
1,161,355,304✔
7886
  if (TSDB_CODE_SUCCESS == code) {
1,161,355,321✔
7887
    code = tjsonAddIntegerToObject(pJson, jkDataBlockTotalRowSize, pNode->totalRowSize);
1,161,355,321✔
7888
  }
7889
  if (TSDB_CODE_SUCCESS == code) {
1,161,357,414✔
7890
    code = tjsonAddIntegerToObject(pJson, jkDataBlockOutputRowSize, pNode->outputRowSize);
1,161,357,414✔
7891
  }
7892
  if (TSDB_CODE_SUCCESS == code) {
1,161,354,067✔
7893
    code = nodeListToJson(pJson, jkDataBlockDescSlots, pNode->pSlots);
1,161,354,067✔
7894
  }
7895
  if (TSDB_CODE_SUCCESS == code) {
1,161,357,303✔
7896
    code = tjsonAddIntegerToObject(pJson, jkDataBlockPrecision, pNode->precision);
1,161,357,303✔
7897
  }
7898

7899
  return code;
1,161,359,052✔
7900
}
7901

7902
static int32_t jsonToDataBlockDescNode(const SJson* pJson, void* pObj) {
16,122,386✔
7903
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
16,122,386✔
7904

7905
  int32_t code = tjsonGetBigIntValue(pJson, jkDataBlockDescDataBlockId, &pNode->dataBlockId);
16,122,386✔
7906
  if (TSDB_CODE_SUCCESS == code) {
16,122,948✔
7907
    code = tjsonGetIntValue(pJson, jkDataBlockTotalRowSize, &pNode->totalRowSize);
16,122,948✔
7908
  }
7909
  if (TSDB_CODE_SUCCESS == code) {
16,122,948✔
7910
    code = tjsonGetIntValue(pJson, jkDataBlockOutputRowSize, &pNode->outputRowSize);
16,122,948✔
7911
  }
7912
  if (TSDB_CODE_SUCCESS == code) {
16,122,948✔
7913
    code = jsonToNodeList(pJson, jkDataBlockDescSlots, &pNode->pSlots);
16,122,948✔
7914
  }
7915
  if (TSDB_CODE_SUCCESS == code) {
16,122,561✔
7916
    code = tjsonGetUTinyIntValue(pJson, jkDataBlockPrecision, &pNode->precision);
16,122,561✔
7917
  }
7918

7919
  return code;
16,122,948✔
7920
}
7921

7922
static const char* jkSetOperatorOpType = "OpType";
7923
static const char* jkSetOperatorProjections = "Projections";
7924
static const char* jkSetOperatorLeft = "Left";
7925
static const char* jkSetOperatorRight = "Right";
7926
static const char* jkSetOperatorOrderByList = "OrderByList";
7927
static const char* jkSetOperatorLimit = "Limit";
7928

7929
static int32_t setOperatorToJson(const void* pObj, SJson* pJson) {
6,400✔
7930
  const SSetOperator* pNode = (const SSetOperator*)pObj;
6,400✔
7931

7932
  int32_t code = tjsonAddIntegerToObject(pJson, jkSetOperatorOpType, pNode->opType);
6,400✔
7933
  if (TSDB_CODE_SUCCESS == code) {
6,400✔
7934
    code = nodeListToJson(pJson, jkSetOperatorProjections, pNode->pProjectionList);
6,400✔
7935
  }
7936
  if (TSDB_CODE_SUCCESS == code) {
6,400✔
7937
    code = tjsonAddObject(pJson, jkSetOperatorLeft, nodeToJson, pNode->pLeft);
6,400✔
7938
  }
7939
  if (TSDB_CODE_SUCCESS == code) {
6,400✔
7940
    code = tjsonAddObject(pJson, jkSetOperatorRight, nodeToJson, pNode->pRight);
6,400✔
7941
  }
7942
  if (TSDB_CODE_SUCCESS == code) {
6,400✔
7943
    code = nodeListToJson(pJson, jkSetOperatorOrderByList, pNode->pOrderByList);
6,400✔
7944
  }
7945
  if (TSDB_CODE_SUCCESS == code) {
6,400✔
7946
    code = tjsonAddObject(pJson, jkSetOperatorLimit, nodeToJson, pNode->pLimit);
6,400✔
7947
  }
7948

7949
  return code;
6,400✔
7950
}
7951

7952
static int32_t jsonToSetOperator(const SJson* pJson, void* pObj) {
6,400✔
7953
  SSetOperator* pNode = (SSetOperator*)pObj;
6,400✔
7954

7955
  int32_t code = TSDB_CODE_SUCCESS;
6,400✔
7956
  tjsonGetNumberValue(pJson, jkSetOperatorOpType, pNode->opType, code);
6,400✔
7957
  if (TSDB_CODE_SUCCESS == code) {
6,400✔
7958
    code = jsonToNodeList(pJson, jkSetOperatorProjections, &pNode->pProjectionList);
6,400✔
7959
  }
7960
  if (TSDB_CODE_SUCCESS == code) {
6,400✔
7961
    code = jsonToNodeObject(pJson, jkSetOperatorLeft, &pNode->pLeft);
6,400✔
7962
  }
7963
  if (TSDB_CODE_SUCCESS == code) {
6,400✔
7964
    code = jsonToNodeObject(pJson, jkSetOperatorRight, &pNode->pRight);
6,400✔
7965
  }
7966
  if (TSDB_CODE_SUCCESS == code) {
6,400✔
7967
    code = jsonToNodeList(pJson, jkSetOperatorOrderByList, &pNode->pOrderByList);
6,400✔
7968
  }
7969
  if (TSDB_CODE_SUCCESS == code) {
6,400✔
7970
    code = jsonToNodeObject(pJson, jkSetOperatorLimit, &pNode->pLimit);
6,400✔
7971
  }
7972

7973
  return code;
6,400✔
7974
}
7975

7976
static const char* jkTimeRangeStart = "start";
7977
static const char* jkTimeRangeEnd = "end";
7978
static const char* jkTimeRangeNeedCalc = "NeedCalc";
7979

7980
static int32_t timeRangeNodeToJson(const void* pObj, SJson* pJson) {
1,296,515✔
7981
  const STimeRangeNode* pNode = (const STimeRangeNode*)pObj;
1,296,515✔
7982

7983
  int32_t code = tjsonAddObject(pJson, jkTimeRangeStart, nodeToJson, pNode->pStart);
1,296,515✔
7984
  if (TSDB_CODE_SUCCESS == code) {
1,296,515✔
7985
    code = tjsonAddObject(pJson, jkTimeRangeEnd, nodeToJson, pNode->pEnd);
1,296,515✔
7986
  }
7987
  if (TSDB_CODE_SUCCESS == code) {
1,296,515✔
7988
    code = tjsonAddBoolToObject(pJson, jkTimeRangeNeedCalc, pNode->needCalc);
1,296,515✔
7989
  }
7990
  return code;
1,296,515✔
7991
}
7992

7993
static int32_t jsonToTimeRangeNode(const SJson* pJson, void* pObj) {
1,588,273✔
7994
  STimeRangeNode* pNode = (STimeRangeNode*)pObj;
1,588,273✔
7995

7996
  int32_t code = jsonToNodeObject(pJson, jkTimeRangeStart, &pNode->pStart);
1,588,273✔
7997
  if (TSDB_CODE_SUCCESS == code) {
1,588,433✔
7998
    code = jsonToNodeObject(pJson, jkTimeRangeEnd, &pNode->pEnd);
1,588,433✔
7999
  }
8000
  if (TSDB_CODE_SUCCESS == code) {
1,588,433✔
8001
    code = tjsonGetBoolValue(pJson, jkTimeRangeNeedCalc, &pNode->needCalc);
1,588,433✔
8002
  }
8003
  return code;
1,588,433✔
8004
}
8005

8006
static const char* jkSelectStmtDistinct = "Distinct";
8007
static const char* jkSelectStmtProjections = "Projections";
8008
static const char* jkSelectStmtProjectionsBind = "ProjectionsBind";
8009
static const char* jkSelectStmtFrom = "From";
8010
static const char* jkSelectStmtWhere = "Where";
8011
static const char* jkSelectStmtPartitionBy = "PartitionBy";
8012
static const char* jkSelectStmtTags = "Tags";
8013
static const char* jkSelectStmtSubtable = "Subtable";
8014
static const char* jkSelectStmtWindow = "Window";
8015
static const char* jkSelectStmtGroupBy = "GroupBy";
8016
static const char* jkSelectStmtHaving = "Having";
8017
static const char* jkSelectStmtOrderBy = "OrderBy";
8018
static const char* jkSelectStmtLimit = "Limit";
8019
static const char* jkSelectStmtSlimit = "Slimit";
8020
static const char* jkSelectStmtStmtName = "StmtName";
8021
static const char* jkSelectStmtHasAggFuncs = "HasAggFuncs";
8022
static const char* jkSelectStmtInterpFuncs = "HasInterpFuncs";
8023
static const char* jkSelectStmtInterpFill = "InterpFill";
8024
static const char* jkSelectStmtInterpEvery = "InterpEvery";
8025
static const char* jkSelectStmtTwaOrElapsedFuncs = "HasTwaOrElapsedFuncs";
8026

8027
static int32_t selectStmtToJson(const void* pObj, SJson* pJson) {
440,715✔
8028
  const SSelectStmt* pNode = (const SSelectStmt*)pObj;
440,715✔
8029

8030
  int32_t code = tjsonAddBoolToObject(pJson, jkSelectStmtDistinct, pNode->isDistinct);
440,715✔
8031
  if (TSDB_CODE_SUCCESS == code) {
440,715✔
8032
    code = nodeListToJson(pJson, jkSelectStmtProjections, pNode->pProjectionList);
440,715✔
8033
  }
8034
  if (TSDB_CODE_SUCCESS == code) {
440,715✔
8035
    code = nodeListToJson(pJson, jkSelectStmtProjectionsBind, pNode->pProjectionBindList);
440,715✔
8036
  }
8037
  if (TSDB_CODE_SUCCESS == code) {
440,715✔
8038
    code = tjsonAddObject(pJson, jkSelectStmtFrom, nodeToJson, pNode->pFromTable);
440,715✔
8039
  }
8040
  if (TSDB_CODE_SUCCESS == code) {
440,715✔
8041
    code = tjsonAddObject(pJson, jkSelectStmtWhere, nodeToJson, pNode->pWhere);
440,715✔
8042
  }
8043
  if (TSDB_CODE_SUCCESS == code) {
440,715✔
8044
    code = nodeListToJson(pJson, jkSelectStmtPartitionBy, pNode->pPartitionByList);
440,715✔
8045
  }
8046
  if (TSDB_CODE_SUCCESS == code) {
440,715✔
8047
    code = tjsonAddObject(pJson, jkSelectStmtWindow, nodeToJson, pNode->pWindow);
440,715✔
8048
  }
8049
  if (TSDB_CODE_SUCCESS == code) {
440,715✔
8050
    code = nodeListToJson(pJson, jkSelectStmtGroupBy, pNode->pGroupByList);
440,715✔
8051
  }
8052
  if (TSDB_CODE_SUCCESS == code) {
440,715✔
8053
    code = tjsonAddObject(pJson, jkSelectStmtHaving, nodeToJson, pNode->pHaving);
440,715✔
8054
  }
8055
  if (TSDB_CODE_SUCCESS == code) {
440,715✔
8056
    code = nodeListToJson(pJson, jkSelectStmtOrderBy, pNode->pOrderByList);
440,715✔
8057
  }
8058
  if (TSDB_CODE_SUCCESS == code) {
440,715✔
8059
    code = tjsonAddObject(pJson, jkSelectStmtLimit, nodeToJson, pNode->pLimit);
440,715✔
8060
  }
8061
  if (TSDB_CODE_SUCCESS == code) {
440,715✔
8062
    code = tjsonAddObject(pJson, jkSelectStmtSlimit, nodeToJson, pNode->pSlimit);
440,715✔
8063
  }
8064
  if (TSDB_CODE_SUCCESS == code) {
440,715✔
8065
    code = tjsonAddStringToObject(pJson, jkSelectStmtStmtName, pNode->stmtName);
440,715✔
8066
  }
8067
  if (TSDB_CODE_SUCCESS == code) {
440,715✔
8068
    code = tjsonAddBoolToObject(pJson, jkSelectStmtHasAggFuncs, pNode->hasAggFuncs);
440,715✔
8069
  }
8070
  if (TSDB_CODE_SUCCESS == code) {
440,715✔
8071
    code = tjsonAddBoolToObject(pJson, jkSelectStmtInterpFuncs, pNode->hasInterpFunc);
440,715✔
8072
  }
8073
  if (TSDB_CODE_SUCCESS == code) {
440,715✔
8074
    code = tjsonAddBoolToObject(pJson, jkSelectStmtTwaOrElapsedFuncs, pNode->hasTwaOrElapsedFunc);
440,715✔
8075
  }
8076
  if (TSDB_CODE_SUCCESS == code) {
440,715✔
8077
    code = tjsonAddObject(pJson, jkSelectStmtInterpFill, nodeToJson, pNode->pFill);
440,715✔
8078
  }
8079
  if (TSDB_CODE_SUCCESS == code) {
440,715✔
8080
    code = tjsonAddObject(pJson, jkSelectStmtInterpEvery, nodeToJson, pNode->pEvery);
440,715✔
8081
  }
8082
  return code;
440,715✔
8083
}
8084

8085
static int32_t jsonToSelectStmt(const SJson* pJson, void* pObj) {
346,818✔
8086
  SSelectStmt* pNode = (SSelectStmt*)pObj;
346,818✔
8087

8088
  int32_t code = tjsonGetBoolValue(pJson, jkSelectStmtDistinct, &pNode->isDistinct);
346,818✔
8089
  if (TSDB_CODE_SUCCESS == code) {
346,818✔
8090
    code = jsonToNodeList(pJson, jkSelectStmtProjections, &pNode->pProjectionList);
346,818✔
8091
  }
8092
  if (TSDB_CODE_SUCCESS == code) {
346,818✔
8093
    code = jsonToNodeList(pJson, jkSelectStmtProjectionsBind, &pNode->pProjectionBindList);
346,818✔
8094
  }
8095
  if (TSDB_CODE_SUCCESS == code) {
346,818✔
8096
    code = jsonToNodeObject(pJson, jkSelectStmtFrom, &pNode->pFromTable);
346,818✔
8097
  }
8098
  if (TSDB_CODE_SUCCESS == code) {
346,818✔
8099
    code = jsonToNodeObject(pJson, jkSelectStmtWhere, &pNode->pWhere);
346,818✔
8100
  }
8101
  if (TSDB_CODE_SUCCESS == code) {
346,818✔
8102
    code = jsonToNodeList(pJson, jkSelectStmtPartitionBy, &pNode->pPartitionByList);
346,818✔
8103
  }
8104
  if (TSDB_CODE_SUCCESS == code) {
346,818✔
8105
    code = jsonToNodeObject(pJson, jkSelectStmtWindow, &pNode->pWindow);
346,818✔
8106
  }
8107
  if (TSDB_CODE_SUCCESS == code) {
346,818✔
8108
    code = jsonToNodeList(pJson, jkSelectStmtGroupBy, &pNode->pGroupByList);
346,818✔
8109
  }
8110
  if (TSDB_CODE_SUCCESS == code) {
346,818✔
8111
    code = jsonToNodeObject(pJson, jkSelectStmtHaving, &pNode->pHaving);
346,818✔
8112
  }
8113
  if (TSDB_CODE_SUCCESS == code) {
346,818✔
8114
    code = jsonToNodeList(pJson, jkSelectStmtOrderBy, &pNode->pOrderByList);
346,818✔
8115
  }
8116
  if (TSDB_CODE_SUCCESS == code) {
346,818✔
8117
    code = jsonToNodeObject(pJson, jkSelectStmtLimit, (SNode**)&pNode->pLimit);
346,818✔
8118
  }
8119
  if (TSDB_CODE_SUCCESS == code) {
346,818✔
8120
    code = jsonToNodeObject(pJson, jkSelectStmtSlimit, (SNode**)&pNode->pSlimit);
346,818✔
8121
  }
8122
  if (TSDB_CODE_SUCCESS == code) {
346,818✔
8123
    code = tjsonGetStringValue1(pJson, jkSelectStmtStmtName, pNode->stmtName, sizeof(pNode->stmtName));
346,818✔
8124
  }
8125
  if (TSDB_CODE_SUCCESS == code) {
346,818✔
8126
    code = tjsonGetBoolValue(pJson, jkSelectStmtHasAggFuncs, &pNode->hasAggFuncs);
346,818✔
8127
  }
8128
  if (TSDB_CODE_SUCCESS == code) {
346,818✔
8129
    code = tjsonGetBoolValue(pJson, jkSelectStmtInterpFuncs, &pNode->hasInterpFunc);
346,818✔
8130
  }
8131
  if (TSDB_CODE_SUCCESS == code) {
346,818✔
8132
    code = tjsonGetBoolValue(pJson, jkSelectStmtTwaOrElapsedFuncs, &pNode->hasTwaOrElapsedFunc);
346,818✔
8133
  }
8134
  if (TSDB_CODE_SUCCESS == code) {
346,818✔
8135
    code = jsonToNodeObject(pJson, jkSelectStmtInterpFill, &pNode->pFill);
346,818✔
8136
  }
8137
  if (TSDB_CODE_SUCCESS == code) {
346,818✔
8138
    code = jsonToNodeObject(pJson, jkSelectStmtInterpEvery, &pNode->pEvery);
346,818✔
8139
  }
8140

8141
  return code;
346,818✔
8142
}
8143

8144
static const char* jkVnodeModifyOpStmtSqlNodeType = "SqlNodeType";
8145
static const char* jkVnodeModifyOpStmtTotalRowsNum = "TotalRowsNum";
8146
static const char* jkVnodeModifyOpStmtTotalTbNum = "TotalTbNum";
8147

8148
static int32_t vnodeModifyStmtToJson(const void* pObj, SJson* pJson) {
12,000✔
8149
  const SVnodeModifyOpStmt* pNode = (const SVnodeModifyOpStmt*)pObj;
12,000✔
8150

8151
  int32_t code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType);
12,000✔
8152
  if (TSDB_CODE_SUCCESS == code) {
12,000✔
8153
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalRowsNum, pNode->totalRowsNum);
12,000✔
8154
  }
8155
  if (TSDB_CODE_SUCCESS == code) {
12,000✔
8156
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalTbNum, pNode->totalTbNum);
12,000✔
8157
  }
8158

8159
  return code;
12,000✔
8160
}
8161

8162
static int32_t jsonToVnodeModifyStmt(const SJson* pJson, void* pObj) {
12,000✔
8163
  SVnodeModifyOpStmt* pNode = (SVnodeModifyOpStmt*)pObj;
12,000✔
8164

8165
  int32_t code = TSDB_CODE_SUCCESS;
12,000✔
8166
  tjsonGetNumberValue(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType, code);
12,000✔
8167
  if (TSDB_CODE_SUCCESS == code) {
12,000✔
8168
    code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalRowsNum, &pNode->totalRowsNum);
12,000✔
8169
  }
8170
  if (TSDB_CODE_SUCCESS == code) {
12,000✔
8171
    code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalTbNum, &pNode->totalTbNum);
12,000✔
8172
  }
8173

8174
  return code;
12,000✔
8175
}
8176

8177
static const char* jkCreateDatabaseStmtDbName = "DbName";
8178
static const char* jkCreateDatabaseStmtIgnoreExists = "IgnoreExists";
8179
static const char* jkCreateDatabaseStmtOptions = "Options";
8180

8181
static int32_t createDatabaseStmtToJson(const void* pObj, SJson* pJson) {
5,400✔
8182
  const SCreateDatabaseStmt* pNode = (const SCreateDatabaseStmt*)pObj;
5,400✔
8183

8184
  int32_t code = tjsonAddStringToObject(pJson, jkCreateDatabaseStmtDbName, pNode->dbName);
5,400✔
8185
  if (TSDB_CODE_SUCCESS == code) {
5,400✔
8186
    code = tjsonAddBoolToObject(pJson, jkCreateDatabaseStmtIgnoreExists, pNode->ignoreExists);
5,400✔
8187
  }
8188
  if (TSDB_CODE_SUCCESS == code) {
5,400✔
8189
    code = tjsonAddObject(pJson, jkCreateDatabaseStmtOptions, nodeToJson, pNode->pOptions);
5,400✔
8190
  }
8191

8192
  return code;
5,400✔
8193
}
8194

8195
static int32_t jsonToCreateDatabaseStmt(const SJson* pJson, void* pObj) {
5,400✔
8196
  SCreateDatabaseStmt* pNode = (SCreateDatabaseStmt*)pObj;
5,400✔
8197

8198
  int32_t code = tjsonGetStringValue1(pJson, jkCreateDatabaseStmtDbName, pNode->dbName, sizeof(pNode->dbName));
5,400✔
8199
  if (TSDB_CODE_SUCCESS == code) {
5,400✔
8200
    code = tjsonGetBoolValue(pJson, jkCreateDatabaseStmtIgnoreExists, &pNode->ignoreExists);
5,400✔
8201
  }
8202
  if (TSDB_CODE_SUCCESS == code) {
5,400✔
8203
    code = jsonToNodeObject(pJson, jkCreateDatabaseStmtOptions, (SNode**)&pNode->pOptions);
5,400✔
8204
  }
8205

8206
  return code;
5,400✔
8207
}
8208

8209
static const char* jkAlterDatabaseStmtDbName = "DbName";
8210
static const char* jkAlterDatabaseStmtOptions = "Options";
8211

8212
static int32_t alterDatabaseStmtToJson(const void* pObj, SJson* pJson) {
36,600✔
8213
  const SAlterDatabaseStmt* pNode = (const SAlterDatabaseStmt*)pObj;
36,600✔
8214

8215
  int32_t code = tjsonAddStringToObject(pJson, jkAlterDatabaseStmtDbName, pNode->dbName);
36,600✔
8216
  if (TSDB_CODE_SUCCESS == code) {
36,600✔
8217
    code = tjsonAddObject(pJson, jkAlterDatabaseStmtOptions, nodeToJson, pNode->pOptions);
36,600✔
8218
  }
8219

8220
  return code;
36,600✔
8221
}
8222

8223
static int32_t jsonToAlterDatabaseStmt(const SJson* pJson, void* pObj) {
36,600✔
8224
  SAlterDatabaseStmt* pNode = (SAlterDatabaseStmt*)pObj;
36,600✔
8225

8226
  int32_t code = tjsonGetStringValue1(pJson, jkAlterDatabaseStmtDbName, pNode->dbName, sizeof(pNode->dbName));
36,600✔
8227
  if (TSDB_CODE_SUCCESS == code) {
36,600✔
8228
    code = jsonToNodeObject(pJson, jkAlterDatabaseStmtOptions, (SNode**)&pNode->pOptions);
36,600✔
8229
  }
8230

8231
  return code;
36,600✔
8232
}
8233

8234
static const char* jkTrimDatabaseStmtDbName = "DbName";
8235
static const char* jkTrimDatabaseStmtMaxSpeed = "MaxSpeed";
8236

8237
static int32_t trimDatabaseStmtToJson(const void* pObj, SJson* pJson) {
1,800✔
8238
  const STrimDatabaseStmt* pNode = (const STrimDatabaseStmt*)pObj;
1,800✔
8239

8240
  int32_t code = tjsonAddStringToObject(pJson, jkTrimDatabaseStmtDbName, pNode->dbName);
1,800✔
8241
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
8242
    code = tjsonAddIntegerToObject(pJson, jkTrimDatabaseStmtMaxSpeed, pNode->maxSpeed);
1,800✔
8243
  }
8244

8245
  return code;
1,800✔
8246
}
8247

8248
static int32_t jsonToTrimDatabaseStmt(const SJson* pJson, void* pObj) {
1,800✔
8249
  STrimDatabaseStmt* pNode = (STrimDatabaseStmt*)pObj;
1,800✔
8250

8251
  int32_t code = tjsonGetStringValue1(pJson, jkTrimDatabaseStmtDbName, pNode->dbName, sizeof(pNode->dbName));
1,800✔
8252
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
8253
    code = tjsonGetIntValue(pJson, jkTrimDatabaseStmtMaxSpeed, &pNode->maxSpeed);
1,800✔
8254
  }
8255

8256
  return code;
1,800✔
8257
}
8258

8259
static const char* jkSsMigrateDatabaseStmtDbName = "DbName";
8260

8261
static int32_t ssMigrateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
8262
  const SSsMigrateDatabaseStmt* pNode = (const SSsMigrateDatabaseStmt*)pObj;
×
8263

8264
  int32_t code = tjsonAddStringToObject(pJson, jkSsMigrateDatabaseStmtDbName, pNode->dbName);
×
8265

8266
  return code;
×
8267
}
8268

8269
static int32_t jsonToSsMigrateDatabaseStmt(const SJson* pJson, void* pObj) {
×
8270
  SSsMigrateDatabaseStmt* pNode = (SSsMigrateDatabaseStmt*)pObj;
×
8271

8272
  int32_t code = tjsonGetStringValue1(pJson, jkSsMigrateDatabaseStmtDbName, pNode->dbName, sizeof(pNode->dbName));
×
8273

8274
  return code;
×
8275
}
8276

8277
static const char* jkMountStmtMountName = "MountName";
8278
static const char* jkMountStmtIgnoreExists = "IgnoreExists";
8279
static const char* jkMountStmtIgnoreNotExists = "IgnoreNotExists";
8280
static const char* jkMountStmtDnode = "Dnode";
8281
static const char* jkMountStmtMountPath = "MountPath";
8282

8283
static int32_t createMountStmtToJson(const void* pObj, SJson* pJson) {
×
8284
  const SCreateMountStmt* pNode = (const SCreateMountStmt*)pObj;
×
8285

8286
  int32_t code = tjsonAddStringToObject(pJson, jkMountStmtMountName, pNode->mountName);
×
8287
  if (TSDB_CODE_SUCCESS == code) {
×
8288
    code = tjsonAddBoolToObject(pJson, jkMountStmtIgnoreExists, pNode->ignoreExists);
×
8289
  }
8290
  if (TSDB_CODE_SUCCESS == code) {
×
8291
    code = tjsonAddIntegerToObject(pJson, jkMountStmtDnode, pNode->dnodeId);
×
8292
  }
8293
  if (TSDB_CODE_SUCCESS == code) {
×
8294
    code = tjsonAddStringToObject(pJson, jkMountStmtMountPath, pNode->mountPath);
×
8295
  }
8296

8297
  return code;
×
8298
}
8299

8300
static int32_t jsonToCreateMountStmt(const SJson* pJson, void* pObj) {
×
8301
  SCreateMountStmt* pNode = (SCreateMountStmt*)pObj;
×
8302

8303
  int32_t code = tjsonGetStringValue1(pJson, jkMountStmtMountName, pNode->mountName, sizeof(pNode->mountName));
×
8304
  if (TSDB_CODE_SUCCESS == code) {
×
8305
    code = tjsonGetBoolValue(pJson, jkMountStmtIgnoreExists, &pNode->ignoreExists);
×
8306
  }
8307
  if (TSDB_CODE_SUCCESS == code) {
×
8308
    code = tjsonGetIntValue(pJson, jkMountStmtDnode, &pNode->dnodeId);
×
8309
  }
8310
  if (TSDB_CODE_SUCCESS == code) {
×
8311
    code = tjsonGetStringValue1(pJson, jkMountStmtMountPath, pNode->mountPath, sizeof(pNode->mountPath));
×
8312
  }
8313

8314
  return code;
×
8315
}
8316

8317
static int32_t dropMountStmtToJson(const void* pObj, SJson* pJson) {
×
8318
  const SDropMountStmt* pNode = (const SDropMountStmt*)pObj;
×
8319

8320
  int32_t code = tjsonAddStringToObject(pJson, jkMountStmtMountName, pNode->mountName);
×
8321
  if (TSDB_CODE_SUCCESS == code) {
×
8322
    code = tjsonAddBoolToObject(pJson, jkMountStmtIgnoreNotExists, pNode->ignoreNotExists);
×
8323
  }
8324
  return code;
×
8325
}
8326

8327
static int32_t jsonToDropMountStmt(const SJson* pJson, void* pObj) {
×
8328
  SDropMountStmt* pNode = (SDropMountStmt*)pObj;
×
8329

8330
  int32_t code = tjsonGetStringValue1(pJson, jkMountStmtMountName, pNode->mountName, sizeof(pNode->mountName));
×
8331
  if (TSDB_CODE_SUCCESS == code) {
×
8332
    code = tjsonGetBoolValue(pJson, jkMountStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
8333
  }
8334
  return code;
×
8335
}
8336

8337
static const char* jkCreateTableStmtDbName = "DbName";
8338
static const char* jkCreateTableStmtTableName = "TableName";
8339
static const char* jkCreateTableStmtIgnoreExists = "IgnoreExists";
8340
static const char* jkCreateTableStmtCols = "Cols";
8341
static const char* jkCreateTableStmtTags = "Tags";
8342
static const char* jkCreateTableStmtOptions = "Options";
8343

8344
static int32_t createTableStmtToJson(const void* pObj, SJson* pJson) {
4,500✔
8345
  const SCreateTableStmt* pNode = (const SCreateTableStmt*)pObj;
4,500✔
8346

8347
  int32_t code = tjsonAddStringToObject(pJson, jkCreateTableStmtDbName, pNode->dbName);
4,500✔
8348
  if (TSDB_CODE_SUCCESS == code) {
4,500✔
8349
    code = tjsonAddStringToObject(pJson, jkCreateTableStmtTableName, pNode->tableName);
4,500✔
8350
  }
8351
  if (TSDB_CODE_SUCCESS == code) {
4,500✔
8352
    code = tjsonAddBoolToObject(pJson, jkCreateTableStmtIgnoreExists, pNode->ignoreExists);
4,500✔
8353
  }
8354
  if (TSDB_CODE_SUCCESS == code) {
4,500✔
8355
    code = nodeListToJson(pJson, jkCreateTableStmtCols, pNode->pCols);
4,500✔
8356
  }
8357
  if (TSDB_CODE_SUCCESS == code) {
4,500✔
8358
    code = nodeListToJson(pJson, jkCreateTableStmtTags, pNode->pTags);
4,500✔
8359
  }
8360
  if (TSDB_CODE_SUCCESS == code) {
4,500✔
8361
    code = tjsonAddObject(pJson, jkCreateTableStmtOptions, nodeToJson, pNode->pOptions);
4,500✔
8362
  }
8363

8364
  return code;
4,500✔
8365
}
8366

8367
static int32_t jsonToCreateTableStmt(const SJson* pJson, void* pObj) {
4,500✔
8368
  SCreateTableStmt* pNode = (SCreateTableStmt*)pObj;
4,500✔
8369

8370
  int32_t code = tjsonGetStringValue1(pJson, jkCreateTableStmtDbName, pNode->dbName, sizeof(pNode->dbName));
4,500✔
8371
  if (TSDB_CODE_SUCCESS == code) {
4,500✔
8372
    code = tjsonGetStringValue1(pJson, jkCreateTableStmtTableName, pNode->tableName, sizeof(pNode->tableName));
4,500✔
8373
  }
8374
  if (TSDB_CODE_SUCCESS == code) {
4,500✔
8375
    code = tjsonGetBoolValue(pJson, jkCreateTableStmtIgnoreExists, &pNode->ignoreExists);
4,500✔
8376
  }
8377
  if (TSDB_CODE_SUCCESS == code) {
4,500✔
8378
    code = jsonToNodeList(pJson, jkCreateTableStmtCols, &pNode->pCols);
4,500✔
8379
  }
8380
  if (TSDB_CODE_SUCCESS == code) {
4,500✔
8381
    code = jsonToNodeList(pJson, jkCreateTableStmtTags, &pNode->pTags);
4,500✔
8382
  }
8383
  if (TSDB_CODE_SUCCESS == code) {
4,500✔
8384
    code = jsonToNodeObject(pJson, jkCreateTableStmtOptions, (SNode**)&pNode->pOptions);
4,500✔
8385
  }
8386

8387
  return code;
4,500✔
8388
}
8389

8390
static const char* jkCreateSubTableClauseDbName = "DbName";
8391
static const char* jkCreateSubTableClauseTableName = "TableName";
8392
static const char* jkCreateSubTableClauseUseDbName = "UseDbName";
8393
static const char* jkCreateSubTableClauseUseTableName = "UseTableName";
8394
static const char* jkCreateSubTableClauseIgnoreExists = "IgnoreExists";
8395
static const char* jkCreateSubTableClauseSpecificTags = "SpecificTags";
8396
static const char* jkCreateSubTableClauseValsOfTags = "ValsOfTags";
8397
static const char* jkCreateSubTableClauseOptions = "Options";
8398

8399
static int32_t createSubTableClauseToJson(const void* pObj, SJson* pJson) {
1,500✔
8400
  const SCreateSubTableClause* pNode = (const SCreateSubTableClause*)pObj;
1,500✔
8401

8402
  int32_t code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseDbName, pNode->dbName);
1,500✔
8403
  if (TSDB_CODE_SUCCESS == code) {
1,500✔
8404
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseTableName, pNode->tableName);
1,500✔
8405
  }
8406
  if (TSDB_CODE_SUCCESS == code) {
1,500✔
8407
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseUseDbName, pNode->useDbName);
1,500✔
8408
  }
8409
  if (TSDB_CODE_SUCCESS == code) {
1,500✔
8410
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseUseTableName, pNode->useTableName);
1,500✔
8411
  }
8412
  if (TSDB_CODE_SUCCESS == code) {
1,500✔
8413
    code = tjsonAddBoolToObject(pJson, jkCreateSubTableClauseIgnoreExists, pNode->ignoreExists);
1,500✔
8414
  }
8415
  if (TSDB_CODE_SUCCESS == code) {
1,500✔
8416
    code = nodeListToJson(pJson, jkCreateSubTableClauseSpecificTags, pNode->pSpecificTags);
1,500✔
8417
  }
8418
  if (TSDB_CODE_SUCCESS == code) {
1,500✔
8419
    code = nodeListToJson(pJson, jkCreateSubTableClauseValsOfTags, pNode->pValsOfTags);
1,500✔
8420
  }
8421
  if (TSDB_CODE_SUCCESS == code) {
1,500✔
8422
    code = tjsonAddObject(pJson, jkCreateSubTableClauseOptions, nodeToJson, pNode->pOptions);
1,500✔
8423
  }
8424

8425
  return code;
1,500✔
8426
}
8427

8428
static int32_t jsonToCreateSubTableClause(const SJson* pJson, void* pObj) {
1,500✔
8429
  SCreateSubTableClause* pNode = (SCreateSubTableClause*)pObj;
1,500✔
8430

8431
  int32_t code = tjsonGetStringValue1(pJson, jkCreateSubTableClauseDbName, pNode->dbName, sizeof(pNode->dbName));
1,500✔
8432
  if (TSDB_CODE_SUCCESS == code) {
1,500✔
8433
    code = tjsonGetStringValue1(pJson, jkCreateSubTableClauseTableName, pNode->tableName, sizeof(pNode->tableName));
1,500✔
8434
  }
8435
  if (TSDB_CODE_SUCCESS == code) {
1,500✔
8436
    code = tjsonGetStringValue1(pJson, jkCreateSubTableClauseUseDbName, pNode->useDbName, sizeof(pNode->useDbName));
1,500✔
8437
  }
8438
  if (TSDB_CODE_SUCCESS == code) {
1,500✔
8439
    code = tjsonGetStringValue1(pJson, jkCreateSubTableClauseUseTableName, pNode->useTableName,
1,500✔
8440
                                sizeof(pNode->useTableName));
8441
  }
8442
  if (TSDB_CODE_SUCCESS == code) {
1,500✔
8443
    code = tjsonGetBoolValue(pJson, jkCreateSubTableClauseIgnoreExists, &pNode->ignoreExists);
1,500✔
8444
  }
8445
  if (TSDB_CODE_SUCCESS == code) {
1,500✔
8446
    code = jsonToNodeList(pJson, jkCreateSubTableClauseSpecificTags, &pNode->pSpecificTags);
1,500✔
8447
  }
8448
  if (TSDB_CODE_SUCCESS == code) {
1,500✔
8449
    code = jsonToNodeList(pJson, jkCreateSubTableClauseValsOfTags, &pNode->pValsOfTags);
1,500✔
8450
  }
8451
  if (TSDB_CODE_SUCCESS == code) {
1,500✔
8452
    code = jsonToNodeObject(pJson, jkCreateSubTableClauseOptions, (SNode**)&pNode->pOptions);
1,500✔
8453
  }
8454

8455
  return code;
1,500✔
8456
}
8457

8458
static const char* jkCreateMultiTablesStmtSubTables = "SubTables";
8459

8460
static int32_t createMultiTablesStmtToJson(const void* pObj, SJson* pJson) {
900✔
8461
  const SCreateMultiTablesStmt* pNode = (const SCreateMultiTablesStmt*)pObj;
900✔
8462
  return nodeListToJson(pJson, jkCreateMultiTablesStmtSubTables, pNode->pSubTables);
900✔
8463
}
8464

8465
static int32_t jsonToCreateMultiTablesStmt(const SJson* pJson, void* pObj) {
900✔
8466
  SCreateMultiTablesStmt* pNode = (SCreateMultiTablesStmt*)pObj;
900✔
8467
  return jsonToNodeList(pJson, jkCreateMultiTablesStmtSubTables, &pNode->pSubTables);
900✔
8468
}
8469

8470
static const char* jkCreateVTableStmtDbName = "DbName";
8471
static const char* jkCreateVTableStmtTableName = "TableName";
8472
static const char* jkCreateVTableStmtIgnoreExists = "IgnoreExists";
8473
static const char* jkCreateVTableStmtCols = "Cols";
8474

8475
static int32_t createVTableStmtToJson(const void* pObj, SJson* pJson) {
×
8476
  const SCreateVTableStmt* pNode = (const SCreateVTableStmt*)pObj;
×
8477

8478
  int32_t code = tjsonAddStringToObject(pJson, jkCreateVTableStmtDbName, pNode->dbName);
×
8479
  if (TSDB_CODE_SUCCESS == code) {
×
8480
    code = tjsonAddStringToObject(pJson, jkCreateVTableStmtTableName, pNode->tableName);
×
8481
  }
8482
  if (TSDB_CODE_SUCCESS == code) {
×
8483
    code = tjsonAddBoolToObject(pJson, jkCreateVTableStmtIgnoreExists, pNode->ignoreExists);
×
8484
  }
8485
  if (TSDB_CODE_SUCCESS == code) {
×
8486
    code = nodeListToJson(pJson, jkCreateVTableStmtCols, pNode->pCols);
×
8487
  }
8488
  return code;
×
8489
}
8490

8491
static int32_t jsonToCreateVTableStmt(const SJson* pJson, void* pObj) {
×
8492
  SCreateVTableStmt* pNode = (SCreateVTableStmt*)pObj;
×
8493

8494
  int32_t code = tjsonGetStringValue1(pJson, jkCreateTableStmtDbName, pNode->dbName, sizeof(pNode->dbName));
×
8495
  if (TSDB_CODE_SUCCESS == code) {
×
8496
    code = tjsonGetStringValue1(pJson, jkCreateTableStmtTableName, pNode->tableName, sizeof(pNode->tableName));
×
8497
  }
8498
  if (TSDB_CODE_SUCCESS == code) {
×
8499
    code = tjsonGetBoolValue(pJson, jkCreateTableStmtIgnoreExists, &pNode->ignoreExists);
×
8500
  }
8501
  if (TSDB_CODE_SUCCESS == code) {
×
8502
    code = jsonToNodeList(pJson, jkCreateTableStmtCols, &pNode->pCols);
×
8503
  }
8504
  return code;
×
8505
}
8506

8507
static const char* jkCreateVSubTableStmtDbName = "DbName";
8508
static const char* jkCreateVSubTableStmtTableName = "TableName";
8509
static const char* jkCreateVSubTableStmtUseDbName = "UseDbName";
8510
static const char* jkCreateVSubTableStmtUseTableName = "UseTableName";
8511
static const char* jkCreateVSubTableStmtIgnoreExists = "IgnoreExists";
8512
static const char* jkCreateVSubTableStmtSpecificTags = "SpecificTags";
8513
static const char* jkCreateVSubTableStmtValsOfTags = "ValsOfTags";
8514
static const char* jkCreateVSubTableStmtSpecificColRefs = "SpecificColRefs";
8515
static const char* jkCreateVSubTableStmtValsOfColRefs = "ValsOfColRefs";
8516
static const char* jkCreateVSubTableStmtSpecificTagRefs = "SpecificTagRefs";
8517
static const char* jkCreateVSubTableStmtTagRefs = "TagRefs";
8518

8519
static int32_t createVSubTableStmtToJson(const void* pObj, SJson* pJson) {
×
8520
  const SCreateVSubTableStmt* pNode = (const SCreateVSubTableStmt*)pObj;
×
8521

8522
  int32_t code = tjsonAddStringToObject(pJson, jkCreateVSubTableStmtDbName, pNode->dbName);
×
8523
  if (TSDB_CODE_SUCCESS == code) {
×
8524
    code = tjsonAddStringToObject(pJson, jkCreateVSubTableStmtTableName, pNode->tableName);
×
8525
  }
8526
  if (TSDB_CODE_SUCCESS == code) {
×
8527
    code = tjsonAddStringToObject(pJson, jkCreateVSubTableStmtUseDbName, pNode->useDbName);
×
8528
  }
8529
  if (TSDB_CODE_SUCCESS == code) {
×
8530
    code = tjsonAddStringToObject(pJson, jkCreateVSubTableStmtUseTableName, pNode->useTableName);
×
8531
  }
8532
  if (TSDB_CODE_SUCCESS == code) {
×
8533
    code = tjsonAddBoolToObject(pJson, jkCreateVSubTableStmtIgnoreExists, pNode->ignoreExists);
×
8534
  }
8535
  if (TSDB_CODE_SUCCESS == code) {
×
8536
    code = nodeListToJson(pJson, jkCreateVSubTableStmtSpecificTags, pNode->pSpecificTags);
×
8537
  }
8538
  if (TSDB_CODE_SUCCESS == code) {
×
8539
    code = nodeListToJson(pJson, jkCreateVSubTableStmtValsOfTags, pNode->pValsOfTags);
×
8540
  }
8541
  if (TSDB_CODE_SUCCESS == code) {
×
8542
    code = nodeListToJson(pJson, jkCreateVSubTableStmtSpecificColRefs, pNode->pSpecificColRefs);
×
8543
  }
8544
  if (TSDB_CODE_SUCCESS == code) {
×
8545
    code = nodeListToJson(pJson, jkCreateVSubTableStmtValsOfColRefs, pNode->pColRefs);
×
8546
  }
8547
  if (TSDB_CODE_SUCCESS == code) {
×
8548
    code = nodeListToJson(pJson, jkCreateVSubTableStmtSpecificTagRefs, pNode->pSpecificTagRefs);
×
8549
  }
8550
  if (TSDB_CODE_SUCCESS == code) {
×
8551
    code = nodeListToJson(pJson, jkCreateVSubTableStmtTagRefs, pNode->pTagRefs);
×
8552
  }
8553
  return code;
×
8554
}
8555

8556
static int32_t jsonToCreateVSubTableStmt(const SJson* pJson, void* pObj) {
×
8557
  SCreateVSubTableStmt* pNode = (SCreateVSubTableStmt*)pObj;
×
8558

8559
  int32_t code = tjsonGetStringValue1(pJson, jkCreateVSubTableStmtDbName, pNode->dbName, sizeof(pNode->dbName));
×
8560
  if (TSDB_CODE_SUCCESS == code) {
×
8561
    code = tjsonGetStringValue1(pJson, jkCreateVSubTableStmtTableName, pNode->tableName, sizeof(pNode->tableName));
×
8562
  }
8563
  if (TSDB_CODE_SUCCESS == code) {
×
8564
    code = tjsonGetStringValue1(pJson, jkCreateVSubTableStmtUseDbName, pNode->useDbName, sizeof(pNode->useDbName));
×
8565
  }
8566
  if (TSDB_CODE_SUCCESS == code) {
×
8567
    code = tjsonGetStringValue1(pJson, jkCreateVSubTableStmtUseTableName, pNode->useTableName,
×
8568
                                sizeof(pNode->useTableName));
8569
  }
8570
  if (TSDB_CODE_SUCCESS == code) {
×
8571
    code = tjsonGetBoolValue(pJson, jkCreateVSubTableStmtIgnoreExists, &pNode->ignoreExists);
×
8572
  }
8573
  if (TSDB_CODE_SUCCESS == code) {
×
8574
    code = jsonToNodeList(pJson, jkCreateVSubTableStmtSpecificTags, &pNode->pSpecificTags);
×
8575
  }
8576
  if (TSDB_CODE_SUCCESS == code) {
×
8577
    code = jsonToNodeList(pJson, jkCreateVSubTableStmtValsOfTags, &pNode->pValsOfTags);
×
8578
  }
8579
  if (TSDB_CODE_SUCCESS == code) {
×
8580
    code = jsonToNodeList(pJson, jkCreateVSubTableStmtSpecificColRefs, &pNode->pSpecificColRefs);
×
8581
  }
8582
  if (TSDB_CODE_SUCCESS == code) {
×
8583
    code = jsonToNodeList(pJson, jkCreateVSubTableStmtValsOfColRefs, &pNode->pColRefs);
×
8584
  }
8585
  if (TSDB_CODE_SUCCESS == code) {
×
8586
    code = jsonToNodeList(pJson, jkCreateVSubTableStmtSpecificTagRefs, &pNode->pSpecificTagRefs);
×
8587
  }
8588
  if (TSDB_CODE_SUCCESS == code) {
×
8589
    code = jsonToNodeList(pJson, jkCreateVSubTableStmtTagRefs, &pNode->pTagRefs);
×
8590
  }
8591

8592
  return code;
×
8593
}
8594

8595
static const char* jkDropTableClauseDbName = "DbName";
8596
static const char* jkDropTableClauseTableName = "TableName";
8597
static const char* jkDropTableClauseIgnoreNotExists = "IgnoreNotExists";
8598

8599
static int32_t dropTableClauseToJson(const void* pObj, SJson* pJson) {
1,200✔
8600
  const SDropTableClause* pNode = (const SDropTableClause*)pObj;
1,200✔
8601

8602
  int32_t code = tjsonAddStringToObject(pJson, jkDropTableClauseDbName, pNode->dbName);
1,200✔
8603
  if (TSDB_CODE_SUCCESS == code) {
1,200✔
8604
    code = tjsonAddStringToObject(pJson, jkDropTableClauseTableName, pNode->tableName);
1,200✔
8605
  }
8606
  if (TSDB_CODE_SUCCESS == code) {
1,200✔
8607
    code = tjsonAddBoolToObject(pJson, jkDropTableClauseIgnoreNotExists, pNode->ignoreNotExists);
1,200✔
8608
  }
8609

8610
  return code;
1,200✔
8611
}
8612

8613
static int32_t jsonToDropTableClause(const SJson* pJson, void* pObj) {
1,200✔
8614
  SDropTableClause* pNode = (SDropTableClause*)pObj;
1,200✔
8615

8616
  int32_t code = tjsonGetStringValue1(pJson, jkDropTableClauseDbName, pNode->dbName, sizeof(pNode->dbName));
1,200✔
8617
  if (TSDB_CODE_SUCCESS == code) {
1,200✔
8618
    code = tjsonGetStringValue1(pJson, jkDropTableClauseTableName, pNode->tableName, sizeof(pNode->tableName));
1,200✔
8619
  }
8620
  if (TSDB_CODE_SUCCESS == code) {
1,200✔
8621
    code = tjsonGetBoolValue(pJson, jkDropTableClauseIgnoreNotExists, &pNode->ignoreNotExists);
1,200✔
8622
  }
8623

8624
  return code;
1,200✔
8625
}
8626

8627
static const char* jkDropTableStmtTables = "Tables";
8628

8629
static int32_t dropTableStmtToJson(const void* pObj, SJson* pJson) {
600✔
8630
  const SDropTableStmt* pNode = (const SDropTableStmt*)pObj;
600✔
8631
  return nodeListToJson(pJson, jkDropTableStmtTables, pNode->pTables);
600✔
8632
}
8633

8634
static int32_t jsonToDropTableStmt(const SJson* pJson, void* pObj) {
600✔
8635
  SDropTableStmt* pNode = (SDropTableStmt*)pObj;
600✔
8636
  return jsonToNodeList(pJson, jkDropTableStmtTables, &pNode->pTables);
600✔
8637
}
8638

8639
static const char* jkDropSuperTableStmtDbName = "DbName";
8640
static const char* jkDropSuperTableStmtTableName = "TableName";
8641
static const char* jkDropSuperTableStmtIgnoreNotExists = "IgnoreNotExists";
8642
static const char* jkDropSuperTableStmtwithOpt = "withOpt";
8643

8644
static int32_t dropStableStmtToJson(const void* pObj, SJson* pJson) {
900✔
8645
  const SDropSuperTableStmt* pNode = (const SDropSuperTableStmt*)pObj;
900✔
8646

8647
  int32_t code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
900✔
8648
  if (TSDB_CODE_SUCCESS == code) {
900✔
8649
    code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtTableName, pNode->tableName);
900✔
8650
  }
8651
  if (TSDB_CODE_SUCCESS == code) {
900✔
8652
    code = tjsonAddBoolToObject(pJson, jkDropSuperTableStmtIgnoreNotExists, pNode->ignoreNotExists);
900✔
8653
  }
8654
  if (TSDB_CODE_SUCCESS == code) {
900✔
8655
    code = tjsonAddBoolToObject(pJson, jkDropSuperTableStmtwithOpt, pNode->withOpt);
900✔
8656
  }
8657

8658
  return code;
900✔
8659
}
8660

8661
static int32_t jsonToDropStableStmt(const SJson* pJson, void* pObj) {
900✔
8662
  SDropSuperTableStmt* pNode = (SDropSuperTableStmt*)pObj;
900✔
8663

8664
  int32_t code = tjsonGetStringValue1(pJson, jkDropSuperTableStmtDbName, pNode->dbName, sizeof(pNode->dbName));
900✔
8665
  if (TSDB_CODE_SUCCESS == code) {
900✔
8666
    code = tjsonGetStringValue1(pJson, jkDropSuperTableStmtTableName, pNode->tableName, sizeof(pNode->tableName));
900✔
8667
  }
8668
  if (TSDB_CODE_SUCCESS == code) {
900✔
8669
    code = tjsonGetBoolValue(pJson, jkDropSuperTableStmtIgnoreNotExists, &pNode->ignoreNotExists);
900✔
8670
  }
8671
  if (TSDB_CODE_SUCCESS == code) {
900✔
8672
    code = tjsonGetBoolValue(pJson, jkDropSuperTableStmtwithOpt, &pNode->withOpt);
900✔
8673
  }
8674

8675
  return code;
900✔
8676
}
8677

8678
static const char* jkDropVirtualTableStmtDbName = "DbName";
8679
static const char* jkDropVirtualTableStmtTableName = "TableName";
8680
static const char* jkDropVirtualTableStmtIgnoreNotExists = "IgnoreNotExists";
8681
static const char* jkDropVirtualTableStmtwithOpt = "withOpt";
8682

8683
static int32_t dropVtableStmtToJson(const void* pObj, SJson* pJson) {
×
8684
  const SDropVirtualTableStmt* pNode = (const SDropVirtualTableStmt*)pObj;
×
8685

8686
  int32_t code = tjsonAddStringToObject(pJson, jkDropVirtualTableStmtDbName, pNode->dbName);
×
8687
  if (TSDB_CODE_SUCCESS == code) {
×
8688
    code = tjsonAddStringToObject(pJson, jkDropVirtualTableStmtTableName, pNode->tableName);
×
8689
  }
8690
  if (TSDB_CODE_SUCCESS == code) {
×
8691
    code = tjsonAddBoolToObject(pJson, jkDropVirtualTableStmtIgnoreNotExists, pNode->ignoreNotExists);
×
8692
  }
8693
  if (TSDB_CODE_SUCCESS == code) {
×
8694
    code = tjsonAddBoolToObject(pJson, jkDropVirtualTableStmtwithOpt, pNode->withOpt);
×
8695
  }
8696

8697
  return code;
×
8698
}
8699

8700
static int32_t jsonToDropVtableStmt(const SJson* pJson, void* pObj) {
×
8701
  SDropVirtualTableStmt* pNode = (SDropVirtualTableStmt*)pObj;
×
8702

8703
  int32_t code = tjsonGetStringValue1(pJson, jkDropSuperTableStmtDbName, pNode->dbName, sizeof(pNode->dbName));
×
8704
  if (TSDB_CODE_SUCCESS == code) {
×
8705
    code = tjsonGetStringValue1(pJson, jkDropVirtualTableStmtTableName, pNode->tableName, sizeof(pNode->tableName));
×
8706
  }
8707
  if (TSDB_CODE_SUCCESS == code) {
×
8708
    code = tjsonGetBoolValue(pJson, jkDropVirtualTableStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
8709
  }
8710
  if (TSDB_CODE_SUCCESS == code) {
×
8711
    code = tjsonGetBoolValue(pJson, jkDropVirtualTableStmtwithOpt, &pNode->withOpt);
×
8712
  }
8713

8714
  return code;
×
8715
}
8716

8717
static const char* jkAlterTableStmtDbName = "DbName";
8718
static const char* jkAlterTableStmtTableName = "TableName";
8719
static const char* jkAlterTableStmtAlterType = "AlterType";
8720
static const char* jkAlterTableStmtColName = "ColName";
8721
static const char* jkAlterTableStmtNewColName = "NewColName";
8722
static const char* jkAlterTableStmtOptions = "Options";
8723
static const char* jkAlterTableStmtNewDataType = "NewDataType";
8724
static const char* jkAlterTableStmtNewTagVal = "NewTagVal";
8725

8726
static int32_t alterTableStmtToJson(const void* pObj, SJson* pJson) {
16,200✔
8727
  const SAlterTableStmt* pNode = (const SAlterTableStmt*)pObj;
16,200✔
8728

8729
  int32_t code = tjsonAddStringToObject(pJson, jkAlterTableStmtDbName, pNode->dbName);
16,200✔
8730
  if (TSDB_CODE_SUCCESS == code) {
16,200✔
8731
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtTableName, pNode->tableName);
16,200✔
8732
  }
8733
  if (TSDB_CODE_SUCCESS == code) {
16,200✔
8734
    code = tjsonAddIntegerToObject(pJson, jkAlterTableStmtAlterType, pNode->alterType);
16,200✔
8735
  }
8736
  if (TSDB_CODE_SUCCESS == code) {
16,200✔
8737
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtColName, pNode->colName);
16,200✔
8738
  }
8739
  if (TSDB_CODE_SUCCESS == code) {
16,200✔
8740
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtNewColName, pNode->newColName);
16,200✔
8741
  }
8742
  if (TSDB_CODE_SUCCESS == code) {
16,200✔
8743
    code = tjsonAddObject(pJson, jkAlterTableStmtOptions, nodeToJson, pNode->pOptions);
16,200✔
8744
  }
8745
  if (TSDB_CODE_SUCCESS == code) {
16,200✔
8746
    code = tjsonAddObject(pJson, jkAlterTableStmtNewDataType, dataTypeToJson, &pNode->dataType);
16,200✔
8747
  }
8748
  if (TSDB_CODE_SUCCESS == code) {
16,200✔
8749
    code = tjsonAddObject(pJson, jkAlterTableStmtOptions, nodeToJson, pNode->pVal);
16,200✔
8750
  }
8751

8752
  return code;
16,200✔
8753
}
8754

8755
static int32_t jsonToAlterTableStmt(const SJson* pJson, void* pObj) {
16,200✔
8756
  SAlterTableStmt* pNode = (SAlterTableStmt*)pObj;
16,200✔
8757

8758
  int32_t code = tjsonGetStringValue1(pJson, jkAlterTableStmtDbName, pNode->dbName, sizeof(pNode->dbName));
16,200✔
8759
  if (TSDB_CODE_SUCCESS == code) {
16,200✔
8760
    code = tjsonGetStringValue1(pJson, jkAlterTableStmtTableName, pNode->tableName, sizeof(pNode->tableName));
16,200✔
8761
  }
8762
  if (TSDB_CODE_SUCCESS == code) {
16,200✔
8763
    code = tjsonGetTinyIntValue(pJson, jkAlterTableStmtAlterType, &pNode->alterType);
16,200✔
8764
  }
8765
  if (TSDB_CODE_SUCCESS == code) {
16,200✔
8766
    code = tjsonGetStringValue1(pJson, jkAlterTableStmtColName, pNode->colName, sizeof(pNode->colName));
16,200✔
8767
  }
8768
  if (TSDB_CODE_SUCCESS == code) {
16,200✔
8769
    code = tjsonGetStringValue1(pJson, jkAlterTableStmtNewColName, pNode->newColName, sizeof(pNode->newColName));
16,200✔
8770
  }
8771
  if (TSDB_CODE_SUCCESS == code) {
16,200✔
8772
    code = jsonToNodeObject(pJson, jkAlterTableStmtOptions, (SNode**)&pNode->pOptions);
16,200✔
8773
  }
8774
  if (TSDB_CODE_SUCCESS == code) {
16,200✔
8775
    code = tjsonToObject(pJson, jkAlterTableStmtNewDataType, jsonToDataType, &pNode->dataType);
16,200✔
8776
  }
8777
  if (TSDB_CODE_SUCCESS == code) {
16,200✔
8778
    code = jsonToNodeObject(pJson, jkAlterTableStmtOptions, (SNode**)&pNode->pVal);
16,200✔
8779
  }
8780

8781
  return code;
16,200✔
8782
}
8783

8784
static int32_t alterStableStmtToJson(const void* pObj, SJson* pJson) { return alterTableStmtToJson(pObj, pJson); }
8,700✔
8785

8786
static int32_t jsonToAlterStableStmt(const SJson* pJson, void* pObj) { return jsonToAlterTableStmt(pJson, pObj); }
8,700✔
8787

8788
static const char* jkCreateUserStmtUserName = "UserName";
8789
static const char* jkCreateUserStmtPassword = "Password";
8790
static const char* jkCreateUserStmtSysinfo = "Sysinfo";
8791

8792
static int32_t createUserStmtToJson(const void* pObj, SJson* pJson) {
1,800✔
8793
  const SCreateUserStmt* pNode = (const SCreateUserStmt*)pObj;
1,800✔
8794

8795
  int32_t code = tjsonAddStringToObject(pJson, jkCreateUserStmtUserName, pNode->userName);
1,800✔
8796
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
8797
    code = tjsonAddStringToObject(pJson, jkCreateUserStmtPassword, pNode->password);
1,800✔
8798
  }
8799
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
8800
    code = tjsonAddIntegerToObject(pJson, jkCreateUserStmtSysinfo, pNode->sysinfo);
1,800✔
8801
  }
8802

8803
  return code;
1,800✔
8804
}
8805

8806
static int32_t createEncryptAlgrStmtToJson(const void* pObj, SJson* pJson) {
×
8807
  const SCreateEncryptAlgrStmt* pNode = (const SCreateEncryptAlgrStmt*)pObj;
×
8808

8809
  int32_t code = tjsonAddStringToObject(pJson, "algorithm_id", pNode->algorithmId);
×
8810
  if (TSDB_CODE_SUCCESS == code) {
×
8811
    code = tjsonAddStringToObject(pJson, "name", pNode->name);
×
8812
  }
8813
  if (TSDB_CODE_SUCCESS == code) {
×
8814
    code = tjsonAddStringToObject(pJson, "desc", pNode->desc);
×
8815
  }
8816
  if (TSDB_CODE_SUCCESS == code) {
×
8817
    code = tjsonAddStringToObject(pJson, "type", pNode->algrType);
×
8818
  }
8819
  if (TSDB_CODE_SUCCESS == code) {
×
8820
    code = tjsonAddStringToObject(pJson, "ossl_algr_name", pNode->osslAlgrName);
×
8821
  }
8822

8823
  return code;
×
8824
}
8825

8826
static int32_t jsonToCreateUserStmt(const SJson* pJson, void* pObj) {
1,800✔
8827
  SCreateUserStmt* pNode = (SCreateUserStmt*)pObj;
1,800✔
8828

8829
  int32_t code = tjsonGetStringValue1(pJson, jkCreateUserStmtUserName, pNode->userName, sizeof(pNode->userName));
1,800✔
8830
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
8831
    code = tjsonGetStringValue1(pJson, jkCreateUserStmtPassword, pNode->password, sizeof(pNode->password));
1,800✔
8832
  }
8833
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
8834
    code = tjsonGetTinyIntValue(pJson, jkCreateUserStmtSysinfo, &pNode->sysinfo);
1,800✔
8835
  }
8836

8837
  return code;
1,800✔
8838
}
8839

8840
static int32_t jsonToCreateEncryptAlgrStmt(const SJson* pJson, void* pObj) {
×
8841
  SCreateEncryptAlgrStmt* pNode = (SCreateEncryptAlgrStmt*)pObj;
×
8842

8843
  int32_t code = tjsonGetStringValue1(pJson, "algorithm_id", pNode->algorithmId, sizeof(pNode->algorithmId));
×
8844
  if (TSDB_CODE_SUCCESS == code) {
×
8845
    code = tjsonGetStringValue1(pJson, "name", pNode->name, sizeof(pNode->name));
×
8846
  }
8847
  if (TSDB_CODE_SUCCESS == code) {
×
8848
    code = tjsonGetStringValue1(pJson, "desc", pNode->desc, sizeof(pNode->desc));
×
8849
  }
8850
  if (TSDB_CODE_SUCCESS == code) {
×
8851
    code = tjsonGetStringValue1(pJson, "type", pNode->algrType, sizeof(pNode->algrType));
×
8852
  }
8853
  if (TSDB_CODE_SUCCESS == code) {
×
8854
    code = tjsonGetStringValue1(pJson, "ossl_algr_name", pNode->osslAlgrName, sizeof(pNode->osslAlgrName));
×
8855
  }
8856

8857
  return code;
×
8858
}
8859

8860
static const char* jkAlterUserStmtUserName = "UserName";
8861
static const char* jkAlterUserStmtAlterType = "AlterType";
8862
static const char* jkAlterUserStmtPassword = "Password";
8863
static const char* jkAlterUserStmtEnable = "Enable";
8864
static const char* jkAlterUserStmtSysinfo = "Sysinfo";
8865
static const char* jkAlterUserStmtCreatedb = "Createdb";
8866

8867
static int32_t alterUserStmtToJson(const void* pObj, SJson* pJson) {
×
8868
  const SAlterUserStmt* pNode = (const SAlterUserStmt*)pObj;
×
8869
  int32_t code = tjsonAddStringToObject(pJson, jkAlterUserStmtUserName, pNode->userName);
×
8870
#if 0
8871
  if (TSDB_CODE_SUCCESS == code) {
8872
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtAlterType, pNode->alterType);
8873
  }
8874
  if (TSDB_CODE_SUCCESS == code) {
8875
    code = tjsonAddStringToObject(pJson, jkAlterUserStmtPassword, pNode->password);
8876
  }
8877
  if (TSDB_CODE_SUCCESS == code) {
8878
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtEnable, pNode->enable);
8879
  }
8880
  if (TSDB_CODE_SUCCESS == code) {
8881
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtSysinfo, pNode->sysinfo);
8882
  }
8883
  if (TSDB_CODE_SUCCESS == code) {
8884
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtCreatedb, pNode->createdb);
8885
  }
8886
#endif
8887
  return code;
×
8888
}
8889

8890
static int32_t jsonToAlterUserStmt(const SJson* pJson, void* pObj) {
×
8891
  SAlterUserStmt* pNode = (SAlterUserStmt*)pObj;
×
8892
  int32_t         code = tjsonGetStringValue1(pJson, jkAlterUserStmtUserName, pNode->userName, sizeof(pNode->userName));
×
8893
#if 0
8894
  if (TSDB_CODE_SUCCESS == code) {
8895
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtAlterType, &pNode->alterType);
8896
  }
8897
  if (TSDB_CODE_SUCCESS == code) {
8898
    code = tjsonGetStringValue1(pJson, jkAlterUserStmtPassword, pNode->password, sizeof(pNode->password));
8899
  }
8900
  if (TSDB_CODE_SUCCESS == code) {
8901
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtEnable, &pNode->enable);
8902
  }
8903
  if (TSDB_CODE_SUCCESS == code) {
8904
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtSysinfo, &pNode->sysinfo);
8905
  }
8906
  if (TSDB_CODE_SUCCESS == code) {
8907
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtCreatedb, &pNode->createdb);
8908
  }
8909
#endif
8910
  return code;
×
8911
}
8912

8913
static const char* jkDropUserStmtUserName = "UserName";
8914

8915
static int32_t dropUserStmtToJson(const void* pObj, SJson* pJson) {
900✔
8916
  const SDropUserStmt* pNode = (const SDropUserStmt*)pObj;
900✔
8917
  return tjsonAddStringToObject(pJson, jkDropUserStmtUserName, pNode->userName);
900✔
8918
}
8919

8920
static int32_t jsonToDropUserStmt(const SJson* pJson, void* pObj) {
900✔
8921
  SDropUserStmt* pNode = (SDropUserStmt*)pObj;
900✔
8922
  return tjsonGetStringValue1(pJson, jkDropUserStmtUserName, pNode->userName, sizeof(pNode->userName));
900✔
8923
}
8924

8925
static const char* jkRoleStmtRoleName = "RoleName";
8926

8927
static int32_t createRoleStmtToJson(const void* pObj, SJson* pJson) {
×
8928
  const SCreateRoleStmt* pNode = (const SCreateRoleStmt*)pObj;
×
8929

8930
  int32_t code = tjsonAddStringToObject(pJson, jkRoleStmtRoleName, pNode->name);
×
8931
  if (TSDB_CODE_SUCCESS == code) {
×
8932
    code = tjsonAddBoolToObject(pJson, jkStmtIgnoreExists, pNode->ignoreExists);
×
8933
  }
8934
  return code;
×
8935
}
8936

8937
static int32_t jsonToCreateRoleStmt(const SJson* pJson, void* pObj) {
×
8938
  SCreateRoleStmt* pNode = (SCreateRoleStmt*)pObj;
×
8939

8940
  int32_t code = tjsonGetStringValue1(pJson, jkRoleStmtRoleName, pNode->name, sizeof(pNode->name));
×
8941
  if (TSDB_CODE_SUCCESS == code) {
×
8942
    code = tjsonGetBoolValue(pJson, jkStmtIgnoreExists, &pNode->ignoreExists);
×
8943
  }
8944
  return code;
×
8945
}
8946

8947
static int32_t dropRoleStmtToJson(const void* pObj, SJson* pJson) {
×
8948
  const SDropRoleStmt* pNode = (const SDropRoleStmt*)pObj;
×
8949

8950
  int32_t code = tjsonAddStringToObject(pJson, jkRoleStmtRoleName, pNode->name);
×
8951
  if (TSDB_CODE_SUCCESS == code) {
×
8952
    code = tjsonAddBoolToObject(pJson, jkStmtIgnoreNotExists, pNode->ignoreNotExists);
×
8953
  }
8954
  return code;
×
8955
}
8956

8957
static int32_t jsonToDropRoleStmt(const SJson* pJson, void* pObj) {
×
8958
  SDropRoleStmt* pNode = (SDropRoleStmt*)pObj;
×
8959

8960
  int32_t code = tjsonGetStringValue1(pJson, jkRoleStmtRoleName, pNode->name, sizeof(pNode->name));
×
8961
  if (TSDB_CODE_SUCCESS == code) {
×
8962
    code = tjsonGetBoolValue(pJson, jkStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
8963
  }
8964
  return code;
×
8965
}
8966

8967
static int32_t alterRoleStmtToJson(const void* pObj, SJson* pJson) {
×
8968
  const SAlterRoleStmt* pNode = (const SAlterRoleStmt*)pObj;
×
8969

8970
  int32_t code = tjsonAddStringToObject(pJson, jkRoleStmtRoleName, pNode->name);
×
8971
  if (TSDB_CODE_SUCCESS == code) {
×
8972
    code = tjsonAddIntegerToObject(pJson, jkValueFlag, pNode->flag);
×
8973
  }
8974
  return code;
×
8975
}
8976

8977
static int32_t jsonToAlterRoleStmt(const SJson* pJson, void* pObj) {
×
8978
  SAlterRoleStmt* pNode = (SAlterRoleStmt*)pObj;
×
8979

8980
  int32_t code = tjsonGetStringValue1(pJson, jkRoleStmtRoleName, pNode->name, sizeof(pNode->name));
×
8981
  if (TSDB_CODE_SUCCESS == code) {
×
8982
    code = tjsonGetUTinyIntValue(pJson, jkValueFlag, &pNode->flag);
×
8983
  }
8984
  return code;
×
8985
}
8986

8987
static const char* jkDropEncryptAlgrStmtUserName = "algorithm_id";
8988

8989
static int32_t dropEncryptAlgrStmtToJson(const void* pObj, SJson* pJson) {
×
8990
  const SDropEncryptAlgrStmt* pNode = (const SDropEncryptAlgrStmt*)pObj;
×
8991
  return tjsonAddStringToObject(pJson, jkDropEncryptAlgrStmtUserName, pNode->algorithmId);
×
8992
}
8993

8994
static int32_t jsonToDropEncryptAlgrStmt(const SJson* pJson, void* pObj) {
×
8995
  SDropEncryptAlgrStmt* pNode = (SDropEncryptAlgrStmt*)pObj;
×
8996
  return tjsonGetStringValue1(pJson, jkDropEncryptAlgrStmtUserName, pNode->algorithmId, sizeof(pNode->algorithmId));
×
8997
}
8998

8999
static const char* jkUseDatabaseStmtDbName = "DbName";
9000

9001
static int32_t useDatabaseStmtToJson(const void* pObj, SJson* pJson) {
900✔
9002
  const SUseDatabaseStmt* pNode = (const SUseDatabaseStmt*)pObj;
900✔
9003
  return tjsonAddStringToObject(pJson, jkUseDatabaseStmtDbName, pNode->dbName);
900✔
9004
}
9005

9006
static int32_t jsonToUseDatabaseStmt(const SJson* pJson, void* pObj) {
900✔
9007
  SUseDatabaseStmt* pNode = (SUseDatabaseStmt*)pObj;
900✔
9008
  return tjsonGetStringValue1(pJson, jkUseDatabaseStmtDbName, pNode->dbName, sizeof(pNode->dbName));
900✔
9009
}
9010

9011
static const char* jkCreateDnodeStmtFqdn = "Fqdn";
9012
static const char* jkCreateDnodeStmtPort = "Port";
9013

9014
static int32_t createDnodeStmtToJson(const void* pObj, SJson* pJson) {
5,400✔
9015
  const SCreateDnodeStmt* pNode = (const SCreateDnodeStmt*)pObj;
5,400✔
9016

9017
  int32_t code = tjsonAddStringToObject(pJson, jkCreateDnodeStmtFqdn, pNode->fqdn);
5,400✔
9018
  if (TSDB_CODE_SUCCESS == code) {
5,400✔
9019
    code = tjsonAddIntegerToObject(pJson, jkCreateDnodeStmtPort, pNode->port);
5,400✔
9020
  }
9021

9022
  return code;
5,400✔
9023
}
9024

9025
static int32_t jsonToCreateDnodeStmt(const SJson* pJson, void* pObj) {
5,400✔
9026
  SCreateDnodeStmt* pNode = (SCreateDnodeStmt*)pObj;
5,400✔
9027

9028
  int32_t code = tjsonGetStringValue1(pJson, jkCreateDnodeStmtFqdn, pNode->fqdn, sizeof(pNode->fqdn));
5,400✔
9029
  if (TSDB_CODE_SUCCESS == code) {
5,400✔
9030
    code = tjsonGetIntValue(pJson, jkCreateDnodeStmtPort, &pNode->port);
5,400✔
9031
  }
9032

9033
  return code;
5,400✔
9034
}
9035

9036
static const char* jkAlterDnodeStmtDnodeId = "DnodeId";
9037
static const char* jkAlterDnodeStmtConfig = "Config";
9038
static const char* jkAlterDnodeStmtValue = "Value";
9039

9040
static int32_t alterDnodeStmtToJson(const void* pObj, SJson* pJson) {
3,600✔
9041
  const SAlterDnodeStmt* pNode = (const SAlterDnodeStmt*)pObj;
3,600✔
9042

9043
  int32_t code = tjsonAddIntegerToObject(pJson, jkAlterDnodeStmtDnodeId, pNode->dnodeId);
3,600✔
9044
  if (TSDB_CODE_SUCCESS == code) {
3,600✔
9045
    code = tjsonAddStringToObject(pJson, jkAlterDnodeStmtConfig, pNode->config);
3,600✔
9046
  }
9047
  if (TSDB_CODE_SUCCESS == code) {
3,600✔
9048
    code = tjsonAddStringToObject(pJson, jkAlterDnodeStmtValue, pNode->value);
3,600✔
9049
  }
9050

9051
  return code;
3,600✔
9052
}
9053

9054
static int32_t jsonToAlterDnodeStmt(const SJson* pJson, void* pObj) {
3,600✔
9055
  SAlterDnodeStmt* pNode = (SAlterDnodeStmt*)pObj;
3,600✔
9056

9057
  int32_t code = tjsonGetIntValue(pJson, jkAlterDnodeStmtDnodeId, &pNode->dnodeId);
3,600✔
9058
  if (TSDB_CODE_SUCCESS == code) {
3,600✔
9059
    code = tjsonGetStringValue1(pJson, jkAlterDnodeStmtConfig, pNode->config, sizeof(pNode->config));
3,600✔
9060
  }
9061
  if (TSDB_CODE_SUCCESS == code) {
3,600✔
9062
    code = tjsonGetStringValue1(pJson, jkAlterDnodeStmtValue, pNode->value, sizeof(pNode->value));
3,600✔
9063
  }
9064

9065
  return code;
3,600✔
9066
}
9067

9068
static const char* jkCreateIndexStmtIndexType = "IndexType";
9069
static const char* jkCreateIndexStmtIgnoreExists = "IgnoreExists";
9070
static const char* jkCreateIndexStmtIndexDbName = "IndexDbName";
9071
static const char* jkCreateIndexStmtIndexName = "indexName";
9072
static const char* jkCreateIndexStmtDbName = "DbName";
9073
static const char* jkCreateIndexStmtTableName = "TableName";
9074
static const char* jkCreateIndexStmtCols = "Cols";
9075
static const char* jkCreateIndexStmtOptions = "Options";
9076

9077
static int32_t createIndexStmtToJson(const void* pObj, SJson* pJson) {
×
9078
  const SCreateIndexStmt* pNode = (const SCreateIndexStmt*)pObj;
×
9079

9080
  int32_t code = tjsonAddIntegerToObject(pJson, jkCreateIndexStmtIndexType, pNode->indexType);
×
9081
  if (TSDB_CODE_SUCCESS == code) {
×
9082
    code = tjsonAddBoolToObject(pJson, jkCreateIndexStmtIgnoreExists, pNode->ignoreExists);
×
9083
  }
9084
  if (TSDB_CODE_SUCCESS == code) {
×
9085
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtIndexDbName, pNode->indexDbName);
×
9086
  }
9087
  if (TSDB_CODE_SUCCESS == code) {
×
9088
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtIndexName, pNode->indexName);
×
9089
  }
9090
  if (TSDB_CODE_SUCCESS == code) {
×
9091
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtDbName, pNode->dbName);
×
9092
  }
9093
  if (TSDB_CODE_SUCCESS == code) {
×
9094
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtTableName, pNode->tableName);
×
9095
  }
9096
  if (TSDB_CODE_SUCCESS == code) {
×
9097
    code = nodeListToJson(pJson, jkCreateIndexStmtCols, pNode->pCols);
×
9098
  }
9099
  if (TSDB_CODE_SUCCESS == code) {
×
9100
    code = tjsonAddObject(pJson, jkCreateIndexStmtOptions, nodeToJson, pNode->pOptions);
×
9101
  }
9102

9103
  return code;
×
9104
}
9105

9106
static int32_t jsonToCreateIndexStmt(const SJson* pJson, void* pObj) {
×
9107
  SCreateIndexStmt* pNode = (SCreateIndexStmt*)pObj;
×
9108

9109
  int32_t code = TSDB_CODE_SUCCESS;
×
9110
  tjsonGetNumberValue(pJson, jkCreateIndexStmtIndexType, pNode->indexType, code);
×
9111
  if (TSDB_CODE_SUCCESS == code) {
×
9112
    code = tjsonGetBoolValue(pJson, jkCreateIndexStmtIgnoreExists, &pNode->ignoreExists);
×
9113
  }
9114
  if (TSDB_CODE_SUCCESS == code) {
×
9115
    code = tjsonGetStringValue1(pJson, jkCreateIndexStmtIndexDbName, pNode->indexDbName, sizeof(pNode->indexDbName));
×
9116
  }
9117
  if (TSDB_CODE_SUCCESS == code) {
×
9118
    code = tjsonGetStringValue1(pJson, jkCreateIndexStmtIndexName, pNode->indexName, sizeof(pNode->indexName));
×
9119
  }
9120
  if (TSDB_CODE_SUCCESS == code) {
×
9121
    code = tjsonGetStringValue1(pJson, jkCreateIndexStmtDbName, pNode->dbName, sizeof(pNode->dbName));
×
9122
  }
9123
  if (TSDB_CODE_SUCCESS == code) {
×
9124
    code = tjsonGetStringValue1(pJson, jkCreateIndexStmtTableName, pNode->tableName, sizeof(pNode->tableName));
×
9125
  }
9126
  if (TSDB_CODE_SUCCESS == code) {
×
9127
    code = jsonToNodeList(pJson, jkCreateIndexStmtCols, &pNode->pCols);
×
9128
  }
9129
  if (TSDB_CODE_SUCCESS == code) {
×
9130
    code = jsonToNodeObject(pJson, jkCreateIndexStmtOptions, (SNode**)&pNode->pOptions);
×
9131
  }
9132

9133
  return code;
×
9134
}
9135

9136
static const char* jkDropIndexStmtIgnoreNotExists = "IgnoreNotExists";
9137
static const char* jkDropIndexStmtIndexDbName = "IndexDbName";
9138
static const char* jkDropIndexStmtIndexName = "IndexName";
9139

9140
static int32_t dropIndexStmtToJson(const void* pObj, SJson* pJson) {
1,800✔
9141
  const SDropIndexStmt* pNode = (const SDropIndexStmt*)pObj;
1,800✔
9142

9143
  int32_t code = tjsonAddBoolToObject(pJson, jkDropIndexStmtIgnoreNotExists, pNode->ignoreNotExists);
1,800✔
9144
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
9145
    code = tjsonAddStringToObject(pJson, jkDropIndexStmtIndexDbName, pNode->indexDbName);
1,800✔
9146
  }
9147
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
9148
    code = tjsonAddStringToObject(pJson, jkDropIndexStmtIndexName, pNode->indexName);
1,800✔
9149
  }
9150

9151
  return code;
1,800✔
9152
}
9153

9154
static int32_t jsonToDropIndexStmt(const SJson* pJson, void* pObj) {
1,800✔
9155
  SDropIndexStmt* pNode = (SDropIndexStmt*)pObj;
1,800✔
9156

9157
  int32_t code = tjsonGetBoolValue(pJson, jkDropIndexStmtIgnoreNotExists, &pNode->ignoreNotExists);
1,800✔
9158
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
9159
    code = tjsonGetStringValue1(pJson, jkDropIndexStmtIndexDbName, pNode->indexDbName, sizeof(pNode->indexDbName));
1,800✔
9160
  }
9161
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
9162
    code = tjsonGetStringValue1(pJson, jkDropIndexStmtIndexName, pNode->indexName, sizeof(pNode->indexName));
1,800✔
9163
  }
9164

9165
  return code;
1,800✔
9166
}
9167

9168
static const char* jkCreateComponentNodeStmtDnodeId = "DnodeId";
9169

9170
static int32_t createComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
2,700✔
9171
  const SCreateComponentNodeStmt* pNode = (const SCreateComponentNodeStmt*)pObj;
2,700✔
9172
  return tjsonAddIntegerToObject(pJson, jkCreateComponentNodeStmtDnodeId, pNode->dnodeId);
2,700✔
9173
}
9174

9175
static int32_t jsonToCreateComponentNodeStmt(const SJson* pJson, void* pObj) {
2,700✔
9176
  SCreateComponentNodeStmt* pNode = (SCreateComponentNodeStmt*)pObj;
2,700✔
9177
  return tjsonGetIntValue(pJson, jkCreateComponentNodeStmtDnodeId, &pNode->dnodeId);
2,700✔
9178
}
9179

9180
static const char* jkDropComponentNodeStmtDnodeId = "DnodeId";
9181

9182
static int32_t dropComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
2,700✔
9183
  const SDropComponentNodeStmt* pNode = (const SDropComponentNodeStmt*)pObj;
2,700✔
9184
  return tjsonAddIntegerToObject(pJson, jkDropComponentNodeStmtDnodeId, pNode->dnodeId);
2,700✔
9185
}
9186

9187
static int32_t jsonToDropComponentNodeStmt(const SJson* pJson, void* pObj) {
2,700✔
9188
  SDropComponentNodeStmt* pNode = (SDropComponentNodeStmt*)pObj;
2,700✔
9189
  return tjsonGetIntValue(pJson, jkDropComponentNodeStmtDnodeId, &pNode->dnodeId);
2,700✔
9190
}
9191

9192
static int32_t createQnodeStmtToJson(const void* pObj, SJson* pJson) {
900✔
9193
  return createComponentNodeStmtToJson(pObj, pJson);
900✔
9194
}
9195

9196
static int32_t jsonToCreateQnodeStmt(const SJson* pJson, void* pObj) {
900✔
9197
  return jsonToCreateComponentNodeStmt(pJson, pObj);
900✔
9198
}
9199

9200
static int32_t dropQnodeStmtToJson(const void* pObj, SJson* pJson) { return dropComponentNodeStmtToJson(pObj, pJson); }
900✔
9201

9202
static int32_t jsonToDropQnodeStmt(const SJson* pJson, void* pObj) { return jsonToDropComponentNodeStmt(pJson, pObj); }
900✔
9203

9204
static const char* jkCreateAnodeStmtUrl = "Url";
9205
static const char* jkUpdateDropANodeStmtId = "AnodeId";
9206

9207
static int32_t createAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
9208
  const SCreateAnodeStmt* pNode = (const SCreateAnodeStmt*)pObj;
×
9209
  return tjsonAddStringToObject(pJson, jkCreateAnodeStmtUrl, pNode->url);
×
9210
}
9211

9212
static int32_t jsonToCreateAnodeStmt(const SJson* pJson, void* pObj) {
×
9213
  SCreateAnodeStmt* pNode = (SCreateAnodeStmt*)pObj;
×
9214
  return tjsonGetStringValue1(pJson, jkCreateAnodeStmtUrl, pNode->url, sizeof(pNode->url));
×
9215
}
9216

9217
static int32_t updateAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
9218
  const SUpdateAnodeStmt* pNode = (const SUpdateAnodeStmt*)pObj;
×
9219
  return tjsonAddIntegerToObject(pJson, jkUpdateDropANodeStmtId, pNode->anodeId);
×
9220
}
9221

9222
static int32_t jsonToUpdateAnodeStmt(const SJson* pJson, void* pObj) {
×
9223
  SUpdateAnodeStmt* pNode = (SUpdateAnodeStmt*)pObj;
×
9224
  return tjsonGetIntValue(pJson, jkUpdateDropANodeStmtId, &pNode->anodeId);
×
9225
}
9226

9227
static int32_t dropAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
9228
  const SDropAnodeStmt* pNode = (const SDropAnodeStmt*)pObj;
×
9229
  return tjsonAddIntegerToObject(pJson, jkUpdateDropANodeStmtId, pNode->anodeId);
×
9230
}
9231

9232
static int32_t jsonToDropAnodeStmt(const SJson* pJson, void* pObj) {
×
9233
  SDropAnodeStmt* pNode = (SDropAnodeStmt*)pObj;
×
9234
  return tjsonGetIntValue(pJson, jkUpdateDropANodeStmtId, &pNode->anodeId);
×
9235
}
9236

9237
static const char* jkCreateXnodeStmtUrl = "Url";
9238
static const char* jkUpdateDropXNodeStmtId = "XnodeId";
9239

9240
static int32_t createXnodeStmtToJson(const void* pObj, SJson* pJson) {
×
9241
  const SCreateXnodeStmt* pNode = (const SCreateXnodeStmt*)pObj;
×
9242
  return tjsonAddStringToObject(pJson, jkCreateXnodeStmtUrl, pNode->url);
×
9243
}
9244

9245
static const char* jkCreateXnodeTaskStmtName = "name";
9246
static int32_t createXnodeTaskStmtToJson(const void* pObj, SJson* pJson) {
×
9247
  const SCreateXnodeTaskStmt* pNode = (const SCreateXnodeTaskStmt*)pObj;
×
9248
  // Encode options.
9249
  return tjsonAddStringToObject(pJson, jkCreateXnodeTaskStmtName, pNode->name);
×
9250
}
9251

9252
static int32_t jsonToCreateXnodeTaskStmt(const SJson* pJson, void* pObj) {
×
9253
  SCreateXnodeTaskStmt* pNode = (SCreateXnodeTaskStmt*)pObj;
×
9254
  // Decode options.
9255
  return tjsonGetStringValue1(pJson, jkCreateXnodeTaskStmtName, pNode->name, sizeof(pNode->name));
×
9256
}
9257

9258
static int32_t dropXnodeTaskStmtToJson(const void* pObj, SJson* pJson) {
×
9259
  const SDropXnodeTaskStmt* pNode = (const SDropXnodeTaskStmt*)pObj;
×
9260
  // Encode options.
9261
  return tjsonAddStringToObject(pJson, jkCreateXnodeTaskStmtName, pNode->name);
×
9262
}
9263
static int32_t jsonToDropXnodeTaskStmt(const SJson* pJson, void* pObj) {
×
9264
  SDropXnodeTaskStmt* pNode = (SDropXnodeTaskStmt*)pObj;
×
9265
  // Decode options.
9266
  return tjsonGetStringValue1(pJson, jkCreateXnodeTaskStmtName, pNode->name, sizeof(pNode->name));
×
9267
}
9268

9269
static const char* jkCreateXnodeJobStmtTid = "tid";
9270

9271
static int32_t createXnodeJobStmtToJson(const void* pObj, SJson* pJson) {
×
9272
  const SCreateXnodeJobStmt* pNode = (const SCreateXnodeJobStmt*)pObj;
×
9273
  // Encode options.
9274
  return tjsonAddIntegerToObject(pJson, jkCreateXnodeJobStmtTid, pNode->tid);
×
9275
}
9276

9277
static int32_t jsonToCreateXnodeJobStmt(const SJson* pJson, void* pObj) {
×
9278
  SCreateXnodeJobStmt* pNode = (SCreateXnodeJobStmt*)pObj;
×
9279
  // Decode options.
9280
  return tjsonGetIntValue(pJson, jkCreateXnodeJobStmtTid, &pNode->tid);
×
9281
}
9282

9283
static int32_t dropXnodeJobStmtToJson(const void* pObj, SJson* pJson) {
×
9284
  const SDropXnodeJobStmt* pNode = (const SDropXnodeJobStmt*)pObj;
×
9285
  // Encode options.
9286
  return tjsonAddIntegerToObject(pJson, jkCreateXnodeJobStmtTid, pNode->tid);
×
9287
}
9288
static int32_t jsonToDropXnodeJobStmt(const SJson* pJson, void* pObj) {
×
9289
  SDropXnodeJobStmt* pNode = (SDropXnodeJobStmt*)pObj;
×
9290
  // Decode options.
9291
  return tjsonGetIntValue(pJson, jkCreateXnodeJobStmtTid, &pNode->tid);
×
9292
}
9293

9294
static int32_t jsonToCreateXnodeStmt(const SJson* pJson, void* pObj) {
×
9295
  SCreateXnodeStmt* pNode = (SCreateXnodeStmt*)pObj;
×
9296
  return tjsonGetStringValue1(pJson, jkCreateXnodeStmtUrl, pNode->url, sizeof(pNode->url));
×
9297
}
9298

9299
static int32_t alterXnodeStmtToJson(const void* pObj, SJson* pJson) {
×
9300
  const SAlterXnodeStmt* pNode = (const SAlterXnodeStmt*)pObj;
×
9301
  return tjsonAddIntegerToObject(pJson, jkUpdateDropXNodeStmtId, pNode->id);
×
9302
}
9303

9304
static int32_t jsonToUpdateXnodeStmt(const SJson* pJson, void* pObj) {
×
9305
  SAlterXnodeStmt* pNode = (SAlterXnodeStmt*)pObj;
×
9306
  return tjsonGetIntValue(pJson, jkUpdateDropXNodeStmtId, &pNode->id);
×
9307
}
9308

9309
static int32_t dropXnodeStmtToJson(const void* pObj, SJson* pJson) {
×
9310
  const SDropXnodeStmt* pNode = (const SDropXnodeStmt*)pObj;
×
9311
  return tjsonAddIntegerToObject(pJson, jkUpdateDropXNodeStmtId, pNode->xnodeId);
×
9312
}
9313

9314
static int32_t jsonToDropXnodeStmt(const SJson* pJson, void* pObj) {
×
9315
  SDropXnodeStmt* pNode = (SDropXnodeStmt*)pObj;
×
9316
  return tjsonGetIntValue(pJson, jkUpdateDropXNodeStmtId, &pNode->xnodeId);
×
9317
}
9318

9319
static const char* jkUpdateDropBNodeStmtId = "DnodeId";
9320

9321
static int32_t createBnodeStmtToJson(const void* pObj, SJson* pJson) {
×
9322
  const SCreateBnodeStmt* pNode = (const SCreateBnodeStmt*)pObj;
×
9323
  return tjsonAddIntegerToObject(pJson, jkCreateComponentNodeStmtDnodeId, pNode->dnodeId);
×
9324
}
9325

9326
static int32_t jsonToCreateBnodeStmt(const SJson* pJson, void* pObj) {
×
9327
  SCreateBnodeStmt* pNode = (SCreateBnodeStmt*)pObj;
×
9328
  return tjsonGetIntValue(pJson, jkCreateComponentNodeStmtDnodeId, &pNode->dnodeId);
×
9329
}
9330

9331
static int32_t dropBnodeStmtToJson(const void* pObj, SJson* pJson) {
×
9332
  const SDropBnodeStmt* pNode = (const SDropBnodeStmt*)pObj;
×
9333
  return tjsonAddIntegerToObject(pJson, jkUpdateDropBNodeStmtId, pNode->dnodeId);
×
9334
}
9335

9336
static int32_t jsonToDropBnodeStmt(const SJson* pJson, void* pObj) {
×
9337
  SDropBnodeStmt* pNode = (SDropBnodeStmt*)pObj;
×
9338
  return tjsonGetIntValue(pJson, jkUpdateDropBNodeStmtId, &pNode->dnodeId);
×
9339
}
9340

9341
static int32_t createSnodeStmtToJson(const void* pObj, SJson* pJson) {
900✔
9342
  return createComponentNodeStmtToJson(pObj, pJson);
900✔
9343
}
9344

9345
static int32_t jsonToCreateSnodeStmt(const SJson* pJson, void* pObj) {
900✔
9346
  return jsonToCreateComponentNodeStmt(pJson, pObj);
900✔
9347
}
9348

9349
static int32_t dropSnodeStmtToJson(const void* pObj, SJson* pJson) { return dropComponentNodeStmtToJson(pObj, pJson); }
900✔
9350

9351
static int32_t jsonToDropSnodeStmt(const SJson* pJson, void* pObj) { return jsonToDropComponentNodeStmt(pJson, pObj); }
900✔
9352

9353
static int32_t createMnodeStmtToJson(const void* pObj, SJson* pJson) {
900✔
9354
  return createComponentNodeStmtToJson(pObj, pJson);
900✔
9355
}
9356

9357
static int32_t jsonToCreateMnodeStmt(const SJson* pJson, void* pObj) {
900✔
9358
  return jsonToCreateComponentNodeStmt(pJson, pObj);
900✔
9359
}
9360

9361
static int32_t dropMnodeStmtToJson(const void* pObj, SJson* pJson) { return dropComponentNodeStmtToJson(pObj, pJson); }
900✔
9362

9363
static int32_t jsonToDropMnodeStmt(const SJson* pJson, void* pObj) { return jsonToDropComponentNodeStmt(pJson, pObj); }
900✔
9364

9365
static const char* jkDropDnodeStmtDnodeId = "DnodeId";
9366
static const char* jkDropDnodeStmtFqdn = "Fqdn";
9367
static const char* jkDropDnodeStmtPort = "Port";
9368
static const char* jkDropDnodeStmtForce = "Force";
9369
static const char* jkDropDnodeStmtUnsafe = "Unsafe";
9370

9371
static int32_t dropDnodeStmtToJson(const void* pObj, SJson* pJson) {
8,100✔
9372
  const SDropDnodeStmt* pNode = (const SDropDnodeStmt*)pObj;
8,100✔
9373

9374
  int32_t code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtDnodeId, pNode->dnodeId);
8,100✔
9375
  if (TSDB_CODE_SUCCESS == code) {
8,100✔
9376
    code = tjsonAddStringToObject(pJson, jkDropDnodeStmtFqdn, pNode->fqdn);
8,100✔
9377
  }
9378
  if (TSDB_CODE_SUCCESS == code) {
8,100✔
9379
    code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtPort, pNode->port);
8,100✔
9380
  }
9381
  if (TSDB_CODE_SUCCESS == code) {
8,100✔
9382
    code = tjsonAddBoolToObject(pJson, jkDropDnodeStmtForce, pNode->force);
8,100✔
9383
  }
9384
  if (TSDB_CODE_SUCCESS == code) {
8,100✔
9385
    code = tjsonAddBoolToObject(pJson, jkDropDnodeStmtUnsafe, pNode->unsafe);
8,100✔
9386
  }
9387

9388
  return code;
8,100✔
9389
}
9390

9391
static int32_t jsonToDropDnodeStmt(const SJson* pJson, void* pObj) {
8,100✔
9392
  SDropDnodeStmt* pNode = (SDropDnodeStmt*)pObj;
8,100✔
9393

9394
  int32_t code = tjsonGetIntValue(pJson, jkDropDnodeStmtDnodeId, &pNode->dnodeId);
8,100✔
9395
  if (TSDB_CODE_SUCCESS == code) {
8,100✔
9396
    code = tjsonGetStringValue1(pJson, jkDropDnodeStmtFqdn, pNode->fqdn, sizeof(pNode->fqdn));
8,100✔
9397
  }
9398
  if (TSDB_CODE_SUCCESS == code) {
8,100✔
9399
    code = tjsonGetIntValue(pJson, jkDropDnodeStmtPort, &pNode->port);
8,100✔
9400
  }
9401
  if (TSDB_CODE_SUCCESS == code) {
8,100✔
9402
    code = tjsonGetBoolValue(pJson, jkDropDnodeStmtForce, &pNode->force);
8,100✔
9403
  }
9404
  if (TSDB_CODE_SUCCESS == code) {
8,100✔
9405
    code = tjsonGetBoolValue(pJson, jkDropDnodeStmtUnsafe, &pNode->unsafe);
8,100✔
9406
  }
9407

9408
  return code;
8,100✔
9409
}
9410

9411
static const char* jkRestoreComponentNodeStmtDnodeId = "DnodeId";
9412
static const char* jkRestoreComponentNodeStmtVgId = "VgId";
9413

9414
static int32_t restoreComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
×
9415
  const SRestoreComponentNodeStmt* pNode = (const SRestoreComponentNodeStmt*)pObj;
×
9416

9417
  int32_t code = tjsonAddIntegerToObject(pJson, jkRestoreComponentNodeStmtDnodeId, pNode->dnodeId);
×
9418
  if (TSDB_CODE_SUCCESS == code) {
×
9419
    code = tjsonAddIntegerToObject(pJson, jkRestoreComponentNodeStmtVgId, pNode->vgId);
×
9420
  }
9421
  return code;
×
9422
}
9423

9424
static int32_t jsonToRestoreComponentNodeStmt(const SJson* pJson, void* pObj) {
×
9425
  SRestoreComponentNodeStmt* pNode = (SRestoreComponentNodeStmt*)pObj;
×
9426

9427
  // vgId is an optional extension, default to 0 if not present in JSON
9428
  pNode->vgId = 0;
×
9429
  int32_t code = tjsonGetIntValue(pJson, jkRestoreComponentNodeStmtDnodeId, &pNode->dnodeId);
×
9430
  if (TSDB_CODE_SUCCESS == code) {
×
9431
    const SJson* pVgIdJson = tjsonGetObjectItem(pJson, jkRestoreComponentNodeStmtVgId);
×
9432
    if (pVgIdJson != NULL) {
×
9433
      code = tjsonGetIntValue(pJson, jkRestoreComponentNodeStmtVgId, &pNode->vgId);
×
9434
    }
9435
  }
9436
  return code;
×
9437
}
9438

9439
static int32_t jsonToRestoreDnodeStmt(const SJson* pJson, void* pObj) {
×
9440
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
9441
}
9442
static int32_t jsonToRestoreQnodeStmt(const SJson* pJson, void* pObj) {
×
9443
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
9444
}
9445
static int32_t jsonToRestoreMnodeStmt(const SJson* pJson, void* pObj) {
×
9446
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
9447
}
9448
static int32_t jsonToRestoreVnodeStmt(const SJson* pJson, void* pObj) {
×
9449
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
9450
}
9451

9452
static const char* jkCreateTopicStmtTopicName = "TopicName";
9453
static const char* jkCreateTopicStmtSubscribeDbName = "SubscribeDbName";
9454
static const char* jkCreateTopicStmtIgnoreExists = "IgnoreExists";
9455
static const char* jkCreateTopicStmtQuery = "Query";
9456

9457
static int32_t createTopicStmtToJson(const void* pObj, SJson* pJson) {
7,300✔
9458
  const SCreateTopicStmt* pNode = (const SCreateTopicStmt*)pObj;
7,300✔
9459

9460
  int32_t code = tjsonAddStringToObject(pJson, jkCreateTopicStmtTopicName, pNode->topicName);
7,300✔
9461
  if (TSDB_CODE_SUCCESS == code) {
7,300✔
9462
    code = tjsonAddStringToObject(pJson, jkCreateTopicStmtSubscribeDbName, pNode->subDbName);
7,300✔
9463
  }
9464
  if (TSDB_CODE_SUCCESS == code) {
7,300✔
9465
    code = tjsonAddBoolToObject(pJson, jkCreateTopicStmtIgnoreExists, pNode->ignoreExists);
7,300✔
9466
  }
9467
  if (TSDB_CODE_SUCCESS == code) {
7,300✔
9468
    code = tjsonAddObject(pJson, jkCreateTopicStmtQuery, nodeToJson, pNode->pQuery);
7,300✔
9469
  }
9470

9471
  return code;
7,300✔
9472
}
9473

9474
static int32_t jsonToCreateTopicStmt(const SJson* pJson, void* pObj) {
7,300✔
9475
  SCreateTopicStmt* pNode = (SCreateTopicStmt*)pObj;
7,300✔
9476

9477
  int32_t code = tjsonGetStringValue1(pJson, jkCreateTopicStmtTopicName, pNode->topicName, sizeof(pNode->topicName));
7,300✔
9478
  if (TSDB_CODE_SUCCESS == code) {
7,300✔
9479
    code = tjsonGetStringValue1(pJson, jkCreateTopicStmtSubscribeDbName, pNode->subDbName, sizeof(pNode->subDbName));
7,300✔
9480
  }
9481
  if (TSDB_CODE_SUCCESS == code) {
7,300✔
9482
    code = tjsonGetBoolValue(pJson, jkCreateTopicStmtIgnoreExists, &pNode->ignoreExists);
7,300✔
9483
  }
9484
  if (TSDB_CODE_SUCCESS == code) {
7,300✔
9485
    code = jsonToNodeObject(pJson, jkCreateTopicStmtQuery, &pNode->pQuery);
7,300✔
9486
  }
9487

9488
  return code;
7,300✔
9489
}
9490

9491
static const char* jkDropTopicStmtTopicName = "TopicName";
9492
static const char* jkDropTopicStmtIgnoreNotExists = "IgnoreNotExists";
9493

9494
static int32_t dropTopicStmtToJson(const void* pObj, SJson* pJson) {
1,800✔
9495
  const SDropTopicStmt* pNode = (const SDropTopicStmt*)pObj;
1,800✔
9496

9497
  int32_t code = tjsonAddStringToObject(pJson, jkDropTopicStmtTopicName, pNode->topicName);
1,800✔
9498
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
9499
    code = tjsonAddBoolToObject(pJson, jkDropTopicStmtIgnoreNotExists, pNode->ignoreNotExists);
1,800✔
9500
  }
9501

9502
  return code;
1,800✔
9503
}
9504

9505
static int32_t jsonToDropTopicStmt(const SJson* pJson, void* pObj) {
1,800✔
9506
  SDropTopicStmt* pNode = (SDropTopicStmt*)pObj;
1,800✔
9507

9508
  int32_t code = tjsonGetStringValue1(pJson, jkDropTopicStmtTopicName, pNode->topicName, sizeof(pNode->topicName));
1,800✔
9509
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
9510
    code = tjsonGetBoolValue(pJson, jkDropTopicStmtIgnoreNotExists, &pNode->ignoreNotExists);
1,800✔
9511
  }
9512

9513
  return code;
1,800✔
9514
}
9515

9516
static const char* jkDropCGroupStmtTopicName = "TopicName";
9517
static const char* jkDropCGroupStmtConsumerGroup = "ConsumerGroup";
9518
static const char* jkDropCGroupStmtIgnoreNotExists = "IgnoreNotExists";
9519

9520
static int32_t dropConsumerGroupStmtToJson(const void* pObj, SJson* pJson) {
1,800✔
9521
  const SDropCGroupStmt* pNode = (const SDropCGroupStmt*)pObj;
1,800✔
9522

9523
  int32_t code = tjsonAddStringToObject(pJson, jkDropCGroupStmtTopicName, pNode->topicName);
1,800✔
9524
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
9525
    code = tjsonAddStringToObject(pJson, jkDropCGroupStmtConsumerGroup, pNode->cgroup);
1,800✔
9526
  }
9527
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
9528
    code = tjsonAddBoolToObject(pJson, jkDropCGroupStmtIgnoreNotExists, pNode->ignoreNotExists);
1,800✔
9529
  }
9530

9531
  return code;
1,800✔
9532
}
9533

9534
static int32_t jsonToDropConsumerGroupStmt(const SJson* pJson, void* pObj) {
1,800✔
9535
  SDropCGroupStmt* pNode = (SDropCGroupStmt*)pObj;
1,800✔
9536

9537
  int32_t code = tjsonGetStringValue1(pJson, jkDropCGroupStmtTopicName, pNode->topicName, sizeof(pNode->topicName));
1,800✔
9538
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
9539
    code = tjsonGetStringValue1(pJson, jkDropCGroupStmtConsumerGroup, pNode->cgroup, sizeof(pNode->cgroup));
1,800✔
9540
  }
9541
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
9542
    code = tjsonGetBoolValue(pJson, jkDropCGroupStmtIgnoreNotExists, &pNode->ignoreNotExists);
1,800✔
9543
  }
9544

9545
  return code;
1,800✔
9546
}
9547

9548
static const char* jkAlterClusterStmtConfig = "Config";
9549
static const char* jkAlterClusterStmtValue = "Value";
9550

9551
static int32_t alterClusterStmtToJson(const void* pObj, SJson* pJson) {
×
9552
  const SAlterClusterStmt* pNode = (const SAlterClusterStmt*)pObj;
×
9553

9554
  int32_t code = tjsonAddStringToObject(pJson, jkAlterClusterStmtConfig, pNode->config);
×
9555
  if (TSDB_CODE_SUCCESS == code) {
×
9556
    code = tjsonAddStringToObject(pJson, jkAlterClusterStmtValue, pNode->value);
×
9557
  }
9558

9559
  return code;
×
9560
}
9561

9562
static int32_t jsonToAlterClusterStmt(const SJson* pJson, void* pObj) {
×
9563
  SAlterClusterStmt* pNode = (SAlterClusterStmt*)pObj;
×
9564

9565
  int32_t code = tjsonGetStringValue1(pJson, jkAlterClusterStmtConfig, pNode->config, sizeof(pNode->config));
×
9566
  if (TSDB_CODE_SUCCESS == code) {
×
9567
    code = tjsonGetStringValue1(pJson, jkAlterClusterStmtValue, pNode->value, sizeof(pNode->value));
×
9568
  }
9569

9570
  return code;
×
9571
}
9572

9573
static const char* jkAlterLocalStmtConfig = "Config";
9574
static const char* jkAlterLocalStmtValue = "Value";
9575

9576
static int32_t alterLocalStmtToJson(const void* pObj, SJson* pJson) {
1,800✔
9577
  const SAlterLocalStmt* pNode = (const SAlterLocalStmt*)pObj;
1,800✔
9578

9579
  int32_t code = tjsonAddStringToObject(pJson, jkAlterLocalStmtConfig, pNode->config);
1,800✔
9580
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
9581
    code = tjsonAddStringToObject(pJson, jkAlterLocalStmtValue, pNode->value);
1,800✔
9582
  }
9583

9584
  return code;
1,800✔
9585
}
9586

9587
static int32_t jsonToAlterLocalStmt(const SJson* pJson, void* pObj) {
1,800✔
9588
  SAlterLocalStmt* pNode = (SAlterLocalStmt*)pObj;
1,800✔
9589

9590
  int32_t code = tjsonGetStringValue1(pJson, jkAlterLocalStmtConfig, pNode->config, sizeof(pNode->config));
1,800✔
9591
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
9592
    code = tjsonGetStringValue1(pJson, jkAlterLocalStmtValue, pNode->value, sizeof(pNode->value));
1,800✔
9593
  }
9594

9595
  return code;
1,800✔
9596
}
9597

9598
static const char* jkAlterEncryptKeyStmtKeyType = "KeyType";
9599
static const char* jkAlterEncryptKeyStmtNewKey = "NewKey";
9600

9601
static int32_t alterEncryptKeyStmtToJson(const void* pObj, SJson* pJson) {
×
9602
  const SAlterEncryptKeyStmt* pNode = (const SAlterEncryptKeyStmt*)pObj;
×
9603

9604
  int32_t code = tjsonAddIntegerToObject(pJson, jkAlterEncryptKeyStmtKeyType, pNode->keyType);
×
9605
  if (TSDB_CODE_SUCCESS == code) {
×
9606
    code = tjsonAddStringToObject(pJson, jkAlterEncryptKeyStmtNewKey, pNode->newKey);
×
9607
  }
9608

9609
  return code;
×
9610
}
9611

9612
static int32_t jsonToAlterEncryptKeyStmt(const SJson* pJson, void* pObj) {
×
9613
  SAlterEncryptKeyStmt* pNode = (SAlterEncryptKeyStmt*)pObj;
×
9614

9615
  int32_t code = tjsonGetTinyIntValue(pJson, jkAlterEncryptKeyStmtKeyType, &pNode->keyType);
×
9616
  if (TSDB_CODE_SUCCESS == code) {
×
9617
    code = tjsonGetStringValue1(pJson, jkAlterEncryptKeyStmtNewKey, pNode->newKey, sizeof(pNode->newKey));
×
9618
  }
9619

9620
  return code;
×
9621
}
9622

9623
static const char* jkAlterKeyExpirationStmtDays = "Days";
9624
static const char* jkAlterKeyExpirationStmtStrategy = "Strategy";
9625

9626
static int32_t alterKeyExpirationStmtToJson(const void* pObj, SJson* pJson) {
×
9627
  const SAlterKeyExpirationStmt* pNode = (const SAlterKeyExpirationStmt*)pObj;
×
9628

9629
  int32_t code = tjsonAddIntegerToObject(pJson, jkAlterKeyExpirationStmtDays, pNode->days);
×
9630
  if (TSDB_CODE_SUCCESS == code) {
×
9631
    code = tjsonAddStringToObject(pJson, jkAlterKeyExpirationStmtStrategy, pNode->strategy);
×
9632
  }
9633

9634
  return code;
×
9635
}
9636

9637
static int32_t jsonToAlterKeyExpirationStmt(const SJson* pJson, void* pObj) {
×
9638
  SAlterKeyExpirationStmt* pNode = (SAlterKeyExpirationStmt*)pObj;
×
9639

9640
  int32_t code = tjsonGetIntValue(pJson, jkAlterKeyExpirationStmtDays, &pNode->days);
×
9641
  if (TSDB_CODE_SUCCESS == code) {
×
9642
    code = tjsonGetStringValue(pJson, jkAlterKeyExpirationStmtStrategy, pNode->strategy);
×
9643
  }
9644

9645
  return code;
×
9646
}
9647

9648
static const char* jkExplainStmtAnalyze = "Analyze";
9649
static const char* jkExplainStmtOptions = "Options";
9650
static const char* jkExplainStmtQuery = "Query";
9651

9652
static int32_t explainStmtToJson(const void* pObj, SJson* pJson) {
3,000✔
9653
  const SExplainStmt* pNode = (const SExplainStmt*)pObj;
3,000✔
9654

9655
  int32_t code = tjsonAddBoolToObject(pJson, jkExplainStmtAnalyze, pNode->analyze);
3,000✔
9656
  if (TSDB_CODE_SUCCESS == code) {
3,000✔
9657
    code = tjsonAddObject(pJson, jkExplainStmtOptions, nodeToJson, pNode->pOptions);
3,000✔
9658
  }
9659
  if (TSDB_CODE_SUCCESS == code) {
3,000✔
9660
    code = tjsonAddObject(pJson, jkExplainStmtQuery, nodeToJson, pNode->pQuery);
3,000✔
9661
  }
9662

9663
  return code;
3,000✔
9664
}
9665

9666
static int32_t jsonToExplainStmt(const SJson* pJson, void* pObj) {
3,000✔
9667
  SExplainStmt* pNode = (SExplainStmt*)pObj;
3,000✔
9668

9669
  int32_t code = tjsonGetBoolValue(pJson, jkExplainStmtAnalyze, &pNode->analyze);
3,000✔
9670
  if (TSDB_CODE_SUCCESS == code) {
3,000✔
9671
    code = jsonToNodeObject(pJson, jkExplainStmtOptions, (SNode**)&pNode->pOptions);
3,000✔
9672
  }
9673
  if (TSDB_CODE_SUCCESS == code) {
3,000✔
9674
    code = jsonToNodeObject(pJson, jkExplainStmtQuery, &pNode->pQuery);
3,000✔
9675
  }
9676

9677
  return code;
3,000✔
9678
}
9679

9680
static const char* jkDescribeStmtDbName = "DbName";
9681
static const char* jkDescribeStmtTableName = "TableName";
9682

9683
static int32_t describeStmtToJson(const void* pObj, SJson* pJson) {
1,800✔
9684
  const SDescribeStmt* pNode = (const SDescribeStmt*)pObj;
1,800✔
9685

9686
  int32_t code = tjsonAddStringToObject(pJson, jkDescribeStmtDbName, pNode->dbName);
1,800✔
9687
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
9688
    code = tjsonAddStringToObject(pJson, jkDescribeStmtTableName, pNode->tableName);
1,800✔
9689
  }
9690

9691
  return code;
1,800✔
9692
}
9693

9694
static int32_t jsonToDescribeStmt(const SJson* pJson, void* pObj) {
1,800✔
9695
  SDescribeStmt* pNode = (SDescribeStmt*)pObj;
1,800✔
9696

9697
  int32_t code = tjsonGetStringValue1(pJson, jkDescribeStmtDbName, pNode->dbName, sizeof(pNode->dbName));
1,800✔
9698
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
9699
    code = tjsonGetStringValue1(pJson, jkDescribeStmtTableName, pNode->tableName, sizeof(pNode->tableName));
1,800✔
9700
  }
9701

9702
  return code;
1,800✔
9703
}
9704

9705
static const char* jkCompactDatabaseStmtDbName = "DbName";
9706
static const char* jkScanDatabaseStmtDbName = "DbName";
9707

9708
static int32_t compactDatabaseStmtToJson(const void* pObj, SJson* pJson) {
3,600✔
9709
  const SCompactDatabaseStmt* pNode = (const SCompactDatabaseStmt*)pObj;
3,600✔
9710
  return tjsonAddStringToObject(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
3,600✔
9711
}
9712

9713
static int32_t jsonToCompactDatabaseStmt(const SJson* pJson, void* pObj) {
3,600✔
9714
  SCompactDatabaseStmt* pNode = (SCompactDatabaseStmt*)pObj;
3,600✔
9715
  return tjsonGetStringValue1(pJson, jkCompactDatabaseStmtDbName, pNode->dbName, sizeof(pNode->dbName));
3,600✔
9716
}
9717

9718
static int32_t rollupDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
9719
  const SRollupDatabaseStmt* pNode = (const SRollupDatabaseStmt*)pObj;
×
9720
  return tjsonAddStringToObject(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
×
9721
}
9722

9723
static int32_t jsonToRollupDatabaseStmt(const SJson* pJson, void* pObj) {
×
9724
  SRollupDatabaseStmt* pNode = (SRollupDatabaseStmt*)pObj;
×
9725
  return tjsonGetStringValue1(pJson, jkCompactDatabaseStmtDbName, pNode->dbName, sizeof(pNode->dbName));
×
9726
}
9727

9728
static int32_t scanDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
9729
  const SScanDatabaseStmt* pNode = (const SScanDatabaseStmt*)pObj;
×
9730
  return tjsonAddStringToObject(pJson, jkScanDatabaseStmtDbName, pNode->dbName);
×
9731
}
9732

9733
static int32_t jsonToScanDatabaseStmt(const SJson* pJson, void* pObj) {
×
9734
  SScanDatabaseStmt* pNode = (SScanDatabaseStmt*)pObj;
×
9735
  return tjsonGetStringValue1(pJson, jkScanDatabaseStmtDbName, pNode->dbName, sizeof(pNode->dbName));
×
9736
}
9737

9738
static int32_t compactVgroupsStmtToJson(const void* pObj, SJson* pJson) {
×
9739
  const SCompactVgroupsStmt* pNode = (const SCompactVgroupsStmt*)pObj;
×
9740
  return 0;
×
9741
}
9742

9743
static int32_t jsonToCompactVgroupsStmt(const SJson* pJson, void* pObj) {
×
9744
  SCompactVgroupsStmt* pNode = (SCompactVgroupsStmt*)pObj;
×
9745
  return 0;
×
9746
}
9747

9748
static int32_t rollupVgroupsStmtToJson(const void* pObj, SJson* pJson) {
×
9749
  const SRollupVgroupsStmt* pNode = (const SRollupVgroupsStmt*)pObj;
×
9750
  return 0;
×
9751
}
9752

9753
static int32_t jsonToRollupVgroupsStmt(const SJson* pJson, void* pObj) {
×
9754
  SRollupVgroupsStmt* pNode = (SRollupVgroupsStmt*)pObj;
×
9755
  return 0;
×
9756
}
9757

9758
static int32_t scanVgroupsStmtToJson(const void* pObj, SJson* pJson) {
×
9759
  const SScanVgroupsStmt* pNode = (const SScanVgroupsStmt*)pObj;
×
9760
  return 0;
×
9761
}
9762

9763
static int32_t jsonToScanVgroupsStmt(const SJson* pJson, void* pObj) {
×
9764
  SScanVgroupsStmt* pNode = (SScanVgroupsStmt*)pObj;
×
9765
  return 0;
×
9766
}
9767

9768
static const char* jkCreateStreamStmtStreamDbName = "StreamDbName";
9769
static const char* jkCreateStreamStmtStreamName = "StreamName";
9770
static const char* jkCreateStreamStmtTargetDbName = "TargetDbName";
9771
static const char* jkCreateStreamStmtTargetTabName = "TargetTabName";
9772
static const char* jkCreateStreamStmtIgnoreExists = "IgnoreExists";
9773
static const char* jkCreateStreamStmtTrigger = "Trigger";
9774
static const char* jkCreateStreamStmtQuery = "Query";
9775
static const char* jkCreateStreamStmtTags = "Tags";
9776
static const char* jkCreateStreamStmtSubtable = "Subtable";
9777
static const char* jkCreateStreamStmtCols = "Cols";
9778
static const char* jkCreateStreamStmtNodelayCreateSubtable = "nodelayCreateSubtable";
9779

9780
static int32_t createStreamStmtToJson(const void* pObj, SJson* pJson) {
91,100✔
9781
  const SCreateStreamStmt* pNode = (const SCreateStreamStmt*)pObj;
91,100✔
9782

9783
  int32_t code = tjsonAddStringToObject(pJson, jkCreateStreamStmtStreamDbName, pNode->streamDbName);
91,100✔
9784
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9785
    code = tjsonAddStringToObject(pJson, jkCreateStreamStmtStreamName, pNode->streamName);
91,100✔
9786
  }
9787
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9788
    code = tjsonAddStringToObject(pJson, jkCreateStreamStmtTargetDbName, pNode->targetDbName);
91,100✔
9789
  }
9790
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9791
    code = tjsonAddStringToObject(pJson, jkCreateStreamStmtTargetTabName, pNode->targetTabName);
91,100✔
9792
  }
9793
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9794
    code = tjsonAddBoolToObject(pJson, jkCreateStreamStmtIgnoreExists, pNode->ignoreExists);
91,100✔
9795
  }
9796
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9797
    code = tjsonAddObject(pJson, jkCreateStreamStmtQuery, nodeToJson, pNode->pTrigger);
91,100✔
9798
  }
9799
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9800
    code = tjsonAddObject(pJson, jkCreateStreamStmtQuery, nodeToJson, pNode->pQuery);
91,100✔
9801
  }
9802
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9803
    code = tjsonAddObject(pJson, jkCreateStreamStmtSubtable, nodeToJson, pNode->pSubtable);
91,100✔
9804
  }
9805
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9806
    code = nodeListToJson(pJson, jkCreateStreamStmtTags, pNode->pTags);
91,100✔
9807
  }
9808
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9809
    code = nodeListToJson(pJson, jkCreateStreamStmtCols, pNode->pCols);
91,100✔
9810
  }
9811
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9812
    code = tjsonAddIntegerToObject(pJson, jkCreateStreamStmtNodelayCreateSubtable, pNode->nodelayCreateSubtable);
91,100✔
9813
  }
9814
  return code;
91,100✔
9815
}
9816

9817
static int32_t jsonToCreateStreamStmt(const SJson* pJson, void* pObj) {
91,100✔
9818
  SCreateStreamStmt* pNode = (SCreateStreamStmt*)pObj;
91,100✔
9819

9820
  int32_t code =
9821
      tjsonGetStringValue1(pJson, jkCreateStreamStmtStreamDbName, pNode->streamDbName, sizeof(pNode->streamDbName));
91,100✔
9822
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9823
    code = tjsonGetStringValue1(pJson, jkCreateStreamStmtStreamName, pNode->streamName, sizeof(pNode->streamName));
91,100✔
9824
  }
9825
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9826
    code =
9827
        tjsonGetStringValue1(pJson, jkCreateStreamStmtTargetDbName, pNode->targetDbName, sizeof(pNode->targetDbName));
91,100✔
9828
  }
9829
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9830
    code = tjsonGetStringValue1(pJson, jkCreateStreamStmtTargetTabName, pNode->targetTabName,
91,100✔
9831
                                sizeof(pNode->targetTabName));
9832
  }
9833
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9834
    code = tjsonGetBoolValue(pJson, jkCreateStreamStmtIgnoreExists, &pNode->ignoreExists);
91,100✔
9835
  }
9836
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9837
    code = jsonToNodeObject(pJson, jkCreateStreamStmtTrigger, &pNode->pTrigger);
91,100✔
9838
  }
9839
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9840
    code = jsonToNodeObject(pJson, jkCreateStreamStmtQuery, &pNode->pQuery);
91,100✔
9841
  }
9842
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9843
    code = jsonToNodeObject(pJson, jkCreateStreamStmtSubtable, &pNode->pSubtable);
91,100✔
9844
  }
9845
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9846
    code = jsonToNodeList(pJson, jkCreateStreamStmtTags, &pNode->pTags);
91,100✔
9847
  }
9848
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9849
    code = jsonToNodeList(pJson, jkCreateStreamStmtCols, &pNode->pCols);
91,100✔
9850
  }
9851
  if (TSDB_CODE_SUCCESS == code) {
91,100✔
9852
    (void)tjsonGetTinyIntValue(pJson, jkCreateStreamStmtNodelayCreateSubtable, &pNode->nodelayCreateSubtable);
91,100✔
9853
  }
9854
  return code;
91,100✔
9855
}
9856

9857
static const char* jkDropStreamStmtStreamList = "StreamList";
9858
static const char* jkDropStreamStmtIgnoreNotExists = "IgnoreNotExists";
9859

9860
static int32_t dropStreamStmtToJson(const void* pObj, SJson* pJson) {
×
9861
  const SDropStreamStmt* pNode = (const SDropStreamStmt*)pObj;
×
9862

9863
  int32_t code = tjsonAddBoolToObject(pJson, jkDropStreamStmtIgnoreNotExists, pNode->ignoreNotExists);
×
9864
  if (TSDB_CODE_SUCCESS == code) {
×
9865
    code = nodeListToJson(pJson, jkDropStreamStmtStreamList, pNode->pStreamList);
×
9866
  }
9867

9868
  return code;
×
9869
}
9870

9871
static int32_t jsonToDropStreamStmt(const SJson* pJson, void* pObj) {
×
9872
  SDropStreamStmt* pNode = (SDropStreamStmt*)pObj;
×
9873

9874
  int32_t code = tjsonGetBoolValue(pJson, jkDropStreamStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
9875
  if (TSDB_CODE_SUCCESS == code) {
×
9876
    code = jsonToNodeList(pJson, jkDropStreamStmtStreamList, &pNode->pStreamList);
×
9877
  }
9878

9879
  return code;
×
9880
}
9881

9882
static const char* jkMergeVgroupStmtVgroupId1 = "VgroupId1";
9883
static const char* jkMergeVgroupStmtVgroupId2 = "VgroupId2";
9884

9885
static int32_t mergeVgroupStmtToJson(const void* pObj, SJson* pJson) {
×
9886
  const SMergeVgroupStmt* pNode = (const SMergeVgroupStmt*)pObj;
×
9887

9888
  int32_t code = tjsonAddIntegerToObject(pJson, jkMergeVgroupStmtVgroupId1, pNode->vgId1);
×
9889
  if (TSDB_CODE_SUCCESS == code) {
×
9890
    code = tjsonAddIntegerToObject(pJson, jkMergeVgroupStmtVgroupId2, pNode->vgId2);
×
9891
  }
9892

9893
  return code;
×
9894
}
9895

9896
static int32_t jsonToMergeVgroupStmt(const SJson* pJson, void* pObj) {
×
9897
  SMergeVgroupStmt* pNode = (SMergeVgroupStmt*)pObj;
×
9898

9899
  int32_t code = tjsonGetIntValue(pJson, jkMergeVgroupStmtVgroupId1, &pNode->vgId1);
×
9900
  if (TSDB_CODE_SUCCESS == code) {
×
9901
    code = tjsonGetIntValue(pJson, jkMergeVgroupStmtVgroupId2, &pNode->vgId2);
×
9902
  }
9903

9904
  return code;
×
9905
}
9906

9907
static const char* jkRedistributeVgroupStmtVgroupId = "VgroupId";
9908
static const char* jkRedistributeVgroupStmtDnodeId1 = "DnodeId1";
9909
static const char* jkRedistributeVgroupStmtDnodeId2 = "DnodeId2";
9910
static const char* jkRedistributeVgroupStmtDnodeId3 = "DnodeId3";
9911
static const char* jkRedistributeVgroupStmtDnodes = "Dnodes";
9912

9913
static int32_t redistributeVgroupStmtToJson(const void* pObj, SJson* pJson) {
×
9914
  const SRedistributeVgroupStmt* pNode = (const SRedistributeVgroupStmt*)pObj;
×
9915

9916
  int32_t code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtVgroupId, pNode->vgId);
×
9917
  if (TSDB_CODE_SUCCESS == code) {
×
9918
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId1, pNode->dnodeId1);
×
9919
  }
9920
  if (TSDB_CODE_SUCCESS == code) {
×
9921
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId2, pNode->dnodeId2);
×
9922
  }
9923
  if (TSDB_CODE_SUCCESS == code) {
×
9924
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId3, pNode->dnodeId3);
×
9925
  }
9926
  if (TSDB_CODE_SUCCESS == code) {
×
9927
    code = nodeListToJson(pJson, jkRedistributeVgroupStmtDnodes, pNode->pDnodes);
×
9928
  }
9929

9930
  return code;
×
9931
}
9932

9933
static int32_t jsonToRedistributeVgroupStmt(const SJson* pJson, void* pObj) {
×
9934
  SRedistributeVgroupStmt* pNode = (SRedistributeVgroupStmt*)pObj;
×
9935

9936
  int32_t code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtVgroupId, &pNode->vgId);
×
9937
  if (TSDB_CODE_SUCCESS == code) {
×
9938
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId1, &pNode->dnodeId1);
×
9939
  }
9940
  if (TSDB_CODE_SUCCESS == code) {
×
9941
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId2, &pNode->dnodeId2);
×
9942
  }
9943
  if (TSDB_CODE_SUCCESS == code) {
×
9944
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId3, &pNode->dnodeId3);
×
9945
  }
9946
  if (TSDB_CODE_SUCCESS == code) {
×
9947
    code = jsonToNodeList(pJson, jkRedistributeVgroupStmtDnodes, &pNode->pDnodes);
×
9948
  }
9949

9950
  return code;
×
9951
}
9952

9953
static const char* jkSplitVgroupStmtVgroupId = "VgroupId";
9954
static const char* jkSplitVgroupStmtForce = "Force";
9955

9956
static int32_t splitVgroupStmtToJson(const void* pObj, SJson* pJson) {
900✔
9957
  const SSplitVgroupStmt* pNode = (const SSplitVgroupStmt*)pObj;
900✔
9958
  int32_t                 code = tjsonAddIntegerToObject(pJson, jkSplitVgroupStmtVgroupId, pNode->vgId);
900✔
9959
  if (TSDB_CODE_SUCCESS == code) {
900✔
9960
    code = tjsonAddBoolToObject(pJson, jkSplitVgroupStmtForce, pNode->force);
900✔
9961
  }
9962

9963
  return code;
900✔
9964
}
9965

9966
static int32_t jsonToSplitVgroupStmt(const SJson* pJson, void* pObj) {
900✔
9967
  SSplitVgroupStmt* pNode = (SSplitVgroupStmt*)pObj;
900✔
9968
  int32_t           code = tjsonGetIntValue(pJson, jkSplitVgroupStmtVgroupId, &pNode->vgId);
900✔
9969
  if (TSDB_CODE_SUCCESS == code) {
900✔
9970
    code = tjsonGetBoolValue(pJson, jkSplitVgroupStmtForce, &pNode->force);
900✔
9971
  }
9972

9973
  return code;
900✔
9974
}
9975

9976
static const char* jkGrantStmtUserName = "UserName";
9977
static const char* jkGrantStmtObjName = "ObjName";
9978
static const char* jkGrantStmtPrivileges = "Privileges";
9979

9980
static int32_t grantStmtToJson(const void* pObj, SJson* pJson) {
×
9981
  const SGrantStmt* pNode = (const SGrantStmt*)pObj;
×
9982

9983
  int32_t code = tjsonAddStringToObject(pJson, jkGrantStmtUserName, pNode->principal);
×
9984
  if (TSDB_CODE_SUCCESS == code) {
×
9985
    code = tjsonAddStringToObject(pJson, jkGrantStmtObjName, pNode->objName);
×
9986
  }
9987
  if (TSDB_CODE_SUCCESS == code) {
×
9988
    if (pNode->tabName[0] != '\0') {
×
9989
      code = tjsonAddStringToObject(pJson, jkNameTableName, pNode->tabName);
×
9990
    }
9991
  }
9992
  if (TSDB_CODE_SUCCESS == code) {
×
9993
    code = tjsonAddIntegerToObject(pJson, "optrType", pNode->optrType);
×
9994
  }
9995

9996
  if (TSDB_CODE_SUCCESS == code) {
×
9997
    if (pNode->optrType == TSDB_ALTER_ROLE_PRIVILEGES) {
×
9998
      char    privSet[PRIV_GROUP_CNT * 20 + 1] = {0};
×
9999
      int32_t len = 0;
×
10000
      for (int32_t i = 0; i < PRIV_GROUP_CNT; ++i) {
×
10001
        len += snprintf(privSet + len, sizeof(privSet) - len, "%" PRIu64 ",", pNode->privileges.privSet.set[i]);
×
10002
        if (len >= sizeof(privSet)) {
×
10003
          code = TSDB_CODE_OUT_OF_RANGE;
×
10004
          break;
×
10005
        }
10006
      }
10007
      if (len > 0) privSet[len - 1] = '\0';  // remove last comma
×
10008
      code = tjsonAddStringToObject(pJson, jkGrantStmtPrivileges, privSet);
×
10009
    } else if (pNode->optrType == TSDB_ALTER_ROLE_ROLE) {
×
10010
      code = tjsonAddStringToObject(pJson, jkRoleStmtRoleName, pNode->roleName);
×
10011
    }
10012
  }
10013

10014
  return code;
×
10015
}
10016

10017
static int32_t jsonToGrantStmt(const SJson* pJson, void* pObj) {
×
10018
  SGrantStmt* pNode = (SGrantStmt*)pObj;
×
10019

10020
  int32_t code = tjsonGetStringValue1(pJson, jkGrantStmtUserName, pNode->principal, sizeof(pNode->principal));
×
10021
  if (TSDB_CODE_SUCCESS == code) {
×
10022
    code = tjsonGetStringValue1(pJson, jkGrantStmtObjName, pNode->objName, sizeof(pNode->objName));
×
10023
  }
10024
  if (TSDB_CODE_SUCCESS == code) {
×
10025
    code = tjsonGetStringValue1(pJson, jkNameTableName, pNode->tabName, sizeof(pNode->tabName));
×
10026
  }
10027
  if (TSDB_CODE_SUCCESS == code) {
×
10028
    tjsonGetNumberValue(pJson, "optrType", pNode->optrType, code);
×
10029
  }
10030
  if (TSDB_CODE_SUCCESS == code) {
×
10031
    if (pNode->optrType == TSDB_ALTER_ROLE_PRIVILEGES) {
×
10032
      char privSet[256] = {0};
×
10033
      code = tjsonGetStringValue2(pJson, jkGrantStmtPrivileges, privSet, sizeof(privSet));
×
10034
      if (TSDB_CODE_SUCCESS == code) {
×
10035
        int32_t split_num = 0;
×
10036
        char**  split = strsplit(privSet, ",", &split_num);
×
10037
        if (!split) {
×
10038
          nodesError("failed at line %d to parse privileges string: %s", __LINE__, privSet);
×
10039
          return TSDB_CODE_INVALID_PARA;
×
10040
        }
10041
        for (int32_t i = 0; i < PRIV_GROUP_CNT; ++i) {
×
10042
          if (i < split_num) {
×
10043
            uint64_t value = 0;
×
10044
            if ((code = taosStr2Uint64(split[i], &value))) {
×
10045
              taosMemoryFree(split);
×
10046
              return code;
×
10047
            }
10048
            pNode->privileges.privSet.set[i] = value;
×
10049
          } else {
10050
            pNode->privileges.privSet.set[i] = 0;
×
10051
          }
10052
        }
10053
        taosMemoryFree(split);
×
10054
      }
10055
    } else if (pNode->optrType == TSDB_ALTER_ROLE_ROLE) {
×
10056
      code = tjsonGetStringValue1(pJson, jkRoleStmtRoleName, pNode->roleName, sizeof(pNode->roleName));
×
10057
    }
10058
  }
10059

10060
  return code;
×
10061
}
10062

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

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

10067
static const char* jkShowStmtDbName = "DbName";
10068
static const char* jkShowStmtTbName = "TbName";
10069
static const char* jkShowStmtTableCondType = "TableCondType";
10070

10071
static int32_t showStmtToJson(const void* pObj, SJson* pJson) {
9,300✔
10072
  const SShowStmt* pNode = (const SShowStmt*)pObj;
9,300✔
10073

10074
  int32_t code = tjsonAddObject(pJson, jkShowStmtDbName, nodeToJson, pNode->pDbName);
9,300✔
10075
  if (TSDB_CODE_SUCCESS == code) {
9,300✔
10076
    code = tjsonAddObject(pJson, jkShowStmtTbName, nodeToJson, pNode->pTbName);
9,300✔
10077
  }
10078
  if (TSDB_CODE_SUCCESS == code) {
9,300✔
10079
    code = tjsonAddIntegerToObject(pJson, jkShowStmtTableCondType, pNode->tableCondType);
9,300✔
10080
  }
10081

10082
  return code;
9,300✔
10083
}
10084

10085
static int32_t jsonToShowStmt(const SJson* pJson, void* pObj) {
9,300✔
10086
  SShowStmt* pNode = (SShowStmt*)pObj;
9,300✔
10087

10088
  int32_t code = jsonToNodeObject(pJson, jkShowStmtDbName, &pNode->pDbName);
9,300✔
10089
  if (TSDB_CODE_SUCCESS == code) {
9,300✔
10090
    code = jsonToNodeObject(pJson, jkShowStmtTbName, &pNode->pTbName);
9,300✔
10091
  }
10092
  if (TSDB_CODE_SUCCESS == code) {
9,300✔
10093
    tjsonGetNumberValue(pJson, jkShowStmtTableCondType, pNode->tableCondType, code);
9,300✔
10094
  }
10095

10096
  return code;
9,300✔
10097
}
10098

10099
static int32_t showDnodesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
300✔
10100

10101
static int32_t jsonToShowDnodesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
300✔
10102

10103
static int32_t showMnodesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
300✔
10104

10105
static int32_t jsonToShowMnodesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
300✔
10106

10107
static int32_t showQnodesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
300✔
10108

10109
static int32_t jsonToShowQnodesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
300✔
10110

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

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

10115
static int32_t showXnodesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
10116

10117
static int32_t jsonToShowXnodesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
10118

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

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

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

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

10127
static int32_t showClusterStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
300✔
10128

10129
static int32_t jsonToShowClusterStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
300✔
10130

10131
static int32_t showDatabasesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
300✔
10132

10133
static int32_t jsonToShowDatabasesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
300✔
10134

10135
static int32_t showFunctionsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
300✔
10136

10137
static int32_t jsonToShowFunctionsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
300✔
10138

10139
static int32_t showIndexesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
600✔
10140

10141
static int32_t jsonToShowIndexesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
600✔
10142

10143
static int32_t showStablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
1,200✔
10144

10145
static int32_t jsonToShowStablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
1,200✔
10146

10147
static int32_t showStreamsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
300✔
10148

10149
static int32_t jsonToShowStreamsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
300✔
10150

10151
static int32_t showTablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
1,200✔
10152

10153
static int32_t jsonToShowTablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
1,200✔
10154

10155
static int32_t showTagsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
300✔
10156

10157
static int32_t jsonToShowTagsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
300✔
10158

10159
static int32_t showUsersStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
300✔
10160

10161
static int32_t jsonToShowUsersStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
300✔
10162

10163
static int32_t showRolesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
10164

10165
static int32_t jsonToShowRolesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
10166

10167
static int32_t showVgroupsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
600✔
10168

10169
static int32_t jsonToShowVgroupsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
600✔
10170

10171
static int32_t showConsumersStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
300✔
10172

10173
static int32_t jsonToShowConsumersStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
300✔
10174

10175
static int32_t showVariablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
900✔
10176

10177
static int32_t jsonToShowVariablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
900✔
10178

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

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

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

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

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

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

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

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

10195
static int32_t showUsageStmtStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
10196
static int32_t jsonToShowUsageStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
10197
static int32_t showMountsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
10198
static int32_t jsonToShowMountsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
10199
static int32_t showRsmasStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
10200
static int32_t jsonToShowRsmasStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
10201

10202
static const char* jkShowDnodeVariablesStmtDnodeId = "DnodeId";
10203
static const char* jkShowDnodeVariablesStmtLikePattern = "LikePattern";
10204

10205
static int32_t showDnodeVariablesStmtToJson(const void* pObj, SJson* pJson) {
600✔
10206
  const SShowDnodeVariablesStmt* pNode = (const SShowDnodeVariablesStmt*)pObj;
600✔
10207

10208
  int32_t code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtDnodeId, nodeToJson, pNode->pDnodeId);
600✔
10209
  if (TSDB_CODE_SUCCESS == code) {
600✔
10210
    code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtLikePattern, nodeToJson, pNode->pLikePattern);
600✔
10211
  }
10212

10213
  return code;
600✔
10214
}
10215

10216
static int32_t jsonToShowDnodeVariablesStmt(const SJson* pJson, void* pObj) {
600✔
10217
  SShowDnodeVariablesStmt* pNode = (SShowDnodeVariablesStmt*)pObj;
600✔
10218

10219
  int32_t code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtDnodeId, &pNode->pDnodeId);
600✔
10220
  if (TSDB_CODE_SUCCESS == code) {
600✔
10221
    code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtLikePattern, &pNode->pLikePattern);
600✔
10222
  }
10223

10224
  return code;
600✔
10225
}
10226

10227
static int32_t showTransactionsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
300✔
10228

10229
static int32_t jsonToShowTransactionsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
300✔
10230

10231
static int32_t showSubscriptionsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
300✔
10232

10233
static int32_t jsonToShowSubscriptionsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
300✔
10234

10235
static const char* jkShowVnodesStmtDnodeId = "DnodeId";
10236
static const char* jkShowVnodesStmtDnodeEndpoint = "DnodeEndpoint";
10237

10238
static int32_t showVnodesStmtToJson(const void* pObj, SJson* pJson) {
600✔
10239
  const SShowVnodesStmt* pNode = (const SShowVnodesStmt*)pObj;
600✔
10240

10241
  int32_t code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeId, nodeToJson, pNode->pDnodeId);
600✔
10242
  if (TSDB_CODE_SUCCESS == code) {
600✔
10243
    code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeEndpoint, nodeToJson, pNode->pDnodeEndpoint);
600✔
10244
  }
10245

10246
  return code;
600✔
10247
}
10248

10249
static int32_t jsonToShowVnodesStmt(const SJson* pJson, void* pObj) {
600✔
10250
  SShowVnodesStmt* pNode = (SShowVnodesStmt*)pObj;
600✔
10251

10252
  int32_t code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeId, &pNode->pDnodeId);
600✔
10253
  if (TSDB_CODE_SUCCESS == code) {
600✔
10254
    code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeEndpoint, &pNode->pDnodeEndpoint);
600✔
10255
  }
10256

10257
  return code;
600✔
10258
}
10259

10260
static int32_t showUserPrivilegesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
300✔
10261

10262
static int32_t jsonToShowUserPrivilegesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
300✔
10263

10264
static int32_t showRolePrivilegesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
10265

10266
static int32_t jsonToShowRolePrivilegesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
10267

10268
static const char* jkShowCreateDatabaseStmtDbName = "DbName";
10269

10270
static int32_t showCreateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
900✔
10271
  const SShowCreateDatabaseStmt* pNode = (const SShowCreateDatabaseStmt*)pObj;
900✔
10272
  return tjsonAddStringToObject(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
900✔
10273
}
10274

10275
static int32_t jsonToShowCreateDatabaseStmt(const SJson* pJson, void* pObj) {
900✔
10276
  SShowCreateDatabaseStmt* pNode = (SShowCreateDatabaseStmt*)pObj;
900✔
10277
  return tjsonGetStringValue1(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName, sizeof(pNode->dbName));
900✔
10278
}
10279

10280
static const char* jkShowCreateTableStmtDbName = "DbName";
10281
static const char* jkShowCreateTableStmtTableName = "TableName";
10282

10283
static int32_t showCreateTableStmtToJson(const void* pObj, SJson* pJson) {
1,800✔
10284
  const SShowCreateTableStmt* pNode = (const SShowCreateTableStmt*)pObj;
1,800✔
10285

10286
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
1,800✔
10287
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
10288
    code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
1,800✔
10289
  }
10290

10291
  return code;
1,800✔
10292
}
10293

10294
static int32_t jsonToShowCreateTableStmt(const SJson* pJson, void* pObj) {
1,800✔
10295
  SShowCreateTableStmt* pNode = (SShowCreateTableStmt*)pObj;
1,800✔
10296

10297
  int32_t code = tjsonGetStringValue1(pJson, jkShowCreateTableStmtDbName, pNode->dbName, sizeof(pNode->dbName));
1,800✔
10298
  if (TSDB_CODE_SUCCESS == code) {
1,800✔
10299
    code = tjsonGetStringValue1(pJson, jkShowCreateTableStmtTableName, pNode->tableName, sizeof(pNode->tableName));
1,800✔
10300
  }
10301

10302
  return code;
1,800✔
10303
}
10304

10305
static int32_t showCreateStableStmtToJson(const void* pObj, SJson* pJson) {
900✔
10306
  return showCreateTableStmtToJson(pObj, pJson);
900✔
10307
}
10308

10309
static int32_t jsonToShowCreateStableStmt(const SJson* pJson, void* pObj) {
900✔
10310
  return jsonToShowCreateTableStmt(pJson, pObj);
900✔
10311
}
10312

10313
static const char* jkShowCreateViewStmtDbName = "DbName";
10314
static const char* jkShowCreateViewStmtViewName = "ViewName";
10315

10316
static int32_t showCreateViewStmtToJson(const void* pObj, SJson* pJson) {
×
10317
  const SShowCreateViewStmt* pNode = (const SShowCreateViewStmt*)pObj;
×
10318

10319
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtDbName, pNode->dbName);
×
10320
  if (TSDB_CODE_SUCCESS == code) {
×
10321
    code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtViewName, pNode->viewName);
×
10322
  }
10323

10324
  return code;
×
10325
}
10326

10327
static int32_t jsonToShowCreateViewStmt(const SJson* pJson, void* pObj) {
×
10328
  SShowCreateViewStmt* pNode = (SShowCreateViewStmt*)pObj;
×
10329

10330
  int32_t code = tjsonGetStringValue1(pJson, jkShowCreateViewStmtDbName, pNode->dbName, sizeof(pNode->dbName));
×
10331
  if (TSDB_CODE_SUCCESS == code) {
×
10332
    code = tjsonGetStringValue1(pJson, jkShowCreateViewStmtViewName, pNode->viewName, sizeof(pNode->viewName));
×
10333
  }
10334

10335
  return code;
×
10336
}
10337

10338
static const char* jkShowTableDistributedStmtDbName = "DbName";
10339
static const char* jkShowTableDistributedStmtTableName = "TableName";
10340

10341
static int32_t showTableDistributedStmtToJson(const void* pObj, SJson* pJson) {
300✔
10342
  const SShowTableDistributedStmt* pNode = (const SShowTableDistributedStmt*)pObj;
300✔
10343

10344
  int32_t code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
300✔
10345
  if (TSDB_CODE_SUCCESS == code) {
300✔
10346
    code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
300✔
10347
  }
10348

10349
  return code;
300✔
10350
}
10351

10352
static int32_t showValidateVTableStmtToJson(const void* pObj, SJson* pJson) {
×
10353
  const SShowValidateVirtualTable* pNode = (const SShowValidateVirtualTable*)pObj;
×
10354

10355
  int32_t code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
×
10356
  if (TSDB_CODE_SUCCESS == code) {
×
10357
    code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
×
10358
  }
10359

10360
  return code;
×
10361
}
10362

10363
static int32_t jsonToShowTableDistributedStmt(const SJson* pJson, void* pObj) {
300✔
10364
  SShowTableDistributedStmt* pNode = (SShowTableDistributedStmt*)pObj;
300✔
10365

10366
  int32_t code = tjsonGetStringValue1(pJson, jkShowTableDistributedStmtDbName, pNode->dbName, sizeof(pNode->dbName));
300✔
10367
  if (TSDB_CODE_SUCCESS == code) {
300✔
10368
    code = tjsonGetStringValue1(pJson, jkShowTableDistributedStmtTableName, pNode->tableName, sizeof(pNode->tableName));
300✔
10369
  }
10370

10371
  return code;
300✔
10372
}
10373
static int32_t jsonToShowValidateVirtualTableStmt(const SJson* pJson, void* pObj) {
×
10374
  SShowValidateVirtualTable* pNode = (SShowValidateVirtualTable*)pObj;
×
10375

10376
  int32_t code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
×
10377
  if (TSDB_CODE_SUCCESS == code) {
×
10378
    code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
×
10379
  }
10380
  return code;
×
10381
}
10382

10383
static int32_t showLocalVariablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
900✔
10384

10385
static int32_t jsonToShowLocalVariablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
900✔
10386

10387
static const char* jkShowTableTagsStmtDbName = "DbName";
10388
static const char* jkShowTableTagsStmtTbName = "TbName";
10389
static const char* jkShowTableTagsStmtTags = "Tags";
10390

10391
static int32_t showTableTagsStmtToJson(const void* pObj, SJson* pJson) {
900✔
10392
  const SShowTableTagsStmt* pNode = (const SShowTableTagsStmt*)pObj;
900✔
10393

10394
  int32_t code = tjsonAddObject(pJson, jkShowTableTagsStmtDbName, nodeToJson, pNode->pDbName);
900✔
10395
  if (TSDB_CODE_SUCCESS == code) {
900✔
10396
    code = tjsonAddObject(pJson, jkShowTableTagsStmtTbName, nodeToJson, pNode->pTbName);
900✔
10397
  }
10398
  if (TSDB_CODE_SUCCESS == code) {
900✔
10399
    code = nodeListToJson(pJson, jkShowTableTagsStmtTags, pNode->pTags);
900✔
10400
  }
10401

10402
  return code;
900✔
10403
}
10404

10405
static int32_t jsonToShowTableTagsStmt(const SJson* pJson, void* pObj) {
900✔
10406
  SShowTableTagsStmt* pNode = (SShowTableTagsStmt*)pObj;
900✔
10407

10408
  int32_t code = jsonToNodeObject(pJson, jkShowTableTagsStmtDbName, &pNode->pDbName);
900✔
10409
  if (TSDB_CODE_SUCCESS == code) {
900✔
10410
    code = jsonToNodeObject(pJson, jkShowTableTagsStmtTbName, &pNode->pTbName);
900✔
10411
  }
10412
  if (TSDB_CODE_SUCCESS == code) {
900✔
10413
    code = jsonToNodeList(pJson, jkShowTableTagsStmtTags, &pNode->pTags);
900✔
10414
  }
10415

10416
  return code;
900✔
10417
}
10418

10419
static const char* jkDeleteStmtFromTable = "FromTable";
10420
static const char* jkDeleteStmtWhere = "Where";
10421
static const char* jkDeleteStmtCountFunc = "CountFunc";
10422
static const char* jkDeleteStmtTagIndexCond = "TagIndexCond";
10423
static const char* jkDeleteStmtTimeRangeStartKey = "TimeRangeStartKey";
10424
static const char* jkDeleteStmtTimeRangeEndKey = "TimeRangeEndKey";
10425
static const char* jkDeleteStmtPrecision = "Precision";
10426
static const char* jkDeleteStmtDeleteZeroRows = "DeleteZeroRows";
10427

10428
static int32_t deleteStmtToJson(const void* pObj, SJson* pJson) {
7,000✔
10429
  const SDeleteStmt* pNode = (const SDeleteStmt*)pObj;
7,000✔
10430

10431
  int32_t code = tjsonAddObject(pJson, jkDeleteStmtFromTable, nodeToJson, pNode->pFromTable);
7,000✔
10432
  if (TSDB_CODE_SUCCESS == code) {
7,000✔
10433
    code = tjsonAddObject(pJson, jkDeleteStmtWhere, nodeToJson, pNode->pWhere);
7,000✔
10434
  }
10435
  if (TSDB_CODE_SUCCESS == code) {
7,000✔
10436
    code = tjsonAddObject(pJson, jkDeleteStmtCountFunc, nodeToJson, pNode->pCountFunc);
7,000✔
10437
  }
10438
  if (TSDB_CODE_SUCCESS == code) {
7,000✔
10439
    code = tjsonAddObject(pJson, jkDeleteStmtTagIndexCond, nodeToJson, pNode->pTagCond);
7,000✔
10440
  }
10441
  if (TSDB_CODE_SUCCESS == code) {
7,000✔
10442
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtTimeRangeStartKey, pNode->timeRange.skey);
7,000✔
10443
  }
10444
  if (TSDB_CODE_SUCCESS == code) {
7,000✔
10445
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtTimeRangeEndKey, pNode->timeRange.ekey);
7,000✔
10446
  }
10447
  if (TSDB_CODE_SUCCESS == code) {
7,000✔
10448
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtPrecision, pNode->precision);
7,000✔
10449
  }
10450
  if (TSDB_CODE_SUCCESS == code) {
7,000✔
10451
    code = tjsonAddBoolToObject(pJson, jkDeleteStmtDeleteZeroRows, pNode->deleteZeroRows);
7,000✔
10452
  }
10453

10454
  return code;
7,000✔
10455
}
10456

10457
static int32_t jsonToDeleteStmt(const SJson* pJson, void* pObj) {
7,000✔
10458
  SDeleteStmt* pNode = (SDeleteStmt*)pObj;
7,000✔
10459

10460
  int32_t code = jsonToNodeObject(pJson, jkDeleteStmtFromTable, &pNode->pFromTable);
7,000✔
10461
  if (TSDB_CODE_SUCCESS == code) {
7,000✔
10462
    code = jsonToNodeObject(pJson, jkDeleteStmtWhere, &pNode->pWhere);
7,000✔
10463
  }
10464
  if (TSDB_CODE_SUCCESS == code) {
7,000✔
10465
    code = jsonToNodeObject(pJson, jkDeleteStmtCountFunc, &pNode->pCountFunc);
7,000✔
10466
  }
10467
  if (TSDB_CODE_SUCCESS == code) {
7,000✔
10468
    code = jsonToNodeObject(pJson, jkDeleteStmtTagIndexCond, &pNode->pTagCond);
7,000✔
10469
  }
10470
  if (TSDB_CODE_SUCCESS == code) {
7,000✔
10471
    code = tjsonGetBigIntValue(pJson, jkDeleteStmtTimeRangeStartKey, &pNode->timeRange.skey);
7,000✔
10472
  }
10473
  if (TSDB_CODE_SUCCESS == code) {
7,000✔
10474
    code = tjsonGetBigIntValue(pJson, jkDeleteStmtTimeRangeEndKey, &pNode->timeRange.ekey);
7,000✔
10475
  }
10476
  if (TSDB_CODE_SUCCESS == code) {
7,000✔
10477
    code = tjsonGetUTinyIntValue(pJson, jkDeleteStmtPrecision, &pNode->precision);
7,000✔
10478
  }
10479
  if (TSDB_CODE_SUCCESS == code) {
7,000✔
10480
    code = tjsonGetBoolValue(pJson, jkDeleteStmtDeleteZeroRows, &pNode->deleteZeroRows);
7,000✔
10481
  }
10482

10483
  return code;
7,000✔
10484
}
10485

10486
static const char* jkInsertStmtTable = "Table";
10487
static const char* jkInsertStmtCols = "Cols";
10488
static const char* jkInsertStmtQuery = "Query";
10489
static const char* jkInsertStmtPrecision = "Precision";
10490

10491
static int32_t insertStmtToJson(const void* pObj, SJson* pJson) {
300✔
10492
  const SInsertStmt* pNode = (const SInsertStmt*)pObj;
300✔
10493

10494
  int32_t code = tjsonAddObject(pJson, jkInsertStmtTable, nodeToJson, pNode->pTable);
300✔
10495
  if (TSDB_CODE_SUCCESS == code) {
300✔
10496
    code = nodeListToJson(pJson, jkInsertStmtCols, pNode->pCols);
300✔
10497
  }
10498
  if (TSDB_CODE_SUCCESS == code) {
300✔
10499
    code = tjsonAddObject(pJson, jkInsertStmtQuery, nodeToJson, pNode->pQuery);
300✔
10500
  }
10501
  if (TSDB_CODE_SUCCESS == code) {
300✔
10502
    code = tjsonAddIntegerToObject(pJson, jkInsertStmtPrecision, pNode->precision);
300✔
10503
  }
10504

10505
  return code;
300✔
10506
}
10507

10508
static int32_t jsonToInsertStmt(const SJson* pJson, void* pObj) {
300✔
10509
  SInsertStmt* pNode = (SInsertStmt*)pObj;
300✔
10510

10511
  int32_t code = jsonToNodeObject(pJson, jkInsertStmtTable, &pNode->pTable);
300✔
10512
  if (TSDB_CODE_SUCCESS == code) {
300✔
10513
    code = jsonToNodeList(pJson, jkInsertStmtCols, &pNode->pCols);
300✔
10514
  }
10515
  if (TSDB_CODE_SUCCESS == code) {
300✔
10516
    code = jsonToNodeObject(pJson, jkInsertStmtQuery, &pNode->pQuery);
300✔
10517
  }
10518
  if (TSDB_CODE_SUCCESS == code) {
300✔
10519
    code = tjsonGetUTinyIntValue(pJson, jkInsertStmtPrecision, &pNode->precision);
300✔
10520
  }
10521

10522
  return code;
300✔
10523
}
10524

10525
static const char* jkTSMAOptionFuncs = "Funcs";
10526
static const char* jkTSMAOptionCols = "Cols";
10527
static const char* jkTSMAOptionInterval = "Interval";
10528
static const char* jkTSMAOptionTsPrecision = "Precision";
10529

10530
static int32_t tsmaOptionToJson(const void* pObj, SJson* pJson) {
×
10531
  const STSMAOptions* pNode = (const STSMAOptions*)pObj;
×
10532
  int32_t             code = nodeListToJson(pJson, jkTSMAOptionFuncs, pNode->pFuncs);
×
10533
  if (TSDB_CODE_SUCCESS == code) {
×
10534
    code = tjsonAddObject(pJson, jkTSMAOptionInterval, nodeToJson, pNode->pInterval);
×
10535
  }
10536
  if (TSDB_CODE_SUCCESS == code) {
×
10537
    code = tjsonAddIntegerToObject(pJson, jkTSMAOptionTsPrecision, pNode->tsPrecision);
×
10538
  }
10539
  return code;
×
10540
}
10541

10542
static int32_t jsonToTSMAOption(const SJson* pJson, void* pObj) {
×
10543
  STSMAOptions* pNode = (STSMAOptions*)pObj;
×
10544
  int32_t       code = jsonToNodeList(pJson, jkTSMAOptionFuncs, &pNode->pFuncs);
×
10545
  if (TSDB_CODE_SUCCESS == code) {
×
10546
    code = jsonToNodeObject(pJson, jkTSMAOptionInterval, &pNode->pInterval);
×
10547
  }
10548
  if (TSDB_CODE_SUCCESS == code) {
×
10549
    code = tjsonGetUTinyIntValue(pJson, jkTSMAOptionTsPrecision, &pNode->tsPrecision);
×
10550
  }
10551
  return code;
×
10552
}
10553

10554
static const char* jkCreateTSMAStmtIgnoreExists = "IgnoreExists";
10555
static const char* jkCreateTSMAStmtTsmaName = "TSMAName";
10556
static const char* jkCreateTSMAStmtDbName = "DbName";
10557
static const char* jkCreateTSMAStmtTableName = "TableName";
10558
static const char* jkCreateTSMAStmtpOptions = "Options";
10559

10560
static int32_t createTSMAStmtToJson(const void* pObj, SJson* pJson) {
×
10561
  const SCreateTSMAStmt* pNode = (const SCreateTSMAStmt*)pObj;
×
10562
  int32_t                code = tjsonAddBoolToObject(pJson, jkCreateTSMAStmtIgnoreExists, pNode->ignoreExists);
×
10563
  if (TSDB_CODE_SUCCESS == code) {
×
10564
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtTsmaName, pNode->tsmaName);
×
10565
  }
10566
  if (TSDB_CODE_SUCCESS == code) {
×
10567
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtDbName, pNode->dbName);
×
10568
  }
10569
  if (TSDB_CODE_SUCCESS == code) {
×
10570
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtTableName, pNode->tableName);
×
10571
  }
10572
  if (TSDB_CODE_SUCCESS == code) {
×
10573
    code = tjsonAddObject(pJson, jkCreateTSMAStmtpOptions, nodeToJson, pNode->pOptions);
×
10574
  }
10575
  return code;
×
10576
}
10577

10578
static int32_t jsonToCreateTSMAStmt(const SJson* pJson, void* pObj) {
×
10579
  SCreateTSMAStmt* pNode = (SCreateTSMAStmt*)pObj;
×
10580
  int32_t          code = tjsonGetBoolValue(pJson, jkCreateTSMAStmtIgnoreExists, &pNode->ignoreExists);
×
10581
  if (TSDB_CODE_SUCCESS == code) {
×
10582
    code = tjsonGetStringValue1(pJson, jkCreateTSMAStmtTsmaName, pNode->tsmaName, sizeof(pNode->tsmaName));
×
10583
  }
10584
  if (TSDB_CODE_SUCCESS == code) {
×
10585
    code = tjsonGetStringValue1(pJson, jkCreateTSMAStmtDbName, pNode->dbName, sizeof(pNode->dbName));
×
10586
  }
10587
  if (TSDB_CODE_SUCCESS == code) {
×
10588
    code = tjsonGetStringValue1(pJson, jkCreateTSMAStmtTableName, pNode->tableName, sizeof(pNode->tableName));
×
10589
  }
10590
  if (TSDB_CODE_SUCCESS == code) {
×
10591
    code = jsonToNodeObject(pJson, jkCreateTSMAStmtpOptions, (SNode**)&pNode->pOptions);
×
10592
  }
10593
  return code;
×
10594
}
10595

10596
static const char* jkDropTSMAStmtIgnoreNotExists = "IgnoreNotExists";
10597
static const char* jkDropTSMAStmtDbName = "DbName";
10598
static const char* jkDropTSMAStmtTsmaName = "TSMAName";
10599

10600
static int32_t dropTSMAStmtToJson(const void* pObj, SJson* pJson) {
×
10601
  const SDropTSMAStmt* pNode = (const SDropTSMAStmt*)pObj;
×
10602
  int32_t              code = tjsonAddBoolToObject(pJson, jkDropTSMAStmtIgnoreNotExists, pNode->ignoreNotExists);
×
10603
  if (TSDB_CODE_SUCCESS == code) {
×
10604
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtDbName, pNode->dbName);
×
10605
  }
10606
  if (TSDB_CODE_SUCCESS == code) {
×
10607
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName);
×
10608
  }
10609
  return code;
×
10610
}
10611

10612
static int32_t jsonToDropTSMAStmt(const SJson* pJson, void* pObj) {
×
10613
  SDropTSMAStmt* pNode = (SDropTSMAStmt*)pObj;
×
10614
  int32_t        code = tjsonGetBoolValue(pJson, jkDropTSMAStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
10615
  if (TSDB_CODE_SUCCESS == code) {
×
10616
    code = tjsonGetStringValue1(pJson, jkDropTSMAStmtDbName, pNode->dbName, sizeof(pNode->dbName));
×
10617
  }
10618
  if (TSDB_CODE_SUCCESS == code) {
×
10619
    code = tjsonGetStringValue1(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName, sizeof(pNode->tsmaName));
×
10620
  }
10621
  return code;
×
10622
}
10623

10624
static int32_t specificNodeToJson(const void* pObj, SJson* pJson) {
2,147,483,647✔
10625
  switch (nodeType(pObj)) {
2,147,483,647✔
10626
    case QUERY_NODE_COLUMN:
2,147,483,647✔
10627
      return columnNodeToJson(pObj, pJson);
2,147,483,647✔
10628
    case QUERY_NODE_VALUE:
508,728,393✔
10629
      return valueNodeToJson(pObj, pJson);
508,728,393✔
10630
    case QUERY_NODE_OPERATOR:
291,330,221✔
10631
      return operatorNodeToJson(pObj, pJson);
291,330,221✔
10632
    case QUERY_NODE_LOGIC_CONDITION:
70,819,523✔
10633
      return logicConditionNodeToJson(pObj, pJson);
70,819,523✔
10634
    case QUERY_NODE_FUNCTION:
638,032,769✔
10635
      return functionNodeToJson(pObj, pJson);
638,032,769✔
10636
    case QUERY_NODE_REAL_TABLE:
516,587✔
10637
      return realTableNodeToJson(pObj, pJson);
516,587✔
10638
    case QUERY_NODE_TEMP_TABLE:
26,228✔
10639
      return tempTableNodeToJson(pObj, pJson);
26,228✔
10640
    case QUERY_NODE_JOIN_TABLE:
11,800✔
10641
      return joinTableNodeToJson(pObj, pJson);
11,800✔
10642
    case QUERY_NODE_VIRTUAL_TABLE:
×
10643
      return virtualTableNodeToJson(pObj, pJson);
×
10644
    case QUERY_NODE_PLACE_HOLDER_TABLE:
700✔
10645
      return placeHolderTableNodeToJson(pObj, pJson);
700✔
10646
    case QUERY_NODE_SLIDING_WINDOW:
×
10647
      return slidingWindowNodeToJson(pObj, pJson);
×
10648
    case QUERY_NODE_PERIOD_WINDOW:
11,000✔
10649
      return periodWindowNodeToJson(pObj, pJson);
11,000✔
10650
    case QUERY_NODE_STREAM_TRIGGER:
91,100✔
10651
      return streamTriggerNodeToJson(pObj, pJson);
91,100✔
10652
    case QUERY_NODE_STREAM:
×
10653
      return streamNodeToJson(pObj, pJson);
×
10654
    case QUERY_NODE_STREAM_TAG_DEF:
17,000✔
10655
      return streamTagDefNodeToJson(pObj, pJson);
17,000✔
10656
    case QUERY_NODE_EXTERNAL_WINDOW:
4,200✔
10657
      return externalWindowNodeToJson(pObj, pJson);
4,200✔
10658
    case QUERY_NODE_GROUPING_SET:
66,300✔
10659
      return groupingSetNodeToJson(pObj, pJson);
66,300✔
10660
    case QUERY_NODE_ORDER_BY_EXPR:
78,148,368✔
10661
      return orderByExprNodeToJson(pObj, pJson);
78,148,368✔
10662
    case QUERY_NODE_LIMIT:
47,551,262✔
10663
      return limitNodeToJson(pObj, pJson);
47,551,262✔
10664
    case QUERY_NODE_STATE_WINDOW:
25,300✔
10665
      return stateWindowNodeToJson(pObj, pJson);
25,300✔
10666
    case QUERY_NODE_SESSION_WINDOW:
3,700✔
10667
      return sessionWindowNodeToJson(pObj, pJson);
3,700✔
10668
    case QUERY_NODE_INTERVAL_WINDOW:
85,800✔
10669
      return intervalWindowNodeToJson(pObj, pJson);
85,800✔
10670
    case QUERY_NODE_NODE_LIST:
714,688,635✔
10671
      return nodeListNodeToJson(pObj, pJson);
714,688,635✔
10672
    case QUERY_NODE_FILL:
3,800✔
10673
      return fillNodeToJson(pObj, pJson);
3,800✔
10674
    case QUERY_NODE_RAW_EXPR:
×
10675
      break;
×
10676
    case QUERY_NODE_TARGET:
2,147,483,647✔
10677
      return targetNodeToJson(pObj, pJson);
2,147,483,647✔
10678
    case QUERY_NODE_DATABLOCK_DESC:
1,161,356,376✔
10679
      return dataBlockDescNodeToJson(pObj, pJson);
1,161,356,376✔
10680
    case QUERY_NODE_SLOT_DESC:
2,147,483,647✔
10681
      return slotDescNodeToJson(pObj, pJson);
2,147,483,647✔
10682
    case QUERY_NODE_COLUMN_DEF:
1,413,000✔
10683
      return columnDefNodeToJson(pObj, pJson);
1,413,000✔
10684
    case QUERY_NODE_DOWNSTREAM_SOURCE:
2,278,607✔
10685
      return downstreamSourceNodeToJson(pObj, pJson);
2,278,607✔
10686
    case QUERY_NODE_DATABASE_OPTIONS:
42,000✔
10687
      return databaseOptionsToJson(pObj, pJson);
42,000✔
10688
    case QUERY_NODE_TABLE_OPTIONS:
7,800✔
10689
      return tableOptionsToJson(pObj, pJson);
7,800✔
10690
    case QUERY_NODE_COLUMN_OPTIONS:
1,266,600✔
10691
      return columnOptionsToJson(pObj, pJson);
1,266,600✔
10692
    case QUERY_NODE_INDEX_OPTIONS:
×
10693
      return indexOptionsToJson(pObj, pJson);
×
10694
    case QUERY_NODE_EXPLAIN_OPTIONS:
3,000✔
10695
      return explainOptionsToJson(pObj, pJson);
3,000✔
10696
    case QUERY_NODE_STREAM_TRIGGER_OPTIONS:
23,600✔
10697
      return streamOptionsToJson(pObj, pJson);
23,600✔
10698
    case QUERY_NODE_LEFT_VALUE:
8,572,181✔
10699
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to serialize.
8,572,181✔
10700
    case QUERY_NODE_COLUMN_REF:
×
10701
      return columnReferenceToJson(pObj, pJson);
×
10702
    case QUERY_NODE_WHEN_THEN:
1,586,765✔
10703
      return whenThenNodeToJson(pObj, pJson);
1,586,765✔
10704
    case QUERY_NODE_CASE_WHEN:
1,343,465✔
10705
      return caseWhenNodeToJson(pObj, pJson);
1,343,465✔
10706
    case QUERY_NODE_EVENT_WINDOW:
3,000✔
10707
      return eventWindowNodeToJson(pObj, pJson);
3,000✔
10708
    case QUERY_NODE_WINDOW_OFFSET:
72,432✔
10709
      return windowOffsetNodeToJson(pObj, pJson);
72,432✔
10710
    case QUERY_NODE_COUNT_WINDOW:
4,600✔
10711
      return countWindowNodeToJson(pObj, pJson);
4,600✔
10712
    case QUERY_NODE_ANOMALY_WINDOW:
×
10713
      return anomalyWindowNodeToJson(pObj, pJson);
×
10714
    case QUERY_NODE_STREAM_NOTIFY_OPTIONS:
4,000✔
10715
      return streamNotifyOptionsToJson(pObj, pJson);
4,000✔
10716
    case QUERY_NODE_REMOTE_VALUE:
83,745✔
10717
      return remoteValueToJson(pObj, pJson);
83,745✔
10718
    case QUERY_NODE_REMOTE_VALUE_LIST:
179,594✔
10719
      return remoteValueListToJson(pObj, pJson);
179,594✔
10720
    case QUERY_NODE_REMOTE_ROW:
6,110✔
10721
      return remoteRowToJson(pObj, pJson);
6,110✔
10722
    case QUERY_NODE_REMOTE_ZERO_ROWS:
4,448✔
10723
      return remoteZeroRowsToJson(pObj, pJson);
4,448✔
10724
    case QUERY_NODE_REMOTE_TABLE:
×
10725
      return remoteTableToJson(pObj, pJson);
×
10726
    case QUERY_NODE_UPDATE_TAG_VALUE:
×
10727
      return updateTagValueNodeToJson(pObj, pJson);
×
10728
    case QUERY_NODE_ALTER_TABLE_UPDATE_TAG_VAL_CLAUSE:
×
10729
      return alterTableUpdateTagValClauseToJson(pObj, pJson);
×
10730
    case QUERY_NODE_TRUE_FOR:
1,200✔
10731
      return trueForNodeToJson(pObj, pJson);
1,200✔
10732
    case QUERY_NODE_SET_OPERATOR:
6,400✔
10733
      return setOperatorToJson(pObj, pJson);
6,400✔
10734
    case QUERY_NODE_TIME_RANGE:
1,296,515✔
10735
      return timeRangeNodeToJson(pObj, pJson);
1,296,515✔
10736
    case QUERY_NODE_SELECT_STMT:
440,715✔
10737
      return selectStmtToJson(pObj, pJson);
440,715✔
10738
    case QUERY_NODE_VNODE_MODIFY_STMT:
12,000✔
10739
      return vnodeModifyStmtToJson(pObj, pJson);
12,000✔
10740
    case QUERY_NODE_CREATE_DATABASE_STMT:
5,400✔
10741
      return createDatabaseStmtToJson(pObj, pJson);
5,400✔
10742
    case QUERY_NODE_ALTER_DATABASE_STMT:
36,600✔
10743
      return alterDatabaseStmtToJson(pObj, pJson);
36,600✔
10744
    case QUERY_NODE_TRIM_DATABASE_STMT:
1,800✔
10745
      return trimDatabaseStmtToJson(pObj, pJson);
1,800✔
10746
    case QUERY_NODE_SSMIGRATE_DATABASE_STMT:
×
10747
      return ssMigrateDatabaseStmtToJson(pObj, pJson);
×
10748
    case QUERY_NODE_CREATE_TABLE_STMT:
4,500✔
10749
      return createTableStmtToJson(pObj, pJson);
4,500✔
10750
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
1,500✔
10751
      return createSubTableClauseToJson(pObj, pJson);
1,500✔
10752
    case QUERY_NODE_CREATE_VIRTUAL_TABLE_STMT:
×
10753
      return createVTableStmtToJson(pObj, pJson);
×
10754
    case QUERY_NODE_CREATE_VIRTUAL_SUBTABLE_STMT:
×
10755
      return createVSubTableStmtToJson(pObj, pJson);
×
10756
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
900✔
10757
      return createMultiTablesStmtToJson(pObj, pJson);
900✔
10758
    case QUERY_NODE_DROP_TABLE_CLAUSE:
1,200✔
10759
      return dropTableClauseToJson(pObj, pJson);
1,200✔
10760
    case QUERY_NODE_DROP_TABLE_STMT:
600✔
10761
      return dropTableStmtToJson(pObj, pJson);
600✔
10762
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
900✔
10763
      return dropStableStmtToJson(pObj, pJson);
900✔
10764
    case QUERY_NODE_DROP_VIRTUAL_TABLE_STMT:
×
10765
      return dropVtableStmtToJson(pObj, pJson);
×
10766
    case QUERY_NODE_ALTER_TABLE_STMT:
7,500✔
10767
      return alterTableStmtToJson(pObj, pJson);
7,500✔
10768
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
8,700✔
10769
      return alterStableStmtToJson(pObj, pJson);
8,700✔
10770
    case QUERY_NODE_CREATE_USER_STMT:
1,800✔
10771
      return createUserStmtToJson(pObj, pJson);
1,800✔
10772
    case QUERY_NODE_CREATE_ENCRYPT_ALGORITHMS_STMT:
×
10773
      return createEncryptAlgrStmtToJson(pObj, pJson);
×
10774
    case QUERY_NODE_DROP_ENCRYPT_ALGR_STMT:
×
10775
      return dropEncryptAlgrStmtToJson(pObj, pJson);
×
10776
    case QUERY_NODE_ALTER_USER_STMT:
×
10777
      return alterUserStmtToJson(pObj, pJson);
×
10778
    case QUERY_NODE_DROP_USER_STMT:
900✔
10779
      return dropUserStmtToJson(pObj, pJson);
900✔
10780
    case QUERY_NODE_CREATE_ROLE_STMT:
×
10781
      return createRoleStmtToJson(pObj, pJson);
×
10782
    case QUERY_NODE_DROP_ROLE_STMT:
×
10783
      return dropRoleStmtToJson(pObj, pJson);
×
10784
    case QUERY_NODE_ALTER_ROLE_STMT:
×
10785
      return alterRoleStmtToJson(pObj, pJson);
×
10786
    case QUERY_NODE_USE_DATABASE_STMT:
900✔
10787
      return useDatabaseStmtToJson(pObj, pJson);
900✔
10788
    case QUERY_NODE_CREATE_DNODE_STMT:
5,400✔
10789
      return createDnodeStmtToJson(pObj, pJson);
5,400✔
10790
    case QUERY_NODE_DROP_DNODE_STMT:
8,100✔
10791
      return dropDnodeStmtToJson(pObj, pJson);
8,100✔
10792
    case QUERY_NODE_ALTER_DNODE_STMT:
3,600✔
10793
      return alterDnodeStmtToJson(pObj, pJson);
3,600✔
10794
    case QUERY_NODE_ALTER_DNODES_RELOAD_TLS_STMT:
×
10795
      return alterDnodeStmtToJson(pObj, pJson);
×
10796
    case QUERY_NODE_ALTER_ENCRYPT_KEY_STMT:
×
10797
      return alterEncryptKeyStmtToJson(pObj, pJson);
×
10798
    case QUERY_NODE_ALTER_KEY_EXPIRATION_STMT:
×
10799
      return alterKeyExpirationStmtToJson(pObj, pJson);
×
10800
    case QUERY_NODE_CREATE_INDEX_STMT:
×
10801
      return createIndexStmtToJson(pObj, pJson);
×
10802
    case QUERY_NODE_DROP_INDEX_STMT:
1,800✔
10803
      return dropIndexStmtToJson(pObj, pJson);
1,800✔
10804
    case QUERY_NODE_CREATE_QNODE_STMT:
900✔
10805
      return createQnodeStmtToJson(pObj, pJson);
900✔
10806
    case QUERY_NODE_DROP_QNODE_STMT:
900✔
10807
      return dropQnodeStmtToJson(pObj, pJson);
900✔
10808
    case QUERY_NODE_CREATE_ANODE_STMT:
×
10809
      return createAnodeStmtToJson(pObj, pJson);
×
10810
    case QUERY_NODE_DROP_ANODE_STMT:
×
10811
      return dropAnodeStmtToJson(pObj, pJson);
×
10812
    case QUERY_NODE_UPDATE_ANODE_STMT:
×
10813
      return updateAnodeStmtToJson(pObj, pJson);
×
10814
    case QUERY_NODE_CREATE_BNODE_STMT:
×
10815
      return createBnodeStmtToJson(pObj, pJson);
×
10816
    case QUERY_NODE_DROP_BNODE_STMT:
×
10817
      return dropBnodeStmtToJson(pObj, pJson);
×
10818
    case QUERY_NODE_CREATE_SNODE_STMT:
900✔
10819
      return createSnodeStmtToJson(pObj, pJson);
900✔
10820
    case QUERY_NODE_DROP_SNODE_STMT:
900✔
10821
      return dropSnodeStmtToJson(pObj, pJson);
900✔
10822
    case QUERY_NODE_CREATE_MNODE_STMT:
900✔
10823
      return createMnodeStmtToJson(pObj, pJson);
900✔
10824
    case QUERY_NODE_DROP_MNODE_STMT:
900✔
10825
      return dropMnodeStmtToJson(pObj, pJson);
900✔
10826
    case QUERY_NODE_CREATE_TOPIC_STMT:
7,300✔
10827
      return createTopicStmtToJson(pObj, pJson);
7,300✔
10828
    case QUERY_NODE_DROP_TOPIC_STMT:
1,800✔
10829
      return dropTopicStmtToJson(pObj, pJson);
1,800✔
10830
    case QUERY_NODE_DROP_CGROUP_STMT:
1,800✔
10831
      return dropConsumerGroupStmtToJson(pObj, pJson);
1,800✔
10832
    case QUERY_NODE_ALTER_LOCAL_STMT:
1,800✔
10833
      return alterLocalStmtToJson(pObj, pJson);
1,800✔
10834
    case QUERY_NODE_EXPLAIN_STMT:
3,000✔
10835
      return explainStmtToJson(pObj, pJson);
3,000✔
10836
    case QUERY_NODE_DESCRIBE_STMT:
1,800✔
10837
      return describeStmtToJson(pObj, pJson);
1,800✔
10838
    case QUERY_NODE_COMPACT_DATABASE_STMT:
3,600✔
10839
      return compactDatabaseStmtToJson(pObj, pJson);
3,600✔
10840
    case QUERY_NODE_ROLLUP_DATABASE_STMT:
×
10841
      return rollupDatabaseStmtToJson(pObj, pJson);
×
10842
    case QUERY_NODE_SCAN_DATABASE_STMT:
×
10843
      return scanDatabaseStmtToJson(pObj, pJson);
×
10844
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
×
10845
      return compactVgroupsStmtToJson(pObj, pJson);
×
10846
    case QUERY_NODE_ROLLUP_VGROUPS_STMT:
×
10847
      return rollupVgroupsStmtToJson(pObj, pJson);
×
10848
    case QUERY_NODE_SCAN_VGROUPS_STMT:
×
10849
      return scanVgroupsStmtToJson(pObj, pJson);
×
10850
    case QUERY_NODE_CREATE_STREAM_STMT:
91,100✔
10851
      return createStreamStmtToJson(pObj, pJson);
91,100✔
10852
    case QUERY_NODE_DROP_STREAM_STMT:
×
10853
      return dropStreamStmtToJson(pObj, pJson);
×
10854
    case QUERY_NODE_BALANCE_VGROUP_STMT:
900✔
10855
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to serialize.
900✔
10856
    case QUERY_NODE_ASSIGN_LEADER_STMT:
×
10857
      return TSDB_CODE_SUCCESS;
×
10858
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
900✔
10859
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupLeaderStmt has no fields to serialize.
900✔
10860
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
10861
      return TSDB_CODE_SUCCESS;
×
10862
    case QUERY_NODE_SET_VGROUP_KEEP_VERSION_STMT:
×
10863
      return TSDB_CODE_SUCCESS;  // SSetVgroupKeepVersionStmt has simple fields, no need to serialize.
×
10864
    case QUERY_NODE_TRIM_DATABASE_WAL_STMT:
×
10865
      return TSDB_CODE_SUCCESS;  // STrimDbWalStmt has simple fields, no need to serialize.
×
10866
    case QUERY_NODE_MERGE_VGROUP_STMT:
×
10867
      return mergeVgroupStmtToJson(pObj, pJson);
×
10868
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
×
10869
      return redistributeVgroupStmtToJson(pObj, pJson);
×
10870
    case QUERY_NODE_SPLIT_VGROUP_STMT:
900✔
10871
      return splitVgroupStmtToJson(pObj, pJson);
900✔
10872
    case QUERY_NODE_GRANT_STMT:
×
10873
      return grantStmtToJson(pObj, pJson);
×
10874
    case QUERY_NODE_REVOKE_STMT:
×
10875
      return revokeStmtToJson(pObj, pJson);
×
10876
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
10877
      return alterClusterStmtToJson(pObj, pJson);
×
10878
    case QUERY_NODE_CREATE_MOUNT_STMT:
×
10879
      return createDatabaseStmtToJson(pObj, pJson);
×
10880
    case QUERY_NODE_DROP_MOUNT_STMT:
×
10881
      return createDatabaseStmtToJson(pObj, pJson);
×
10882
    case QUERY_NODE_SHOW_DNODES_STMT:
300✔
10883
      return showDnodesStmtToJson(pObj, pJson);
300✔
10884
    case QUERY_NODE_SHOW_MNODES_STMT:
300✔
10885
      return showMnodesStmtToJson(pObj, pJson);
300✔
10886
    case QUERY_NODE_SHOW_QNODES_STMT:
300✔
10887
      return showQnodesStmtToJson(pObj, pJson);
300✔
10888
    case QUERY_NODE_SHOW_ANODES_STMT:
×
10889
      return showAnodesStmtToJson(pObj, pJson);
×
10890
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
10891
      return showAnodesFullStmtToJson(pObj, pJson);
×
10892
    case QUERY_NODE_SHOW_XNODES_STMT:
×
10893
      return showXnodesStmtToJson(pObj, pJson);
×
10894
    case QUERY_NODE_SHOW_XNODE_TASKS_STMT:
×
10895
      return showXnodesStmtToJson(pObj, pJson);
×
10896
    case QUERY_NODE_SHOW_XNODE_AGENTS_STMT:
×
10897
      return showXnodesStmtToJson(pObj, pJson);
×
10898
    case QUERY_NODE_SHOW_XNODE_JOBS_STMT:
×
10899
      return showXnodesStmtToJson(pObj, pJson);
×
10900
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
10901
      return showArbGroupsStmtToJson(pObj, pJson);
×
10902
    case QUERY_NODE_SHOW_CLUSTER_STMT:
300✔
10903
      return showClusterStmtToJson(pObj, pJson);
300✔
10904
    case QUERY_NODE_SHOW_SECURITY_POLICIES_STMT:
×
10905
      return showStmtToJson(pObj, pJson);
×
10906
    case QUERY_NODE_SHOW_DATABASES_STMT:
300✔
10907
      return showDatabasesStmtToJson(pObj, pJson);
300✔
10908
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
300✔
10909
      return showFunctionsStmtToJson(pObj, pJson);
300✔
10910
    case QUERY_NODE_SHOW_INDEXES_STMT:
600✔
10911
      return showIndexesStmtToJson(pObj, pJson);
600✔
10912
    case QUERY_NODE_SHOW_STABLES_STMT:
1,200✔
10913
      return showStablesStmtToJson(pObj, pJson);
1,200✔
10914
    case QUERY_NODE_SHOW_STREAMS_STMT:
300✔
10915
      return showStreamsStmtToJson(pObj, pJson);
300✔
10916
    case QUERY_NODE_SHOW_TABLES_STMT:
1,200✔
10917
    case QUERY_NODE_SHOW_VTABLES_STMT:
10918
      return showTablesStmtToJson(pObj, pJson);
1,200✔
10919
    case QUERY_NODE_SHOW_TAGS_STMT:
300✔
10920
      return showTagsStmtToJson(pObj, pJson);
300✔
10921
    case QUERY_NODE_SHOW_USERS_STMT:
300✔
10922
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
10923
      return showUsersStmtToJson(pObj, pJson);
300✔
10924
    case QUERY_NODE_SHOW_ROLES_STMT:
×
10925
      return showRolesStmtToJson(pObj, pJson);
×
10926
    case QUERY_NODE_SHOW_VGROUPS_STMT:
600✔
10927
      return showVgroupsStmtToJson(pObj, pJson);
600✔
10928
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
300✔
10929
      return showConsumersStmtToJson(pObj, pJson);
300✔
10930
    case QUERY_NODE_SHOW_VARIABLES_STMT:
900✔
10931
      return showVariablesStmtToJson(pObj, pJson);
900✔
10932
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
10933
      return showGrantsFullStmtToJson(pObj, pJson);
×
10934
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
10935
      return showGrantsLogsStmtToJson(pObj, pJson);
×
10936
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
10937
      return showClusterMachinesStmtToJson(pObj, pJson);
×
10938
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
10939
      return showEncryptionsStmtToJson(pObj, pJson);
×
10940
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
600✔
10941
      return showDnodeVariablesStmtToJson(pObj, pJson);
600✔
10942
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
300✔
10943
      return showTransactionsStmtToJson(pObj, pJson);
300✔
10944
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
300✔
10945
      return showSubscriptionsStmtToJson(pObj, pJson);
300✔
10946
    case QUERY_NODE_SHOW_VNODES_STMT:
600✔
10947
      return showVnodesStmtToJson(pObj, pJson);
600✔
10948
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
300✔
10949
      return showUserPrivilegesStmtToJson(pObj, pJson);
300✔
10950
    case QUERY_NODE_SHOW_ROLE_PRIVILEGES_STMT:
×
10951
      return showRolePrivilegesStmtToJson(pObj, pJson);
×
10952
    case QUERY_NODE_SHOW_ROLE_COL_PRIVILEGES_STMT:
×
10953
      return showRolePrivilegesStmtToJson(pObj, pJson);
×
10954
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
900✔
10955
      return showCreateDatabaseStmtToJson(pObj, pJson);
900✔
10956
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
900✔
10957
    case QUERY_NODE_SHOW_CREATE_VTABLE_STMT:
10958
      return showCreateTableStmtToJson(pObj, pJson);
900✔
10959
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
900✔
10960
      return showCreateStableStmtToJson(pObj, pJson);
900✔
10961
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
10962
      return showCreateViewStmtToJson(pObj, pJson);
×
10963
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
300✔
10964
      return showTableDistributedStmtToJson(pObj, pJson);
300✔
10965
    case QUERY_NODE_SHOW_VALIDATE_VTABLE_STMT:
×
10966
      return showValidateVTableStmtToJson(pObj, pJson);
×
10967
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
900✔
10968
      return showLocalVariablesStmtToJson(pObj, pJson);
900✔
10969
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
900✔
10970
      return showTableTagsStmtToJson(pObj, pJson);
900✔
10971
    case QUERY_NODE_SHOW_USAGE_STMT:
×
10972
      return showUsageStmtStmtToJson(pObj, pJson);
×
10973
    case QUERY_NODE_SHOW_MOUNTS_STMT:
×
10974
      return showMountsStmtToJson(pObj, pJson);
×
10975
    case QUERY_NODE_SHOW_RSMAS_STMT:
×
10976
      return showRsmasStmtToJson(pObj, pJson);
×
10977
    case QUERY_NODE_SHOW_RETENTIONS_STMT:
×
10978
      return showRsmasStmtToJson(pObj, pJson);
×
10979
    case QUERY_NODE_SHOW_INSTANCES_STMT:
×
10980
      return showRsmasStmtToJson(pObj, pJson);
×
10981
    case QUERY_NODE_SHOW_RETENTION_DETAILS_STMT:
×
10982
      return showRsmasStmtToJson(pObj, pJson);
×
10983
    case QUERY_NODE_SHOW_ENCRYPT_ALGORITHMS_STMT:
×
10984
      return showStmtToJson(pObj, pJson);
×
10985
    case QUERY_NODE_SHOW_ENCRYPT_STATUS_STMT:
×
10986
      return showStmtToJson(pObj, pJson);
×
10987
    case QUERY_NODE_DELETE_STMT:
7,000✔
10988
      return deleteStmtToJson(pObj, pJson);
7,000✔
10989
    case QUERY_NODE_INSERT_STMT:
300✔
10990
      return insertStmtToJson(pObj, pJson);
300✔
10991
    case QUERY_NODE_LOGIC_PLAN_SCAN:
444,830✔
10992
      return logicScanNodeToJson(pObj, pJson);
444,830✔
10993
    case QUERY_NODE_LOGIC_PLAN_JOIN:
12,600✔
10994
      return logicJoinNodeToJson(pObj, pJson);
12,600✔
10995
    case QUERY_NODE_LOGIC_PLAN_VIRTUAL_TABLE_SCAN:
×
10996
      return logicVirtualTableScanNodeToJson(pObj, pJson);
×
10997
    case QUERY_NODE_LOGIC_PLAN_AGG:
119,900✔
10998
      return logicAggNodeToJson(pObj, pJson);
119,900✔
10999
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
295,058✔
11000
      return logicProjectNodeToJson(pObj, pJson);
295,058✔
11001
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
5,500✔
11002
      return logicVnodeModifyNodeToJson(pObj, pJson);
5,500✔
11003
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
30,900✔
11004
      return logicExchangeNodeToJson(pObj, pJson);
30,900✔
11005
    case QUERY_NODE_LOGIC_PLAN_MERGE:
12,200✔
11006
      return logicMergeNodeToJson(pObj, pJson);
12,200✔
11007
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
47,100✔
11008
      return logicWindowNodeToJson(pObj, pJson);
47,100✔
11009
    case QUERY_NODE_LOGIC_PLAN_FILL:
9,600✔
11010
      return logicFillNodeToJson(pObj, pJson);
9,600✔
11011
    case QUERY_NODE_LOGIC_PLAN_SORT:
37,700✔
11012
      return logicSortNodeToJson(pObj, pJson);
37,700✔
11013
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
21,300✔
11014
      return logicPartitionNodeToJson(pObj, pJson);
21,300✔
11015
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
11,600✔
11016
      return logicIndefRowsFuncNodeToJson(pObj, pJson);
11,600✔
11017
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
3,700✔
11018
      return logicInterpFuncNodeToJson(pObj, pJson);
3,700✔
11019
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
11020
      return logicForecastFuncNodeToJson(pObj, pJson);
×
11021
    case QUERY_NODE_LOGIC_PLAN_ANALYSIS_FUNC:
×
11022
      return logicImputationFuncNodeToJson(pObj, pJson);
×
11023
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
11024
      return logicGroupCacheNodeToJson(pObj, pJson);
×
11025
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
11026
      return logicDynQueryCtrlNodeToJson(pObj, pJson);
×
11027
    case QUERY_NODE_LOGIC_SUBPLAN:
455,730✔
11028
      return logicSubplanToJson(pObj, pJson);
455,730✔
11029
    case QUERY_NODE_LOGIC_PLAN:
28,400✔
11030
      return logicPlanToJson(pObj, pJson);
28,400✔
11031
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
16,069,904✔
11032
      return physiTagScanNodeToJson(pObj, pJson);
16,069,904✔
11033
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
7,116✔
11034
      return physiScanNodeToJson(pObj, pJson);
7,116✔
11035
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
1,445,934✔
11036
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
11037
      return physiLastRowScanNodeToJson(pObj, pJson);
1,445,934✔
11038
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
240,773,272✔
11039
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
11040
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
11041
      return physiTableScanNodeToJson(pObj, pJson);
240,773,272✔
11042
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
5,209,756✔
11043
      return physiVirtualTableScanNodeToJson(pObj, pJson);
5,209,756✔
11044
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
39,658,780✔
11045
      return physiSysTableScanNodeToJson(pObj, pJson);
39,658,780✔
11046
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
107,562,767✔
11047
      return physiProjectNodeToJson(pObj, pJson);
107,562,767✔
11048
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
15,603,491✔
11049
      return physiMergeJoinNodeToJson(pObj, pJson);
15,603,491✔
11050
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
2,134,065✔
11051
      return physiHashJoinNodeToJson(pObj, pJson);
2,134,065✔
11052
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
124,414,230✔
11053
      return physiAggNodeToJson(pObj, pJson);
124,414,230✔
11054
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
139,227,480✔
11055
      return physiExchangeNodeToJson(pObj, pJson);
139,227,480✔
11056
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
17,880,796✔
11057
      return physiMergeNodeToJson(pObj, pJson);
17,880,796✔
11058
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
40,253,148✔
11059
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
11060
      return physiSortNodeToJson(pObj, pJson);
40,253,148✔
11061
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
6,772,878✔
11062
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
11063
      return physiIntervalNodeToJson(pObj, pJson);
6,772,878✔
11064
    case QUERY_NODE_PHYSICAL_PLAN_EXTERNAL_WINDOW:
2,464,708✔
11065
    case QUERY_NODE_PHYSICAL_PLAN_HASH_EXTERNAL:
11066
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_EXTERNAL:
11067
      return physiExternalNodeToJson(pObj, pJson);
2,464,708✔
11068
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
663,180✔
11069
      return physiFillNodeToJson(pObj, pJson);
663,180✔
11070
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
655,956✔
11071
      return physiSessionWindowNodeToJson(pObj, pJson);
655,956✔
11072
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
1,415,810✔
11073
      return physiStateWindowNodeToJson(pObj, pJson);
1,415,810✔
11074
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
453,127✔
11075
      return physiEventWindowNodeToJson(pObj, pJson);
453,127✔
11076
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
350,413✔
11077
      return physiCountWindowNodeToJson(pObj, pJson);
350,413✔
11078
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
11079
      return physiAnomalyWindowNodeToJson(pObj, pJson);
×
11080
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
4,329,701✔
11081
      return physiPartitionNodeToJson(pObj, pJson);
4,329,701✔
11082
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
4,702,302✔
11083
      return physiIndefRowsFuncNodeToJson(pObj, pJson);
4,702,302✔
11084
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
4,113,217✔
11085
      return physiInterpFuncNodeToJson(pObj, pJson);
4,113,217✔
11086
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
11087
      return physiForecastFuncNodeToJson(pObj, pJson);
×
11088
    case QUERY_NODE_PHYSICAL_PLAN_ANALYSIS_FUNC:
×
11089
      return physiForecastFuncNodeToJson(pObj, pJson);
×
11090
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
373,078,318✔
11091
      return physiDispatchNodeToJson(pObj, pJson);
373,078,318✔
11092
    case QUERY_NODE_PHYSICAL_PLAN_INSERT:
587,415,225✔
11093
      break;
587,415,225✔
11094
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
566,779✔
11095
      return physiQueryInsertNodeToJson(pObj, pJson);
566,779✔
11096
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
1,993,220✔
11097
      return physiDeleteNodeToJson(pObj, pJson);
1,993,220✔
11098
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
2,133,169✔
11099
      return physiGroupCacheNodeToJson(pObj, pJson);
2,133,169✔
11100
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
7,420,482✔
11101
      return physiDynQueryCtrlNodeToJson(pObj, pJson);
7,420,482✔
11102
    case QUERY_NODE_PHYSICAL_SUBPLAN:
963,298,672✔
11103
      return subplanToJson(pObj, pJson);
963,298,672✔
11104
    case QUERY_NODE_PHYSICAL_PLAN:
700,208,139✔
11105
      return planToJson(pObj, pJson);
700,208,139✔
11106

11107
    case QUERY_NODE_CREATE_XNODE_STMT:
×
11108
      return createXnodeStmtToJson(pObj, pJson);
×
11109
    case QUERY_NODE_DROP_XNODE_STMT:
×
11110
      return dropXnodeStmtToJson(pObj, pJson);
×
11111
    case QUERY_NODE_ALTER_XNODE_STMT:
×
11112
      return alterXnodeStmtToJson(pObj, pJson);
×
11113
    case QUERY_NODE_CREATE_XNODE_TASK_STMT:
×
11114
      return createXnodeTaskStmtToJson(pObj, pJson);
×
11115
    case QUERY_NODE_DROP_XNODE_TASK_STMT:
×
11116
      return dropXnodeTaskStmtToJson(pObj, pJson);
×
11117
    case QUERY_NODE_CREATE_XNODE_JOB_STMT:
×
11118
      return createXnodeJobStmtToJson(pObj, pJson);
×
11119
    case QUERY_NODE_DROP_XNODE_JOB_STMT:
303✔
11120
      return dropXnodeJobStmtToJson(pObj, pJson);
303✔
11121
    default:
1,800✔
11122
      break;
1,800✔
11123
  }
11124
  nodesWarn("specificNodeToJson unknown node = %s", nodesNodeName(nodeType(pObj)));
587,417,025✔
11125
  return TSDB_CODE_SUCCESS;
587,424,024✔
11126
}
11127

11128
static int32_t jsonToSpecificNode(const SJson* pJson, void* pObj) {
236,937,216✔
11129
  switch (nodeType(pObj)) {
236,937,216✔
11130
    case QUERY_NODE_COLUMN:
45,367,013✔
11131
      return jsonToColumnNode(pJson, pObj);
45,367,013✔
11132
    case QUERY_NODE_VALUE:
14,578,051✔
11133
      return jsonToValueNode(pJson, pObj);
14,578,051✔
11134
    case QUERY_NODE_OPERATOR:
5,450,183✔
11135
      return jsonToOperatorNode(pJson, pObj);
5,450,183✔
11136
    case QUERY_NODE_LOGIC_CONDITION:
334,555✔
11137
      return jsonToLogicConditionNode(pJson, pObj);
334,555✔
11138
    case QUERY_NODE_FUNCTION:
14,346,340✔
11139
      return jsonToFunctionNode(pJson, pObj);
14,346,340✔
11140
    case QUERY_NODE_REAL_TABLE:
426,990✔
11141
      return jsonToRealTableNode(pJson, pObj);
426,990✔
11142
    case QUERY_NODE_TEMP_TABLE:
18,228✔
11143
      return jsonToTempTableNode(pJson, pObj);
18,228✔
11144
    case QUERY_NODE_JOIN_TABLE:
7,400✔
11145
      return jsonToJoinTableNode(pJson, pObj);
7,400✔
11146
    case QUERY_NODE_VIRTUAL_TABLE:
×
11147
      return jsonToVirtualTableNode(pJson, pObj);
×
11148
    case QUERY_NODE_PLACE_HOLDER_TABLE:
×
11149
      return jsonToPlaceHolderTableNode(pJson, pObj);
×
11150
    case QUERY_NODE_SLIDING_WINDOW:
×
11151
      return jsonToSlidingWindowNode(pJson, pObj);
×
11152
    case QUERY_NODE_PERIOD_WINDOW:
11,000✔
11153
      return jsonToPeriodWindowNode(pJson, pObj);
11,000✔
11154
    case QUERY_NODE_STREAM_TRIGGER:
91,100✔
11155
      return jsonToStreamTriggerNode(pJson, pObj);
91,100✔
11156
    case QUERY_NODE_STREAM:
×
11157
      return jsonToStreamNode(pJson, pObj);
×
11158
    case QUERY_NODE_STREAM_TAG_DEF:
17,000✔
11159
      return jsonToStreamTagDefNode(pJson, pObj);
17,000✔
11160
    case QUERY_NODE_EXTERNAL_WINDOW:
×
11161
      return jsonToExternalWindowNode(pJson, pObj);
×
11162
    case QUERY_NODE_GROUPING_SET:
40,800✔
11163
      return jsonToGroupingSetNode(pJson, pObj);
40,800✔
11164
    case QUERY_NODE_ORDER_BY_EXPR:
279,774✔
11165
      return jsonToOrderByExprNode(pJson, pObj);
279,774✔
11166
    case QUERY_NODE_LIMIT:
23,600✔
11167
      return jsonToLimitNode(pJson, pObj);
23,600✔
11168
    case QUERY_NODE_STATE_WINDOW:
25,300✔
11169
      return jsonToStateWindowNode(pJson, pObj);
25,300✔
11170
    case QUERY_NODE_SESSION_WINDOW:
3,700✔
11171
      return jsonToSessionWindowNode(pJson, pObj);
3,700✔
11172
    case QUERY_NODE_INTERVAL_WINDOW:
81,900✔
11173
      return jsonToIntervalWindowNode(pJson, pObj);
81,900✔
11174
    case QUERY_NODE_NODE_LIST:
1,279,424✔
11175
      return jsonToNodeListNode(pJson, pObj);
1,279,424✔
11176
    case QUERY_NODE_FILL:
3,800✔
11177
      return jsonToFillNode(pJson, pObj);
3,800✔
11178
    case QUERY_NODE_TARGET:
37,013,241✔
11179
      return jsonToTargetNode(pJson, pObj);
37,013,241✔
11180
    case QUERY_NODE_DATABLOCK_DESC:
16,121,970✔
11181
      return jsonToDataBlockDescNode(pJson, pObj);
16,121,970✔
11182
    case QUERY_NODE_SLOT_DESC:
69,841,565✔
11183
      return jsonToSlotDescNode(pJson, pObj);
69,841,565✔
11184
    case QUERY_NODE_COLUMN_DEF:
1,413,000✔
11185
      return jsonToColumnDefNode(pJson, pObj);
1,413,000✔
11186
    case QUERY_NODE_DOWNSTREAM_SOURCE:
2,599,769✔
11187
      return jsonToDownstreamSourceNode(pJson, pObj);
2,599,769✔
11188
    case QUERY_NODE_DATABASE_OPTIONS:
42,000✔
11189
      return jsonToDatabaseOptions(pJson, pObj);
42,000✔
11190
    case QUERY_NODE_TABLE_OPTIONS:
9,600✔
11191
      return jsonToTableOptions(pJson, pObj);
9,600✔
11192
    case QUERY_NODE_COLUMN_OPTIONS:
1,266,600✔
11193
      return jsonToColumnOptions(pJson, pObj);
1,266,600✔
11194
    case QUERY_NODE_INDEX_OPTIONS:
×
11195
      return jsonToIndexOptions(pJson, pObj);
×
11196
    case QUERY_NODE_EXPLAIN_OPTIONS:
3,000✔
11197
      return jsonToExplainOptions(pJson, pObj);
3,000✔
11198
    case QUERY_NODE_STREAM_TRIGGER_OPTIONS:
23,600✔
11199
      return jsonToStreamOptions(pJson, pObj);
23,600✔
11200
    case QUERY_NODE_LEFT_VALUE:
10,328✔
11201
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to deserialize.
10,328✔
11202
    case QUERY_NODE_COLUMN_REF:
×
11203
      return jsonToColumnReference(pJson, pObj);
×
11204
    case QUERY_NODE_WHEN_THEN:
43,037✔
11205
      return jsonToWhenThenNode(pJson, pObj);
43,037✔
11206
    case QUERY_NODE_CASE_WHEN:
41,437✔
11207
      return jsonToCaseWhenNode(pJson, pObj);
41,437✔
11208
    case QUERY_NODE_EVENT_WINDOW:
3,000✔
11209
      return jsonToEventWindowNode(pJson, pObj);
3,000✔
11210
    case QUERY_NODE_WINDOW_OFFSET:
×
11211
      return jsonToWindowOffsetNode(pJson, pObj);
×
11212
    case QUERY_NODE_COUNT_WINDOW:
4,600✔
11213
      return jsonToCountWindowNode(pJson, pObj);
4,600✔
11214
    case QUERY_NODE_ANOMALY_WINDOW:
×
11215
      return jsonToAnomalyWindowNode(pJson, pObj);
×
11216
    case QUERY_NODE_STREAM_NOTIFY_OPTIONS:
4,000✔
11217
      return jsonToStreamNotifyOptions(pJson, pObj);
4,000✔
11218
    case QUERY_NODE_REMOTE_VALUE:
96,020✔
11219
      return jsonToRemoteValue(pJson, pObj);
96,020✔
11220
    case QUERY_NODE_REMOTE_VALUE_LIST:
84,258✔
11221
      return jsonToRemoteValueList(pJson, pObj);
84,258✔
11222
    case QUERY_NODE_REMOTE_ROW:
7,134✔
11223
      return jsonToRemoteRow(pJson, pObj);
7,134✔
11224
    case QUERY_NODE_REMOTE_ZERO_ROWS:
2,920✔
11225
      return jsonToRemoteZeroRows(pJson, pObj);
2,920✔
11226
    case QUERY_NODE_REMOTE_TABLE:
×
11227
      return jsonToRemoteTable(pJson, pObj);
×
11228
    case QUERY_NODE_UPDATE_TAG_VALUE:
×
11229
      return jsonToUpdateTagValueNode(pJson, pObj);
×
11230
    case QUERY_NODE_ALTER_TABLE_UPDATE_TAG_VAL_CLAUSE:
×
11231
      return jsonToAlterTableUpdateTagValClause(pJson, pObj);
×
11232
    case QUERY_NODE_TRUE_FOR:
1,200✔
11233
      return jsonToTrueForNode(pJson, pObj);
1,200✔
11234
    case QUERY_NODE_SET_OPERATOR:
6,400✔
11235
      return jsonToSetOperator(pJson, pObj);
6,400✔
11236
    case QUERY_NODE_TIME_RANGE:
1,588,273✔
11237
      return jsonToTimeRangeNode(pJson, pObj);
1,588,273✔
11238
    case QUERY_NODE_SELECT_STMT:
346,818✔
11239
      return jsonToSelectStmt(pJson, pObj);
346,818✔
11240
    case QUERY_NODE_VNODE_MODIFY_STMT:
12,000✔
11241
      return jsonToVnodeModifyStmt(pJson, pObj);
12,000✔
11242
    case QUERY_NODE_CREATE_DATABASE_STMT:
5,400✔
11243
      return jsonToCreateDatabaseStmt(pJson, pObj);
5,400✔
11244
    case QUERY_NODE_ALTER_DATABASE_STMT:
36,600✔
11245
      return jsonToAlterDatabaseStmt(pJson, pObj);
36,600✔
11246
    case QUERY_NODE_TRIM_DATABASE_STMT:
1,800✔
11247
      return jsonToTrimDatabaseStmt(pJson, pObj);
1,800✔
11248
    case QUERY_NODE_SSMIGRATE_DATABASE_STMT:
×
11249
      return jsonToSsMigrateDatabaseStmt(pJson, pObj);
×
11250
    case QUERY_NODE_CREATE_TABLE_STMT:
4,500✔
11251
      return jsonToCreateTableStmt(pJson, pObj);
4,500✔
11252
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
1,500✔
11253
      return jsonToCreateSubTableClause(pJson, pObj);
1,500✔
11254
    case QUERY_NODE_CREATE_VIRTUAL_TABLE_STMT:
×
11255
      return jsonToCreateVTableStmt(pJson, pObj);
×
11256
    case QUERY_NODE_CREATE_VIRTUAL_SUBTABLE_STMT:
×
11257
      return jsonToCreateVSubTableStmt(pJson, pObj);
×
11258
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
900✔
11259
      return jsonToCreateMultiTablesStmt(pJson, pObj);
900✔
11260
    case QUERY_NODE_DROP_TABLE_CLAUSE:
1,200✔
11261
      return jsonToDropTableClause(pJson, pObj);
1,200✔
11262
    case QUERY_NODE_DROP_TABLE_STMT:
600✔
11263
      return jsonToDropTableStmt(pJson, pObj);
600✔
11264
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
900✔
11265
      return jsonToDropStableStmt(pJson, pObj);
900✔
11266
    case QUERY_NODE_DROP_VIRTUAL_TABLE_STMT:
×
11267
      return jsonToDropVtableStmt(pJson, pObj);
×
11268
    case QUERY_NODE_ALTER_TABLE_STMT:
7,500✔
11269
      return jsonToAlterTableStmt(pJson, pObj);
7,500✔
11270
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
8,700✔
11271
      return jsonToAlterStableStmt(pJson, pObj);
8,700✔
11272
    case QUERY_NODE_CREATE_USER_STMT:
1,800✔
11273
      return jsonToCreateUserStmt(pJson, pObj);
1,800✔
11274
    case QUERY_NODE_CREATE_ENCRYPT_ALGORITHMS_STMT:
×
11275
      return jsonToCreateEncryptAlgrStmt(pJson, pObj);
×
11276
    case QUERY_NODE_DROP_ENCRYPT_ALGR_STMT:
×
11277
      return jsonToDropEncryptAlgrStmt(pJson, pObj);
×
11278
    case QUERY_NODE_ALTER_USER_STMT:
×
11279
      return jsonToAlterUserStmt(pJson, pObj);
×
11280
    case QUERY_NODE_DROP_USER_STMT:
900✔
11281
      return jsonToDropUserStmt(pJson, pObj);
900✔
11282
    case QUERY_NODE_CREATE_ROLE_STMT:
×
11283
      return jsonToCreateRoleStmt(pJson, pObj);
×
11284
    case QUERY_NODE_DROP_ROLE_STMT:
×
11285
      return jsonToDropRoleStmt(pJson, pObj);
×
11286
    case QUERY_NODE_ALTER_ROLE_STMT:
×
11287
      return jsonToAlterRoleStmt(pJson, pObj);
×
11288
    case QUERY_NODE_USE_DATABASE_STMT:
900✔
11289
      return jsonToUseDatabaseStmt(pJson, pObj);
900✔
11290
    case QUERY_NODE_CREATE_DNODE_STMT:
5,400✔
11291
      return jsonToCreateDnodeStmt(pJson, pObj);
5,400✔
11292
    case QUERY_NODE_DROP_DNODE_STMT:
8,100✔
11293
      return jsonToDropDnodeStmt(pJson, pObj);
8,100✔
11294
    case QUERY_NODE_ALTER_DNODE_STMT:
3,600✔
11295
      return jsonToAlterDnodeStmt(pJson, pObj);
3,600✔
11296
    case QUERY_NODE_ALTER_DNODES_RELOAD_TLS_STMT:
×
11297
      return jsonToAlterDnodeStmt(pJson, pObj);
×
11298
    case QUERY_NODE_ALTER_ENCRYPT_KEY_STMT:
×
11299
      return jsonToAlterEncryptKeyStmt(pJson, pObj);
×
11300
    case QUERY_NODE_ALTER_KEY_EXPIRATION_STMT:
×
11301
      return jsonToAlterKeyExpirationStmt(pJson, pObj);
×
11302
    case QUERY_NODE_CREATE_INDEX_STMT:
×
11303
      return jsonToCreateIndexStmt(pJson, pObj);
×
11304
    case QUERY_NODE_DROP_INDEX_STMT:
1,800✔
11305
      return jsonToDropIndexStmt(pJson, pObj);
1,800✔
11306
    case QUERY_NODE_CREATE_QNODE_STMT:
900✔
11307
      return jsonToCreateQnodeStmt(pJson, pObj);
900✔
11308
    case QUERY_NODE_DROP_QNODE_STMT:
900✔
11309
      return jsonToDropQnodeStmt(pJson, pObj);
900✔
11310
    case QUERY_NODE_CREATE_SNODE_STMT:
900✔
11311
      return jsonToCreateSnodeStmt(pJson, pObj);
900✔
11312
    case QUERY_NODE_DROP_SNODE_STMT:
900✔
11313
      return jsonToDropSnodeStmt(pJson, pObj);
900✔
11314
    case QUERY_NODE_CREATE_MNODE_STMT:
900✔
11315
      return jsonToCreateMnodeStmt(pJson, pObj);
900✔
11316
    case QUERY_NODE_DROP_MNODE_STMT:
900✔
11317
      return jsonToDropMnodeStmt(pJson, pObj);
900✔
11318
    case QUERY_NODE_CREATE_TOPIC_STMT:
7,300✔
11319
      return jsonToCreateTopicStmt(pJson, pObj);
7,300✔
11320
    case QUERY_NODE_DROP_TOPIC_STMT:
1,800✔
11321
      return jsonToDropTopicStmt(pJson, pObj);
1,800✔
11322
    case QUERY_NODE_DROP_CGROUP_STMT:
1,800✔
11323
      return jsonToDropConsumerGroupStmt(pJson, pObj);
1,800✔
11324
    case QUERY_NODE_ALTER_LOCAL_STMT:
1,800✔
11325
      return jsonToAlterLocalStmt(pJson, pObj);
1,800✔
11326
    case QUERY_NODE_EXPLAIN_STMT:
3,000✔
11327
      return jsonToExplainStmt(pJson, pObj);
3,000✔
11328
    case QUERY_NODE_DESCRIBE_STMT:
1,800✔
11329
      return jsonToDescribeStmt(pJson, pObj);
1,800✔
11330
    case QUERY_NODE_COMPACT_DATABASE_STMT:
3,600✔
11331
      return jsonToCompactDatabaseStmt(pJson, pObj);
3,600✔
11332
    case QUERY_NODE_ROLLUP_DATABASE_STMT:
×
11333
      return jsonToRollupDatabaseStmt(pJson, pObj);
×
11334
    case QUERY_NODE_SCAN_DATABASE_STMT:
×
11335
      return jsonToScanDatabaseStmt(pJson, pObj);
×
11336
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
×
11337
      return jsonToCompactVgroupsStmt(pJson, pObj);
×
11338
    case QUERY_NODE_ROLLUP_VGROUPS_STMT:
×
11339
      return jsonToRollupVgroupsStmt(pJson, pObj);
×
11340
    case QUERY_NODE_SCAN_VGROUPS_STMT:
×
11341
      return jsonToScanVgroupsStmt(pJson, pObj);
×
11342
    case QUERY_NODE_CREATE_STREAM_STMT:
91,100✔
11343
      return jsonToCreateStreamStmt(pJson, pObj);
91,100✔
11344
    case QUERY_NODE_DROP_STREAM_STMT:
×
11345
      return jsonToDropStreamStmt(pJson, pObj);
×
11346
    case QUERY_NODE_BALANCE_VGROUP_STMT:
900✔
11347
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to deserialize.
900✔
11348
    case QUERY_NODE_ASSIGN_LEADER_STMT:
×
11349
      return TSDB_CODE_SUCCESS;
×
11350
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
900✔
11351
      return TSDB_CODE_SUCCESS;
900✔
11352
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
11353
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupLeaderStmt has no fields to deserialize.
×
11354
    case QUERY_NODE_SET_VGROUP_KEEP_VERSION_STMT:
×
11355
      return TSDB_CODE_SUCCESS;  // SSetVgroupKeepVersionStmt has simple fields, no need to deserialize.
×
11356
    case QUERY_NODE_TRIM_DATABASE_WAL_STMT:
×
11357
      return TSDB_CODE_SUCCESS;  // STrimDbWalStmt has simple fields, no need to deserialize.
×
11358
    case QUERY_NODE_MERGE_VGROUP_STMT:
×
11359
      return jsonToMergeVgroupStmt(pJson, pObj);
×
11360
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
×
11361
      return jsonToRedistributeVgroupStmt(pJson, pObj);
×
11362
    case QUERY_NODE_SPLIT_VGROUP_STMT:
900✔
11363
      return jsonToSplitVgroupStmt(pJson, pObj);
900✔
11364
    case QUERY_NODE_GRANT_STMT:
×
11365
      return jsonToGrantStmt(pJson, pObj);
×
11366
    case QUERY_NODE_REVOKE_STMT:
×
11367
      return jsonToRevokeStmt(pJson, pObj);
×
11368
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
11369
      return jsonToAlterClusterStmt(pJson, pObj);
×
11370
    case QUERY_NODE_SHOW_DNODES_STMT:
300✔
11371
      return jsonToShowDnodesStmt(pJson, pObj);
300✔
11372
    case QUERY_NODE_SHOW_MNODES_STMT:
300✔
11373
      return jsonToShowMnodesStmt(pJson, pObj);
300✔
11374
    case QUERY_NODE_SHOW_QNODES_STMT:
300✔
11375
      return jsonToShowQnodesStmt(pJson, pObj);
300✔
11376
    case QUERY_NODE_SHOW_ANODES_STMT:
×
11377
      return jsonToShowAnodesStmt(pJson, pObj);
×
11378
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
11379
      return jsonToShowAnodesFullStmt(pJson, pObj);
×
11380
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
11381
      return jsonToShowArbGroupsStmt(pJson, pObj);
×
11382
    case QUERY_NODE_SHOW_CLUSTER_STMT:
300✔
11383
      return jsonToShowClusterStmt(pJson, pObj);
300✔
11384
    case QUERY_NODE_SHOW_SECURITY_POLICIES_STMT:
×
11385
      return jsonToShowStmt(pJson, pObj);
×
11386
    case QUERY_NODE_SHOW_DATABASES_STMT:
300✔
11387
      return jsonToShowDatabasesStmt(pJson, pObj);
300✔
11388
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
300✔
11389
      return jsonToShowFunctionsStmt(pJson, pObj);
300✔
11390
    case QUERY_NODE_SHOW_INDEXES_STMT:
600✔
11391
      return jsonToShowIndexesStmt(pJson, pObj);
600✔
11392
    case QUERY_NODE_SHOW_STABLES_STMT:
1,200✔
11393
      return jsonToShowStablesStmt(pJson, pObj);
1,200✔
11394
    case QUERY_NODE_SHOW_STREAMS_STMT:
300✔
11395
      return jsonToShowStreamsStmt(pJson, pObj);
300✔
11396
    case QUERY_NODE_SHOW_TABLES_STMT:
1,200✔
11397
    case QUERY_NODE_SHOW_VTABLES_STMT:
11398
      return jsonToShowTablesStmt(pJson, pObj);
1,200✔
11399
    case QUERY_NODE_SHOW_TAGS_STMT:
300✔
11400
      return jsonToShowTagsStmt(pJson, pObj);
300✔
11401
    case QUERY_NODE_SHOW_USERS_STMT:
300✔
11402
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
11403
      return jsonToShowUsersStmt(pJson, pObj);
300✔
11404
    case QUERY_NODE_SHOW_ROLES_STMT:
×
11405
      return jsonToShowRolesStmt(pJson, pObj);
×
11406
    case QUERY_NODE_SHOW_VGROUPS_STMT:
600✔
11407
      return jsonToShowVgroupsStmt(pJson, pObj);
600✔
11408
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
300✔
11409
      return jsonToShowConsumersStmt(pJson, pObj);
300✔
11410
    case QUERY_NODE_SHOW_VARIABLES_STMT:
900✔
11411
      return jsonToShowVariablesStmt(pJson, pObj);
900✔
11412
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
11413
      return jsonToShowGrantsFullStmt(pJson, pObj);
×
11414
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
11415
      return jsonToShowGrantsLogsStmt(pJson, pObj);
×
11416
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
11417
      return jsonToShowClusterMachinesStmt(pJson, pObj);
×
11418
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
11419
      return jsonToShowEncryptionsStmt(pJson, pObj);
×
11420
    case QUERY_NODE_SHOW_ENCRYPT_ALGORITHMS_STMT:
×
11421
      return jsonToShowStmt(pJson, pObj);
×
11422
    case QUERY_NODE_SHOW_ENCRYPT_STATUS_STMT:
×
11423
      return jsonToShowStmt(pJson, pObj);
×
11424
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
600✔
11425
      return jsonToShowDnodeVariablesStmt(pJson, pObj);
600✔
11426
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
300✔
11427
      return jsonToShowTransactionsStmt(pJson, pObj);
300✔
11428
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
300✔
11429
      return jsonToShowSubscriptionsStmt(pJson, pObj);
300✔
11430
    case QUERY_NODE_SHOW_VNODES_STMT:
600✔
11431
      return jsonToShowVnodesStmt(pJson, pObj);
600✔
11432
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
300✔
11433
      return jsonToShowUserPrivilegesStmt(pJson, pObj);
300✔
11434
    case QUERY_NODE_SHOW_ROLE_PRIVILEGES_STMT:
×
11435
      return jsonToShowRolePrivilegesStmt(pJson, pObj);
×
11436
    case QUERY_NODE_SHOW_ROLE_COL_PRIVILEGES_STMT:
×
11437
      return jsonToShowRolePrivilegesStmt(pJson, pObj);
×
11438
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
900✔
11439
      return jsonToShowCreateDatabaseStmt(pJson, pObj);
900✔
11440
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
900✔
11441
    case QUERY_NODE_SHOW_CREATE_VTABLE_STMT:
11442
      return jsonToShowCreateTableStmt(pJson, pObj);
900✔
11443
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
900✔
11444
      return jsonToShowCreateStableStmt(pJson, pObj);
900✔
11445
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
11446
      return jsonToShowCreateViewStmt(pJson, pObj);
×
11447
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
300✔
11448
      return jsonToShowTableDistributedStmt(pJson, pObj);
300✔
11449
    case QUERY_NODE_SHOW_VALIDATE_VTABLE_STMT:
×
11450
      return jsonToShowValidateVirtualTableStmt(pJson, pObj);
×
11451
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
900✔
11452
      return jsonToShowLocalVariablesStmt(pJson, pObj);
900✔
11453
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
900✔
11454
      return jsonToShowTableTagsStmt(pJson, pObj);
900✔
11455
    case QUERY_NODE_SHOW_USAGE_STMT:
×
11456
      return jsonToShowUsageStmt(pJson, pObj);
×
11457
    case QUERY_NODE_SHOW_MOUNTS_STMT:
×
11458
      return jsonToShowMountsStmt(pJson, pObj);
×
11459
    case QUERY_NODE_SHOW_RSMAS_STMT:
×
11460
      return jsonToShowRsmasStmt(pJson, pObj);
×
11461
    case QUERY_NODE_SHOW_RETENTIONS_STMT:
×
11462
      return jsonToShowRsmasStmt(pJson, pObj);
×
11463
    case QUERY_NODE_SHOW_INSTANCES_STMT:
×
11464
      return jsonToShowRsmasStmt(pJson, pObj);
×
11465
    case QUERY_NODE_SHOW_RETENTION_DETAILS_STMT:
×
11466
      return jsonToShowRsmasStmt(pJson, pObj);
×
11467
    case QUERY_NODE_DELETE_STMT:
7,000✔
11468
      return jsonToDeleteStmt(pJson, pObj);
7,000✔
11469
    case QUERY_NODE_INSERT_STMT:
300✔
11470
      return jsonToInsertStmt(pJson, pObj);
300✔
11471
    case QUERY_NODE_RESTORE_DNODE_STMT:
×
11472
      return jsonToRestoreDnodeStmt(pJson, pObj);
×
11473
    case QUERY_NODE_RESTORE_QNODE_STMT:
×
11474
      return jsonToRestoreQnodeStmt(pJson, pObj);
×
11475
    case QUERY_NODE_RESTORE_MNODE_STMT:
×
11476
      return jsonToRestoreMnodeStmt(pJson, pObj);
×
11477
    case QUERY_NODE_RESTORE_VNODE_STMT:
×
11478
      return jsonToRestoreVnodeStmt(pJson, pObj);
×
11479
    case QUERY_NODE_LOGIC_PLAN_SCAN:
137,000✔
11480
      return jsonToLogicScanNode(pJson, pObj);
137,000✔
11481
    case QUERY_NODE_LOGIC_PLAN_JOIN:
4,400✔
11482
      return jsonToLogicJoinNode(pJson, pObj);
4,400✔
11483
    case QUERY_NODE_LOGIC_PLAN_VIRTUAL_TABLE_SCAN:
×
11484
      return jsonToLogicVirtualTableScanNode(pJson, pObj);
×
11485
    case QUERY_NODE_LOGIC_PLAN_AGG:
54,600✔
11486
      return jsonToLogicAggNode(pJson, pObj);
54,600✔
11487
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
73,600✔
11488
      return jsonToLogicProjectNode(pJson, pObj);
73,600✔
11489
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
2,800✔
11490
      return jsonToLogicVnodeModifyNode(pJson, pObj);
2,800✔
11491
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
19,600✔
11492
      return jsonToLogicExchangeNode(pJson, pObj);
19,600✔
11493
    case QUERY_NODE_LOGIC_PLAN_MERGE:
7,500✔
11494
      return jsonToLogicMergeNode(pJson, pObj);
7,500✔
11495
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
22,500✔
11496
      return jsonToLogicWindowNode(pJson, pObj);
22,500✔
11497
    case QUERY_NODE_LOGIC_PLAN_FILL:
4,100✔
11498
      return jsonToLogicFillNode(pJson, pObj);
4,100✔
11499
    case QUERY_NODE_LOGIC_PLAN_SORT:
15,200✔
11500
      return jsonToLogicSortNode(pJson, pObj);
15,200✔
11501
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
8,400✔
11502
      return jsonToLogicPartitionNode(pJson, pObj);
8,400✔
11503
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
5,700✔
11504
      return jsonToLogicIndefRowsFuncNode(pJson, pObj);
5,700✔
11505
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
1,600✔
11506
      return jsonToLogicInterpFuncNode(pJson, pObj);
1,600✔
11507
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
11508
      return jsonToLogicImputationFuncNode(pJson, pObj);
×
11509
    case QUERY_NODE_LOGIC_PLAN_ANALYSIS_FUNC:
×
11510
      return jsonToLogicForecastFuncNode(pJson, pObj);
×
11511
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
11512
      return jsonToLogicGroupCacheNode(pJson, pObj);
×
11513
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
11514
      return jsonToLogicDynQueryCtrlNode(pJson, pObj);
×
11515
    case QUERY_NODE_LOGIC_SUBPLAN:
155,300✔
11516
      return jsonToLogicSubplan(pJson, pObj);
155,300✔
11517
    case QUERY_NODE_LOGIC_PLAN:
28,400✔
11518
      return jsonToLogicPlan(pJson, pObj);
28,400✔
11519
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
10,501✔
11520
      return jsonToPhysiTagScanNode(pJson, pObj);
10,501✔
11521
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
4,700✔
11522
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
11523
      return jsonToPhysiScanNode(pJson, pObj);
4,700✔
11524
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
2,300✔
11525
      return jsonToPhysiLastRowScanNode(pJson, pObj);
2,300✔
11526
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
2,650,740✔
11527
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
11528
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
11529
      return jsonToPhysiTableScanNode(pJson, pObj);
2,650,740✔
11530
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
213,821✔
11531
      return jsonToPhysiVirtualTableScanNode(pJson, pObj);
213,821✔
11532
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
1,253,278✔
11533
      return jsonToPhysiSysTableScanNode(pJson, pObj);
1,253,278✔
11534
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
2,046,468✔
11535
      return jsonToPhysiProjectNode(pJson, pObj);
2,046,468✔
11536
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
13,011✔
11537
      return jsonToPhysiMergeJoinNode(pJson, pObj);
13,011✔
11538
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
1,565✔
11539
      return jsonToPhysiHashJoinNode(pJson, pObj);
1,565✔
11540
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
876,737✔
11541
      return jsonToPhysiAggNode(pJson, pObj);
876,737✔
11542
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
2,296,080✔
11543
      return jsonToPhysiExchangeNode(pJson, pObj);
2,296,080✔
11544
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
69,837✔
11545
      return jsonToPhysiMergeNode(pJson, pObj);
69,837✔
11546
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
157,392✔
11547
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
11548
      return jsonToPhysiSortNode(pJson, pObj);
157,392✔
11549
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
27,618✔
11550
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
11551
      return jsonToPhysiIntervalNode(pJson, pObj);
27,618✔
11552
    case QUERY_NODE_PHYSICAL_PLAN_EXTERNAL_WINDOW:
666,690✔
11553
    case QUERY_NODE_PHYSICAL_PLAN_HASH_EXTERNAL:
11554
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_EXTERNAL:
11555
      return jsonToPhysiExternalNode(pJson, pObj);
666,690✔
11556
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
11,838✔
11557
      return jsonToPhysiFillNode(pJson, pObj);
11,838✔
11558
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
4,290✔
11559
      return jsonToPhysiSessionWindowNode(pJson, pObj);
4,290✔
11560
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
35,255✔
11561
      return jsonToPhysiStateWindowNode(pJson, pObj);
35,255✔
11562
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
3,490✔
11563
      return jsonToPhysiEventWindowNode(pJson, pObj);
3,490✔
11564
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
3,090✔
11565
      return jsonToPhysiCountWindowNode(pJson, pObj);
3,090✔
11566
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
11567
      return jsonToPhysiAnomalyWindowNode(pJson, pObj);
×
11568
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
4,200✔
11569
      return jsonToPhysiPartitionNode(pJson, pObj);
4,200✔
11570
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
4,515✔
11571
      return jsonToPhysiIndefRowsFuncNode(pJson, pObj);
4,515✔
11572
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
96,255✔
11573
      return jsonToPhysiInterpFuncNode(pJson, pObj);
96,255✔
11574
    case QUERY_NODE_PHYSICAL_PLAN_ANALYSIS_FUNC:
×
11575
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
11576
      return jsonToPhysiForecastFuncNode(pJson, pObj);
×
11577
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
5,449,201✔
11578
      return jsonToPhysiDispatchNode(pJson, pObj);
5,449,201✔
11579
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
600✔
11580
      return jsonToPhysiQueryInsertNode(pJson, pObj);
600✔
11581
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
1,200✔
11582
      return jsonToPhysiDeleteNode(pJson, pObj);
1,200✔
11583
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
1,565✔
11584
      return jsonToPhysiGroupCacheNode(pJson, pObj);
1,565✔
11585
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
215,386✔
11586
      return jsonToPhysiDynQueryCtrlNode(pJson, pObj);
215,386✔
11587
    case QUERY_NODE_PHYSICAL_SUBPLAN:
5,859,792✔
11588
      return jsonToSubplan(pJson, pObj);
5,859,792✔
11589
    case QUERY_NODE_PHYSICAL_PLAN:
1,218,674✔
11590
      return jsonToPlan(pJson, pObj);
1,218,674✔
11591
    case QUERY_NODE_SHOW_XNODES_STMT:
×
11592
      return jsonToShowXnodesStmt(pJson, pObj);
×
11593
    case QUERY_NODE_SHOW_XNODE_TASKS_STMT:
×
11594
      return jsonToShowXnodesStmt(pJson, pObj);
×
11595
    case QUERY_NODE_SHOW_XNODE_AGENTS_STMT:
×
11596
      return jsonToShowXnodesStmt(pJson, pObj);
×
11597
    case QUERY_NODE_SHOW_XNODE_JOBS_STMT:
×
11598
      return jsonToShowXnodesStmt(pJson, pObj);
×
11599
    case QUERY_NODE_CREATE_XNODE_JOB_STMT:
×
11600
      return jsonToCreateXnodeJobStmt(pJson, pObj);
×
11601
    case QUERY_NODE_DROP_XNODE_JOB_STMT:
×
11602
      return jsonToDropXnodeJobStmt(pJson, pObj);
×
11603
    default:
1,800✔
11604
      break;
1,800✔
11605
  }
11606
  nodesWarn("jsonToSpecificNode unknown node = %s", nodesNodeName(nodeType(pObj)));
1,800✔
11607
  return TSDB_CODE_SUCCESS;
1,800✔
11608
}
11609

11610
static const char* jkNodeType = "NodeType";
11611
static const char* jkNodeName = "Name";
11612

11613
static int32_t nodeToJson(const void* pObj, SJson* pJson) {
2,147,483,647✔
11614
  const SNode* pNode = (const SNode*)pObj;
2,147,483,647✔
11615

11616
  int32_t code = tjsonAddIntegerToObject(pJson, jkNodeType, pNode->type);
2,147,483,647✔
11617
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
11618
    code = tjsonAddStringToObject(pJson, jkNodeName, nodesNodeName(pNode->type));
2,147,483,647✔
11619
  }
11620
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
11621
    code = tjsonAddObject(pJson, nodesNodeName(pNode->type), specificNodeToJson, pNode);
2,147,483,647✔
11622
    if (TSDB_CODE_SUCCESS != code) {
2,147,483,647✔
11623
      nodesError("%s ToJson error", nodesNodeName(pNode->type));
×
11624
    }
11625
  }
11626

11627
  return code;
2,147,483,647✔
11628
}
11629

11630
static int32_t jsonToNode(const SJson* pJson, void* pObj) {
236,936,463✔
11631
  SNode* pNode = (SNode*)pObj;
236,936,463✔
11632

11633
  int32_t code;
11634
  tjsonGetNumberValue(pJson, jkNodeType, pNode->type, code);
236,936,463✔
11635
  if (TSDB_CODE_SUCCESS == code) {
236,940,749✔
11636
    code = tjsonToObject(pJson, nodesNodeName(pNode->type), jsonToSpecificNode, pNode);
236,941,151✔
11637
    if (TSDB_CODE_SUCCESS != code) {
236,926,244✔
11638
      nodesError("%s toNode error", nodesNodeName(pNode->type));
×
11639
    }
11640
  }
11641

11642
  return code;
236,926,840✔
11643
}
11644

11645
static int32_t makeNodeByJson(const SJson* pJson, SNode** pNode) {
236,931,345✔
11646
  int32_t val = 0;
236,931,345✔
11647
  int32_t code = tjsonGetIntValue(pJson, jkNodeType, &val);
236,939,322✔
11648
  if (TSDB_CODE_SUCCESS == code) {
236,933,688✔
11649
    code = nodesMakeNode(val, pNode);
236,933,688✔
11650
    if (NULL == *pNode) {
236,924,528✔
11651
      return code;
×
11652
    }
11653
    code = jsonToNode(pJson, *pNode);
236,927,699✔
11654
  }
11655

11656
  return code;
236,926,648✔
11657
}
11658

11659
static int32_t jsonToNodeObject(const SJson* pJson, const char* pName, SNode** pNode) {
145,852,921✔
11660
  SJson* pJsonNode = tjsonGetObjectItem(pJson, pName);
145,852,921✔
11661
  if (NULL == pJsonNode) {
145,860,248✔
11662
    return TSDB_CODE_SUCCESS;
59,524,689✔
11663
  }
11664
  return makeNodeByJson(pJsonNode, pNode);
86,335,559✔
11665
}
11666

11667
int32_t nodesNodeToString(const SNode* pNode, bool format, char** pStr, int32_t* pLen) {
704,020,617✔
11668
  if (NULL == pNode || NULL == pStr) {
704,020,617✔
11669
    terrno = TSDB_CODE_FAILED;
×
11670
    return TSDB_CODE_FAILED;
×
11671
  }
11672

11673
  SJson* pJson = tjsonCreateObject();
704,024,540✔
11674
  if (NULL == pJson) {
704,024,448✔
11675
    return terrno;
×
11676
  }
11677

11678
  int32_t code = nodeToJson(pNode, pJson);
704,024,448✔
11679
  if (TSDB_CODE_SUCCESS != code) {
704,029,988✔
11680
    terrno = code;
318✔
11681
    return code;
×
11682
  }
11683

11684
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
704,029,670✔
11685
  tjsonDelete(pJson);
704,029,057✔
11686

11687
  if (NULL != pLen) {
704,027,439✔
11688
    *pLen = strlen(*pStr) + 1;
678,740✔
11689
  }
11690

11691
  return TSDB_CODE_SUCCESS;
704,027,439✔
11692
}
11693

11694
int32_t nodesStringToNode(const char* pStr, SNode** pNode) {
7,965,202✔
11695
  if (NULL == pStr || NULL == pNode) {
7,965,202✔
11696
    return TSDB_CODE_SUCCESS;
976,325✔
11697
  }
11698
  SJson* pJson = tjsonParse(pStr);
6,988,877✔
11699
  if (NULL == pJson) {
6,989,279✔
11700
    return TSDB_CODE_FAILED;
×
11701
  }
11702
  int32_t code = makeNodeByJson(pJson, pNode);
6,989,279✔
11703
  tjsonDelete(pJson);
6,989,119✔
11704
  if (TSDB_CODE_SUCCESS != code) {
6,989,279✔
11705
    nodesDestroyNode(*pNode);
×
11706
    *pNode = NULL;
×
11707
    terrno = code;
×
11708
    return code;
×
11709
  }
11710
  return TSDB_CODE_SUCCESS;
6,989,279✔
11711
}
11712

11713
int32_t nodesListToString(const SNodeList* pList, bool format, char** pStr, int32_t* pLen) {
1,323,838✔
11714
  if (NULL == pList || NULL == pStr || NULL == pLen) {
1,323,838✔
11715
    terrno = TSDB_CODE_FAILED;
×
11716
    return TSDB_CODE_FAILED;
×
11717
  }
11718

11719
  if (0 == LIST_LENGTH(pList)) {
1,323,838✔
11720
    return TSDB_CODE_SUCCESS;
392,510✔
11721
  }
11722

11723
  SJson* pJson = tjsonCreateArray();
931,328✔
11724
  if (NULL == pJson) {
931,328✔
11725
    return terrno;
×
11726
  }
11727

11728
  SNode* pNode;
11729
  FOREACH(pNode, pList) {
2,408,301✔
11730
    int32_t code = tjsonAddItem(pJson, nodeToJson, pNode);
1,476,973✔
11731
    if (TSDB_CODE_SUCCESS != code) {
1,476,973✔
11732
      terrno = code;
×
11733
      return code;
×
11734
    }
11735
  }
11736

11737
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
931,328✔
11738
  tjsonDelete(pJson);
931,328✔
11739

11740
  *pLen = strlen(*pStr) + 1;
931,328✔
11741
  return TSDB_CODE_SUCCESS;
931,328✔
11742
}
11743

11744
/*
11745
 * Deserialize a JSON string into a SNodeList.
11746
 *
11747
 * Accepts two formats for backward compatibility:
11748
 *   - JSON array  : the current format, decoded via jsonToNodeListImpl.
11749
 *   - JSON object : the V1 legacy format that stored a single node
11750
 *                   directly; decoded as one-element list.
11751
 */
11752
int32_t nodesStringToList(const char* pStr, SNodeList** pList) {
1,595,872✔
11753
  if (NULL == pStr || NULL == pList) {
1,595,872✔
11754
    return TSDB_CODE_SUCCESS;
828,854✔
11755
  }
11756
  SJson* pJson = tjsonParse(pStr);
767,018✔
11757
  if (NULL == pJson) {
767,018✔
11758
    return TSDB_CODE_FAILED;
×
11759
  }
11760
  int32_t code = TSDB_CODE_SUCCESS;
767,018✔
11761
  if (tjsonIsArray(pJson)) {
767,018✔
11762
    code = jsonToNodeListImpl(pJson, pList);
767,018✔
11763
  } else {
11764
    /* V1 compat: old format stores single node JSON */
11765
    SNode *pNode = NULL;
×
11766
    code = makeNodeByJson(pJson, &pNode);
×
11767
    if (TSDB_CODE_SUCCESS == code && pNode != NULL) {
×
11768
      code = nodesListMakeStrictAppend(pList, pNode);
×
11769
    }
11770
  }
11771
  tjsonDelete(pJson);
767,018✔
11772
  if (TSDB_CODE_SUCCESS != code) {
767,018✔
11773
    nodesDestroyList(*pList);
×
11774
    *pList = NULL;
×
11775
    terrno = code;
×
11776
    return code;
×
11777
  }
11778
  return TSDB_CODE_SUCCESS;
767,018✔
11779
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc