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

taosdata / TDengine / #4720

08 Sep 2025 08:43AM UTC coverage: 58.139% (-0.6%) from 58.762%
#4720

push

travis-ci

web-flow
Merge pull request #32881 from taosdata/enh/add-new-windows-ci

fix(ci): update workflow reference to use new Windows CI YAML

133181 of 292179 branches covered (45.58%)

Branch coverage included in aggregate %.

201691 of 283811 relevant lines covered (71.07%)

5442780.71 hits per line

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

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

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

24
#define COPY_SCALAR_FIELD(fldname)     \
25
  do {                                 \
26
    (pDst)->fldname = (pSrc)->fldname; \
27
  } while (0)
28

29
#define COPY_CHAR_ARRAY_FIELD(fldname)                                   \
30
  do {                                                                   \
31
    tstrncpy((pDst)->fldname, (pSrc)->fldname, sizeof((pDst)->fldname)); \
32
  } while (0)
33

34
#define COPY_OBJECT_FIELD(fldname, size)                  \
35
  do {                                                    \
36
    memcpy(&((pDst)->fldname), &((pSrc)->fldname), size); \
37
  } while (0)
38

39
#define COPY_CHAR_POINT_FIELD(fldname)             \
40
  do {                                             \
41
    if (NULL == (pSrc)->fldname) {                 \
42
      break;                                       \
43
    }                                              \
44
    (pDst)->fldname = taosStrdup((pSrc)->fldname); \
45
    if (NULL == (pDst)->fldname) {                 \
46
      return TSDB_CODE_OUT_OF_MEMORY;              \
47
    }                                              \
48
  } while (0)
49

50
#define CLONE_NODE_FIELD(fldname)                                       \
51
  do {                                                                  \
52
    if (NULL == (pSrc)->fldname) {                                      \
53
      break;                                                            \
54
    }                                                                   \
55
    int32_t code = nodesCloneNode((SNode*)(pSrc)->fldname, (SNode**)&((pDst)->fldname)); \
56
    if (NULL == (pDst)->fldname) {                                      \
57
      return code;                                                      \
58
    }                                                                   \
59
  } while (0)
60

61
#define CLONE_NODE_FIELD_EX(fldname, nodePtrType)                                        \
62
  do {                                                                                   \
63
    if (NULL == (pSrc)->fldname) {                                                       \
64
      break;                                                                             \
65
    }                                                                                    \
66
    int32_t code = nodesCloneNode((SNode*)(pSrc)->fldname, (SNode**)&((pDst)->fldname)); \
67
    if (NULL == (pDst)->fldname) {                                                       \
68
      return code;                                                                       \
69
    }                                                                                    \
70
  } while (0)
71

72
#define CLONE_NODE_LIST_FIELD(fldname)                                  \
73
  do {                                                                  \
74
    if (NULL == (pSrc)->fldname) {                                      \
75
      break;                                                            \
76
    }                                                                   \
77
    int32_t code = nodesCloneList((pSrc)->fldname, &((pDst)->fldname)); \
78
    if (NULL == (pDst)->fldname) {                                      \
79
      return code;                                                      \
80
    }                                                                   \
81
  } while (0)
82

83
#define CLONE_OBJECT_FIELD(fldname, cloneFunc)    \
84
  do {                                            \
85
    if (NULL == (pSrc)->fldname) {                \
86
      break;                                      \
87
    }                                             \
88
    (pDst)->fldname = cloneFunc((pSrc)->fldname); \
89
    if (NULL == (pDst)->fldname) {                \
90
      return TSDB_CODE_OUT_OF_MEMORY;             \
91
    }                                             \
92
  } while (0)
93

94
#define COPY_BASE_OBJECT_FIELD(fldname, copyFunc)                                \
95
  do {                                                                           \
96
    if (TSDB_CODE_SUCCESS != copyFunc(&((pSrc)->fldname), &((pDst)->fldname))) { \
97
      return TSDB_CODE_OUT_OF_MEMORY;                                            \
98
    }                                                                            \
99
  } while (0)
100

101
static int32_t exprNodeCopy(const SExprNode* pSrc, SExprNode* pDst) {
8,359,197✔
102
  COPY_OBJECT_FIELD(resType, sizeof(SDataType));
8,359,197✔
103
  COPY_CHAR_ARRAY_FIELD(aliasName);
8,359,197✔
104
  COPY_CHAR_ARRAY_FIELD(userAlias);
8,359,197✔
105
  COPY_CHAR_ARRAY_FIELD(srcTable);
8,359,197✔
106
  COPY_SCALAR_FIELD(asAlias);
8,359,197✔
107
  COPY_SCALAR_FIELD(asParam);
8,359,197✔
108
  COPY_SCALAR_FIELD(asPosition);
8,359,197✔
109
  COPY_SCALAR_FIELD(joinSrc);
8,359,197✔
110
  COPY_SCALAR_FIELD(projIdx);
8,359,197✔
111
  COPY_SCALAR_FIELD(relatedTo);
8,359,197✔
112
  COPY_SCALAR_FIELD(bindExprID);
8,359,197✔
113
  return TSDB_CODE_SUCCESS;
8,359,197✔
114
}
115

116
static int32_t columnNodeCopy(const SColumnNode* pSrc, SColumnNode* pDst) {
3,014,422✔
117
  COPY_BASE_OBJECT_FIELD(node, exprNodeCopy);
3,014,422!
118
  COPY_SCALAR_FIELD(tableId);
3,014,700✔
119
  COPY_SCALAR_FIELD(tableType);
3,014,700✔
120
  COPY_SCALAR_FIELD(colId);
3,014,700✔
121
  COPY_SCALAR_FIELD(projIdx);
3,014,700✔
122
  COPY_SCALAR_FIELD(colType);
3,014,700✔
123
  COPY_SCALAR_FIELD(hasIndex);
3,014,700✔
124
  COPY_SCALAR_FIELD(isPrimTs);
3,014,700✔
125
  COPY_CHAR_ARRAY_FIELD(dbName);
3,014,700✔
126
  COPY_CHAR_ARRAY_FIELD(tableName);
3,014,700✔
127
  COPY_CHAR_ARRAY_FIELD(tableAlias);
3,014,700✔
128
  COPY_CHAR_ARRAY_FIELD(colName);
3,014,700✔
129
  COPY_SCALAR_FIELD(dataBlockId);
3,014,700✔
130
  COPY_SCALAR_FIELD(slotId);
3,014,700✔
131
  COPY_SCALAR_FIELD(tableHasPk);
3,014,700✔
132
  COPY_SCALAR_FIELD(isPk);
3,014,700✔
133
  COPY_SCALAR_FIELD(numOfPKs);
3,014,700✔
134
  COPY_SCALAR_FIELD(projRefIdx);
3,014,700✔
135
  COPY_SCALAR_FIELD(resIdx);
3,014,700✔
136
  COPY_SCALAR_FIELD(hasDep);
3,014,700✔
137
  COPY_SCALAR_FIELD(hasRef);
3,014,700✔
138
  COPY_CHAR_ARRAY_FIELD(refDbName);
3,014,700✔
139
  COPY_CHAR_ARRAY_FIELD(refTableName);
3,014,700✔
140
  COPY_CHAR_ARRAY_FIELD(refColName);
3,014,700✔
141
  return TSDB_CODE_SUCCESS;
3,014,700✔
142
}
143

144
static int32_t columnDefNodeCopy(const SColumnDefNode* pSrc, SColumnDefNode* pDst) {
×
145
  COPY_CHAR_ARRAY_FIELD(colName);
×
146
  COPY_OBJECT_FIELD(dataType, sizeof(SDataType));
×
147
  COPY_SCALAR_FIELD(sma);;
×
148
  CLONE_NODE_FIELD(pOptions);
×
149
  return TSDB_CODE_SUCCESS;
×
150
}
151

152
static int32_t valueNodeCopy(const SValueNode* pSrc, SValueNode* pDst) {
4,691,935✔
153
  COPY_BASE_OBJECT_FIELD(node, exprNodeCopy);
4,691,935!
154
  COPY_CHAR_POINT_FIELD(literal);
4,799,343!
155
  COPY_SCALAR_FIELD(flag);
4,792,255✔
156
  COPY_SCALAR_FIELD(translate);
4,792,255✔
157
  COPY_SCALAR_FIELD(notReserved);
4,792,255✔
158
  COPY_SCALAR_FIELD(isNull);
4,792,255✔
159
  COPY_SCALAR_FIELD(placeholderNo);
4,792,255✔
160
  COPY_SCALAR_FIELD(typeData);
4,792,255✔
161
  COPY_SCALAR_FIELD(unit);
4,792,255✔
162
  COPY_SCALAR_FIELD(tz);
4,792,255✔
163
  if (!pSrc->translate || pSrc->isNull) {
4,792,255!
164
    return TSDB_CODE_SUCCESS;
265,701✔
165
  }
166
  switch (pSrc->node.resType.type) {
4,526,554!
167
    case TSDB_DATA_TYPE_BOOL:
598✔
168
      COPY_SCALAR_FIELD(datum.b);
598✔
169
      break;
598✔
170
    case TSDB_DATA_TYPE_TINYINT:
4,480,559✔
171
    case TSDB_DATA_TYPE_SMALLINT:
172
    case TSDB_DATA_TYPE_INT:
173
    case TSDB_DATA_TYPE_BIGINT:
174
    case TSDB_DATA_TYPE_TIMESTAMP:
175
      COPY_SCALAR_FIELD(datum.i);
4,480,559✔
176
      break;
4,480,559✔
177
    case TSDB_DATA_TYPE_FLOAT:
20,873✔
178
    case TSDB_DATA_TYPE_DOUBLE:
179
      COPY_SCALAR_FIELD(datum.d);
20,873✔
180
      break;
20,873✔
181
    case TSDB_DATA_TYPE_UTINYINT:
20✔
182
    case TSDB_DATA_TYPE_USMALLINT:
183
    case TSDB_DATA_TYPE_UINT:
184
    case TSDB_DATA_TYPE_UBIGINT:
185
      COPY_SCALAR_FIELD(datum.u);
20✔
186
      break;
20✔
187
    case TSDB_DATA_TYPE_NCHAR:
19,505✔
188
    case TSDB_DATA_TYPE_VARCHAR:
189
    case TSDB_DATA_TYPE_VARBINARY:
190
    case TSDB_DATA_TYPE_GEOMETRY: {
191
      int32_t len = varDataTLen(pSrc->datum.p);
19,505✔
192
      pDst->datum.p = taosMemoryCalloc(1, len + 1);
19,505!
193
      if (NULL == pDst->datum.p) {
19,510!
194
        return terrno;
×
195
      }
196
      memcpy(pDst->datum.p, pSrc->datum.p, len);
19,510✔
197
      break;
19,510✔
198
    }
199
    case TSDB_DATA_TYPE_JSON: {
×
200
      int32_t len = getJsonValueLen(pSrc->datum.p);
×
201
      pDst->datum.p = taosMemoryCalloc(1, len);
×
202
      if (NULL == pDst->datum.p) {
×
203
        return terrno;
×
204
      }
205
      memcpy(pDst->datum.p, pSrc->datum.p, len);
×
206
      break;
×
207
    }
208
    case TSDB_DATA_TYPE_DECIMAL64:
×
209
      COPY_SCALAR_FIELD(datum.d);
×
210
      break;
×
211
    case TSDB_DATA_TYPE_DECIMAL:
×
212
      pDst->datum.p = taosMemCalloc(1, pSrc->node.resType.bytes);
×
213
      if (!pDst->datum.p) return terrno;
×
214
      memcpy(pDst->datum.p, pSrc->datum.p, pSrc->node.resType.bytes);
×
215
      break;
×
216
    case TSDB_DATA_TYPE_BLOB:
×
217
    case TSDB_DATA_TYPE_MEDIUMBLOB: {
218
      int32_t len = blobDataTLen(pSrc->datum.p);
×
219
      pDst->datum.p = taosMemoryCalloc(1, len + 1);
×
220
      if (NULL == pDst->datum.p) {
×
221
        return terrno;
×
222
      }
223
      memcpy(pDst->datum.p, pSrc->datum.p, len);
×
224
    }
225
    default:
4,999✔
226
      break;
4,999✔
227
  }
228
  return TSDB_CODE_SUCCESS;
4,526,559✔
229
}
230

231
static int32_t operatorNodeCopy(const SOperatorNode* pSrc, SOperatorNode* pDst) {
83,414✔
232
  COPY_BASE_OBJECT_FIELD(node, exprNodeCopy);
83,414!
233
  COPY_SCALAR_FIELD(opType);
83,417✔
234
  CLONE_NODE_FIELD(pLeft);
83,417!
235
  CLONE_NODE_FIELD(pRight);
83,408!
236
  COPY_SCALAR_FIELD(tz);
83,414✔
237
  return TSDB_CODE_SUCCESS;
83,414✔
238
}
239

240
static int32_t logicConditionNodeCopy(const SLogicConditionNode* pSrc, SLogicConditionNode* pDst) {
14,143✔
241
  COPY_BASE_OBJECT_FIELD(node, exprNodeCopy);
14,143!
242
  COPY_SCALAR_FIELD(condType);
14,151✔
243
  CLONE_NODE_LIST_FIELD(pParameterList);
14,151!
244
  return TSDB_CODE_SUCCESS;
14,150✔
245
}
246

247
static int32_t functionNodeCopy(const SFunctionNode* pSrc, SFunctionNode* pDst) {
545,873✔
248
  COPY_BASE_OBJECT_FIELD(node, exprNodeCopy);
545,873!
249
  COPY_CHAR_ARRAY_FIELD(functionName);
545,911✔
250
  COPY_SCALAR_FIELD(funcId);
545,911✔
251
  COPY_SCALAR_FIELD(funcType);
545,911✔
252
  CLONE_NODE_LIST_FIELD(pParameterList);
545,911!
253
  COPY_SCALAR_FIELD(udfBufSize);
545,900✔
254
  COPY_SCALAR_FIELD(hasPk);
545,900✔
255
  COPY_SCALAR_FIELD(pkBytes);
545,900✔
256
  COPY_SCALAR_FIELD(hasOriginalFunc);
545,900✔
257
  COPY_SCALAR_FIELD(originalFuncId);
545,900✔
258
  COPY_OBJECT_FIELD(srcFuncInputType, sizeof(SDataType));
545,900✔
259
  COPY_SCALAR_FIELD(tz);
545,900✔
260
  return TSDB_CODE_SUCCESS;
545,900✔
261
}
262

263
static int32_t tableNodeCopy(const STableNode* pSrc, STableNode* pDst) {
20,119✔
264
  COPY_BASE_OBJECT_FIELD(node, exprNodeCopy);
20,119!
265
  COPY_CHAR_ARRAY_FIELD(dbName);
20,119✔
266
  COPY_CHAR_ARRAY_FIELD(tableName);
20,119✔
267
  COPY_CHAR_ARRAY_FIELD(tableAlias);
20,119✔
268
  COPY_SCALAR_FIELD(precision);
20,119✔
269
  COPY_SCALAR_FIELD(singleTable);
20,119✔
270
  COPY_SCALAR_FIELD(inJoin);
20,119✔
271
  return TSDB_CODE_SUCCESS;
20,119✔
272
}
273

274
static STableMeta* tableMetaClone(const STableMeta* pSrc) {
18,816✔
275
  int32_t     len = TABLE_META_SIZE(pSrc);
18,816!
276
  STableMeta* pDst = taosMemoryMalloc(len);
18,816!
277
  if (NULL == pDst) {
18,816!
278
    return NULL;
×
279
  }
280
  memcpy(pDst, pSrc, len);
18,816✔
281
  return pDst;
18,816✔
282
}
283

284
static SVgroupsInfo* vgroupsInfoClone(const SVgroupsInfo* pSrc) {
35,410✔
285
  int32_t       len = VGROUPS_INFO_SIZE(pSrc);
35,410!
286
  SVgroupsInfo* pDst = taosMemoryMalloc(len);
35,410!
287
  if (NULL == pDst) {
35,407!
288
    return NULL;
×
289
  }
290
  memcpy(pDst, pSrc, len);
35,407✔
291
  return pDst;
35,407✔
292
}
293

294
static SArray* functParamClone(const SArray* pSrc) {
96✔
295
  int32_t       len = sizeof(SArray) + pSrc->capacity * pSrc->elemSize;
96✔
296

297
  SArray* pDst = taosArrayInit(pSrc->capacity, pSrc->elemSize);
96✔
298
  if (NULL == pDst) {
96!
299
    return NULL;
×
300
  }
301
  int32_t code = 0;
96✔
302
  for (int i = 0; i < TARRAY_SIZE(pSrc); ++i) {
5,376✔
303
    SFunctParam* pFunctParam = taosArrayGet(pSrc, i);
5,280✔
304
    SFunctParam* pNewFunctParam = (SFunctParam*)taosArrayPush(pDst, pFunctParam);
5,280✔
305

306
    if (NULL == pNewFunctParam) {
5,280!
307
      return NULL;
×
308
    }
309
    pNewFunctParam->type = pFunctParam->type;
5,280✔
310
    pNewFunctParam->pCol = taosMemoryCalloc(1, sizeof(SColumn));
5,280!
311
    if (!pNewFunctParam->pCol) {
5,280!
312
      code = terrno;
×
313
      break;
×
314
    }
315
    memcpy(pNewFunctParam->pCol, pFunctParam->pCol, sizeof(SColumn));
5,280✔
316
  }
317
  if (TSDB_CODE_SUCCESS != code) {
96!
318
    taosArrayDestroyEx(pDst, destroyFuncParam);
×
319
    return NULL;
×
320
  }
321

322
  return pDst;
96✔
323
}
324

325

326
static int32_t realTableNodeCopy(const SRealTableNode* pSrc, SRealTableNode* pDst) {
20,111✔
327
  COPY_BASE_OBJECT_FIELD(table, tableNodeCopy);
20,111!
328
  CLONE_OBJECT_FIELD(pMeta, tableMetaClone);
20,111!
329
  CLONE_OBJECT_FIELD(pVgroupList, vgroupsInfoClone);
20,111!
330
  COPY_CHAR_ARRAY_FIELD(qualDbName);
20,111✔
331
  COPY_SCALAR_FIELD(ratio);
20,111✔
332
  return TSDB_CODE_SUCCESS;
20,111✔
333
}
334

335
static int32_t tempTableNodeCopy(const STempTableNode* pSrc, STempTableNode* pDst) {
5✔
336
  COPY_BASE_OBJECT_FIELD(table, tableNodeCopy);
5!
337
  CLONE_NODE_FIELD(pSubquery);
5!
338
  return TSDB_CODE_SUCCESS;
5✔
339
}
340

341
static int32_t joinTableNodeCopy(const SJoinTableNode* pSrc, SJoinTableNode* pDst) {
3✔
342
  COPY_BASE_OBJECT_FIELD(table, tableNodeCopy);
3!
343
  COPY_SCALAR_FIELD(joinType);
3✔
344
  COPY_SCALAR_FIELD(subType);
3✔
345
  CLONE_NODE_FIELD(pWindowOffset);
3!
346
  CLONE_NODE_FIELD(pJLimit);
3!
347
  CLONE_NODE_FIELD(addPrimCond);
3!
348
  COPY_SCALAR_FIELD(hasSubQuery);
3✔
349
  COPY_SCALAR_FIELD(isLowLevelJoin);
3✔
350
  COPY_SCALAR_FIELD(leftNoOrderedSubQuery);
3✔
351
  COPY_SCALAR_FIELD(rightNoOrderedSubQuery);
3✔
352
  //COPY_SCALAR_FIELD(condAlwaysTrue);
353
  //COPY_SCALAR_FIELD(condAlwaysFalse);
354
  CLONE_NODE_FIELD(pLeft);
3!
355
  CLONE_NODE_FIELD(pRight);
3!
356
  CLONE_NODE_FIELD(pOnCond);
3!
357
  return TSDB_CODE_SUCCESS;
3✔
358
}
359

360
static int32_t placeHolderTableNodeCopy(const SPlaceHolderTableNode* pSrc, SPlaceHolderTableNode* pDst) {
×
361
  COPY_BASE_OBJECT_FIELD(table, tableNodeCopy);
×
362
  CLONE_OBJECT_FIELD(pMeta, tableMetaClone);
×
363
  CLONE_OBJECT_FIELD(pVgroupList, vgroupsInfoClone);
×
364
  COPY_SCALAR_FIELD(placeholderType);
×
365
  return TSDB_CODE_SUCCESS;
×
366
}
367

368
static int32_t targetNodeCopy(const STargetNode* pSrc, STargetNode* pDst) {
×
369
  COPY_SCALAR_FIELD(dataBlockId);
×
370
  COPY_SCALAR_FIELD(slotId);
×
371
  CLONE_NODE_FIELD(pExpr);
×
372
  return TSDB_CODE_SUCCESS;
×
373
}
374

375
static int32_t groupingSetNodeCopy(const SGroupingSetNode* pSrc, SGroupingSetNode* pDst) {
3,290✔
376
  COPY_SCALAR_FIELD(groupingSetType);
3,290✔
377
  CLONE_NODE_LIST_FIELD(pParameterList);
3,290!
378
  return TSDB_CODE_SUCCESS;
3,290✔
379
}
380

381
static int32_t orderByExprNodeCopy(const SOrderByExprNode* pSrc, SOrderByExprNode* pDst) {
16,168✔
382
  CLONE_NODE_FIELD(pExpr);
16,168!
383
  COPY_SCALAR_FIELD(order);
16,168✔
384
  COPY_SCALAR_FIELD(nullOrder);
16,168✔
385
  return TSDB_CODE_SUCCESS;
16,168✔
386
}
387

388
static int32_t limitNodeCopy(const SLimitNode* pSrc, SLimitNode* pDst) {
17,959✔
389
  CLONE_NODE_FIELD(limit);
17,959!
390
  CLONE_NODE_FIELD(offset);
17,959!
391
  return TSDB_CODE_SUCCESS;
17,959✔
392
}
393

394
static int32_t stateWindowNodeCopy(const SStateWindowNode* pSrc, SStateWindowNode* pDst) {
3✔
395
  CLONE_NODE_FIELD(pCol);
3!
396
  CLONE_NODE_FIELD(pExpr);
3!
397
  CLONE_NODE_FIELD(pTrueForLimit);
3!
398
  return TSDB_CODE_SUCCESS;
3✔
399
}
400

401
static int32_t eventWindowNodeCopy(const SEventWindowNode* pSrc, SEventWindowNode* pDst) {
×
402
  CLONE_NODE_FIELD(pCol);
×
403
  CLONE_NODE_FIELD(pStartCond);
×
404
  CLONE_NODE_FIELD(pEndCond);
×
405
  CLONE_NODE_FIELD(pTrueForLimit);
×
406
  return TSDB_CODE_SUCCESS;
×
407
}
408

409
static int32_t countWindowNodeCopy(const SCountWindowNode* pSrc, SCountWindowNode* pDst) {
×
410
  CLONE_NODE_FIELD(pCol);
×
411
  COPY_SCALAR_FIELD(windowCount);
×
412
  COPY_SCALAR_FIELD(windowSliding);
×
413
  return TSDB_CODE_SUCCESS;
×
414
}
415

416
static int32_t anomalyWindowNodeCopy(const SAnomalyWindowNode* pSrc, SAnomalyWindowNode* pDst) {
×
417
  CLONE_NODE_FIELD(pCol);
×
418
  CLONE_NODE_FIELD(pExpr);
×
419
  COPY_CHAR_ARRAY_FIELD(anomalyOpt);
×
420
  return TSDB_CODE_SUCCESS;
×
421
}
422

423
static int32_t sessionWindowNodeCopy(const SSessionWindowNode* pSrc, SSessionWindowNode* pDst) {
3✔
424
  CLONE_NODE_FIELD_EX(pCol, SColumnNode*);
3!
425
  CLONE_NODE_FIELD_EX(pGap, SValueNode*);
3!
426
  return TSDB_CODE_SUCCESS;
3✔
427
}
428

429
static int32_t intervalWindowNodeCopy(const SIntervalWindowNode* pSrc, SIntervalWindowNode* pDst) {
3✔
430
  CLONE_NODE_FIELD(pCol);
3!
431
  CLONE_NODE_FIELD(pInterval);
3!
432
  CLONE_NODE_FIELD(pOffset);
3!
433
  CLONE_NODE_FIELD(pSliding);
3!
434
  CLONE_NODE_FIELD(pFill);
3!
435
  COPY_OBJECT_FIELD(timeRange, sizeof(STimeWindow));
3✔
436
  return TSDB_CODE_SUCCESS;
3✔
437
}
438

439
static int32_t nodeListNodeCopy(const SNodeListNode* pSrc, SNodeListNode* pDst) {
4,441✔
440
  COPY_OBJECT_FIELD(node.resType, sizeof(SDataType));
4,441✔
441
  CLONE_NODE_LIST_FIELD(pNodeList);
4,441!
442
  return TSDB_CODE_SUCCESS;
4,442✔
443
}
444

445
static int32_t fillNodeCopy(const SFillNode* pSrc, SFillNode* pDst) {
6✔
446
  COPY_SCALAR_FIELD(mode);
6✔
447
  CLONE_NODE_FIELD(pValues);
6!
448
  CLONE_NODE_FIELD(pWStartTs);
6!
449
  COPY_OBJECT_FIELD(timeRange, sizeof(STimeWindow));
6✔
450
  return TSDB_CODE_SUCCESS;
6✔
451
}
452

453
static int32_t whenThenNodeCopy(const SWhenThenNode* pSrc, SWhenThenNode* pDst) {
82✔
454
  COPY_BASE_OBJECT_FIELD(node, exprNodeCopy);
82!
455
  CLONE_NODE_FIELD(pWhen);
82!
456
  CLONE_NODE_FIELD(pThen);
82!
457
  return TSDB_CODE_SUCCESS;
82✔
458
}
459

460
static int32_t caseWhenNodeCopy(const SCaseWhenNode* pSrc, SCaseWhenNode* pDst) {
58✔
461
  COPY_BASE_OBJECT_FIELD(node, exprNodeCopy);
58!
462
  CLONE_NODE_FIELD(pCase);
58!
463
  CLONE_NODE_FIELD(pElse);
58!
464
  CLONE_NODE_LIST_FIELD(pWhenThenList);
58!
465
  COPY_SCALAR_FIELD(tz);
58✔
466
  return TSDB_CODE_SUCCESS;
58✔
467
}
468

469
static int32_t copyHintValue(const SHintNode* pSrc, SHintNode* pDst) {
×
470
  if (NULL == pSrc->value) {
×
471
    pDst->value = NULL;
×
472
    return TSDB_CODE_SUCCESS;
×
473
  }
474
  switch (pSrc->option) {
×
475
    default:
476
      break;
×
477
  }
478
  return TSDB_CODE_SUCCESS;
×
479
}
480

481
static int32_t hintNodeCopy(const SHintNode* pSrc, SHintNode* pDst) {
×
482
  COPY_SCALAR_FIELD(type);
×
483
  COPY_SCALAR_FIELD(option);
×
484
  return copyHintValue(pSrc, pDst);
×
485
}
486

487
static int32_t windowOffsetCopy(const SWindowOffsetNode* pSrc, SWindowOffsetNode* pDst) {
×
488
  COPY_SCALAR_FIELD(type);
×
489
  CLONE_NODE_FIELD(pStartOffset);
×
490
  CLONE_NODE_FIELD(pEndOffset);
×
491
  return TSDB_CODE_SUCCESS;
×
492
}
493

494
static int32_t virtualTableNodeCopy(const SVirtualTableNode * pSrc, SVirtualTableNode* pDst) {
×
495
  COPY_BASE_OBJECT_FIELD(table, tableNodeCopy);
×
496
  CLONE_OBJECT_FIELD(pMeta, tableMetaClone);
×
497
  CLONE_OBJECT_FIELD(pVgroupList, vgroupsInfoClone);
×
498
  CLONE_NODE_LIST_FIELD(refTables);
×
499
  return TSDB_CODE_SUCCESS;
×
500
}
501

502
static int32_t timeRangeNodeCopy(const STimeRangeNode* pSrc, STimeRangeNode* pDst) {
×
503
  COPY_SCALAR_FIELD(type);
×
504
  CLONE_NODE_FIELD(pStart);
×
505
  CLONE_NODE_FIELD(pEnd);
×
506
  return TSDB_CODE_SUCCESS;
×
507
}
508

509
static int32_t logicNodeCopy(const SLogicNode* pSrc, SLogicNode* pDst) {
227,850✔
510
  CLONE_NODE_LIST_FIELD(pTargets);
227,850✔
511
  CLONE_NODE_FIELD(pConditions);
227,902!
512
  CLONE_NODE_LIST_FIELD(pChildren);
227,945✔
513
  COPY_SCALAR_FIELD(optimizedFlag);
227,940✔
514
  COPY_SCALAR_FIELD(precision);
227,940✔
515
  CLONE_NODE_FIELD(pLimit);
227,940!
516
  CLONE_NODE_FIELD(pSlimit);
227,945!
517
  COPY_SCALAR_FIELD(requireDataOrder);
227,948✔
518
  COPY_SCALAR_FIELD(resultDataOrder);
227,948✔
519
  COPY_SCALAR_FIELD(groupAction);
227,948✔
520
  COPY_SCALAR_FIELD(inputTsOrder);
227,948✔
521
  COPY_SCALAR_FIELD(outputTsOrder);
227,948✔
522
  COPY_SCALAR_FIELD(dynamicOp);
227,948✔
523
  COPY_SCALAR_FIELD(forceCreateNonBlockingOptr);
227,948✔
524
  CLONE_NODE_LIST_FIELD(pHint);
227,948!
525
  return TSDB_CODE_SUCCESS;
227,901✔
526
}
527

528
static int32_t logicScanCopy(const SScanLogicNode* pSrc, SScanLogicNode* pDst) {
39,018✔
529
  COPY_BASE_OBJECT_FIELD(node, logicNodeCopy);
39,018!
530
  CLONE_NODE_LIST_FIELD(pScanCols);
39,026!
531
  CLONE_NODE_LIST_FIELD(pScanPseudoCols);
39,033!
532
  COPY_SCALAR_FIELD(tableType);
39,034✔
533
  COPY_SCALAR_FIELD(tableId);
39,034✔
534
  COPY_SCALAR_FIELD(stableId);
39,034✔
535
  CLONE_OBJECT_FIELD(pVgroupList, vgroupsInfoClone);
39,034!
536
  COPY_SCALAR_FIELD(scanType);
39,030✔
537
  COPY_OBJECT_FIELD(scanSeq[0], sizeof(uint8_t) * 2);
39,030✔
538
  COPY_OBJECT_FIELD(scanRange, sizeof(STimeWindow));
39,030✔
539
  CLONE_NODE_FIELD(pTimeRange);
39,030!
540
  COPY_OBJECT_FIELD(tableName, sizeof(SName));
39,034✔
541
  COPY_SCALAR_FIELD(showRewrite);
39,034✔
542
  COPY_SCALAR_FIELD(ratio);
39,034✔
543
  CLONE_NODE_LIST_FIELD(pDynamicScanFuncs);
39,034!
544
  COPY_SCALAR_FIELD(dataRequired);
39,034✔
545
  COPY_SCALAR_FIELD(interval);
39,034✔
546
  COPY_SCALAR_FIELD(offset);
39,034✔
547
  COPY_SCALAR_FIELD(sliding);
39,034✔
548
  COPY_SCALAR_FIELD(intervalUnit);
39,034✔
549
  COPY_SCALAR_FIELD(slidingUnit);
39,034✔
550
  CLONE_NODE_FIELD(pTagCond);
39,034!
551
  CLONE_NODE_FIELD(pTagIndexCond);
39,027!
552
  COPY_SCALAR_FIELD(triggerType);
39,028✔
553
  COPY_SCALAR_FIELD(watermark);
39,028✔
554
  COPY_SCALAR_FIELD(deleteMark);
39,028✔
555
  COPY_SCALAR_FIELD(igExpired);
39,028✔
556
  COPY_SCALAR_FIELD(igCheckUpdate);
39,028✔
557
  CLONE_NODE_LIST_FIELD(pGroupTags);
39,028!
558
  COPY_SCALAR_FIELD(groupSort);
39,028✔
559
  COPY_SCALAR_FIELD(cacheLastMode);
39,028✔
560
  COPY_SCALAR_FIELD(igLastNull);
39,028✔
561
  COPY_SCALAR_FIELD(groupOrderScan);
39,028✔
562
  COPY_SCALAR_FIELD(onlyMetaCtbIdx);
39,028✔
563
  COPY_SCALAR_FIELD(filesetDelimited);
39,028✔
564
  COPY_SCALAR_FIELD(isCountByTag);
39,028✔
565
  CLONE_OBJECT_FIELD(pFuncTypes, functParamClone);
39,028!
566
  COPY_SCALAR_FIELD(paraTablesSort);
39,026✔
567
  COPY_SCALAR_FIELD(smallDataTsSort);
39,026✔
568
  COPY_SCALAR_FIELD(needSplit);
39,026✔
569
  COPY_SCALAR_FIELD(noPseudoRefAfterGrp);
39,026✔
570
  COPY_SCALAR_FIELD(virtualStableScan);
39,026✔
571
  COPY_SCALAR_FIELD(placeholderType);
39,026✔
572
  COPY_SCALAR_FIELD(phTbnameScan);
39,026✔
573
  return TSDB_CODE_SUCCESS;
39,026✔
574
}
575

576
static int32_t logicVirtualScanCopy(const SVirtualScanLogicNode * pSrc, SVirtualScanLogicNode* pDst) {
2,362✔
577
  COPY_BASE_OBJECT_FIELD(node, logicNodeCopy);
2,362!
578
  COPY_SCALAR_FIELD(scanAllCols);
2,362✔
579
  CLONE_NODE_LIST_FIELD(pScanCols);
2,362!
580
  CLONE_NODE_LIST_FIELD(pScanPseudoCols);
2,362!
581
  COPY_SCALAR_FIELD(tableType);
2,362✔
582
  COPY_SCALAR_FIELD(tableId);
2,362✔
583
  COPY_SCALAR_FIELD(stableId);
2,362✔
584
  CLONE_OBJECT_FIELD(pVgroupList, vgroupsInfoClone);
2,362!
585
  COPY_SCALAR_FIELD(scanType);
2,362✔
586
  COPY_OBJECT_FIELD(tableName, sizeof(SName));
2,362✔
587
  return TSDB_CODE_SUCCESS;
2,362✔
588
}
589

590
static int32_t logicJoinCopy(const SJoinLogicNode* pSrc, SJoinLogicNode* pDst) {
2,619✔
591
  COPY_BASE_OBJECT_FIELD(node, logicNodeCopy);
2,619!
592
  COPY_SCALAR_FIELD(joinType);
2,619✔
593
  COPY_SCALAR_FIELD(subType);
2,619✔
594
  COPY_SCALAR_FIELD(joinAlgo);
2,619✔
595
  CLONE_NODE_FIELD(pWindowOffset);
2,619!
596
  CLONE_NODE_FIELD(pJLimit);
2,619!
597
  CLONE_NODE_FIELD(addPrimEqCond);
2,619!
598
  CLONE_NODE_FIELD(pPrimKeyEqCond);
2,619!
599
  CLONE_NODE_FIELD(pColEqCond);
2,619!
600
  CLONE_NODE_FIELD(pColOnCond);
2,619!
601
  CLONE_NODE_FIELD(pTagEqCond);
2,619!
602
  CLONE_NODE_FIELD(pTagOnCond);
2,619!
603
  CLONE_NODE_FIELD(pFullOnCond);
2,619!
604
  CLONE_NODE_LIST_FIELD(pLeftEqNodes);
2,619!
605
  CLONE_NODE_LIST_FIELD(pRightEqNodes);
2,619!
606
  COPY_SCALAR_FIELD(allEqTags);
2,619✔
607
  COPY_SCALAR_FIELD(isSingleTableJoin);
2,619✔
608
  COPY_SCALAR_FIELD(hasSubQuery);
2,619✔
609
  COPY_SCALAR_FIELD(isLowLevelJoin);
2,619✔
610
  COPY_SCALAR_FIELD(seqWinGroup);
2,619✔
611
  COPY_SCALAR_FIELD(grpJoin);
2,619✔
612
  COPY_SCALAR_FIELD(hashJoinHint);
2,619✔
613
  COPY_SCALAR_FIELD(batchScanHint);
2,619✔
614
  COPY_SCALAR_FIELD(noPrimKeyEqCond);
2,619✔
615
  COPY_SCALAR_FIELD(leftConstPrimGot);
2,619✔
616
  COPY_SCALAR_FIELD(rightConstPrimGot);
2,619✔
617
  COPY_SCALAR_FIELD(leftNoOrderedSubQuery);
2,619✔
618
  COPY_SCALAR_FIELD(rightNoOrderedSubQuery);
2,619✔
619
  CLONE_NODE_FIELD(pLeftOnCond);
2,619!
620
  CLONE_NODE_FIELD(pRightOnCond);
2,619!
621
  COPY_SCALAR_FIELD(timeRangeTarget);
2,619✔
622
  COPY_OBJECT_FIELD(timeRange, sizeof(STimeWindow));  
2,619✔
623
  return TSDB_CODE_SUCCESS;
2,619✔
624
}
625

626
static int32_t logicAggCopy(const SAggLogicNode* pSrc, SAggLogicNode* pDst) {
18,516✔
627
  COPY_BASE_OBJECT_FIELD(node, logicNodeCopy);
18,516!
628
  CLONE_NODE_LIST_FIELD(pGroupKeys);
18,533!
629
  CLONE_NODE_LIST_FIELD(pAggFuncs);
18,535!
630
  COPY_SCALAR_FIELD(hasLastRow);
18,538✔
631
  COPY_SCALAR_FIELD(hasLast);
18,538✔
632
  COPY_SCALAR_FIELD(hasTimeLineFunc);
18,538✔
633
  COPY_SCALAR_FIELD(onlyHasKeepOrderFunc);
18,538✔
634
  COPY_SCALAR_FIELD(hasGroupKeyOptimized);
18,538✔
635
  COPY_SCALAR_FIELD(isGroupTb);
18,538✔
636
  COPY_SCALAR_FIELD(isPartTb);
18,538✔
637
  COPY_SCALAR_FIELD(hasGroup);
18,538✔
638
  return TSDB_CODE_SUCCESS;
18,538✔
639
}
640

641
static int32_t logicProjectCopy(const SProjectLogicNode* pSrc, SProjectLogicNode* pDst) {
11,916✔
642
  COPY_BASE_OBJECT_FIELD(node, logicNodeCopy);
11,916!
643
  CLONE_NODE_LIST_FIELD(pProjections);
11,925!
644
  COPY_CHAR_ARRAY_FIELD(stmtName);
11,925✔
645
  COPY_SCALAR_FIELD(ignoreGroupId);
11,925✔
646
  COPY_SCALAR_FIELD(inputIgnoreGroup);
11,925✔
647
  return TSDB_CODE_SUCCESS;
11,925✔
648
}
649

650
static int32_t logicVnodeModifCopy(const SVnodeModifyLogicNode* pSrc, SVnodeModifyLogicNode* pDst) {
127,618✔
651
  COPY_BASE_OBJECT_FIELD(node, logicNodeCopy);
127,618!
652
  COPY_SCALAR_FIELD(modifyType);
127,704✔
653
  COPY_SCALAR_FIELD(msgType);
127,704✔
654
  CLONE_NODE_FIELD(pAffectedRows);
127,704!
655
  CLONE_NODE_FIELD(pStartTs);
127,723!
656
  CLONE_NODE_FIELD(pEndTs);
127,732!
657
  COPY_SCALAR_FIELD(tableId);
127,641✔
658
  COPY_SCALAR_FIELD(stableId);
127,641✔
659
  COPY_SCALAR_FIELD(tableType);
127,641✔
660
  COPY_CHAR_ARRAY_FIELD(tableName);
127,641✔
661
  COPY_CHAR_ARRAY_FIELD(tsColName);
127,641✔
662
  COPY_OBJECT_FIELD(deleteTimeRange, sizeof(STimeWindow));
127,641✔
663
  CLONE_OBJECT_FIELD(pVgroupList, vgroupsInfoClone);
127,641!
664
  CLONE_NODE_LIST_FIELD(pInsertCols);
127,732!
665
  return TSDB_CODE_SUCCESS;
127,754✔
666
}
667

668
static int32_t logicExchangeCopy(const SExchangeLogicNode* pSrc, SExchangeLogicNode* pDst) {
16,067✔
669
  COPY_BASE_OBJECT_FIELD(node, logicNodeCopy);
16,067!
670
  COPY_SCALAR_FIELD(srcStartGroupId);
16,067✔
671
  COPY_SCALAR_FIELD(srcEndGroupId);
16,067✔
672
  COPY_SCALAR_FIELD(seqRecvData);
16,067✔
673
  COPY_SCALAR_FIELD(dynTbname);
16,067✔
674
  return TSDB_CODE_SUCCESS;
16,067✔
675
}
676

677
static int32_t logicMergeCopy(const SMergeLogicNode* pSrc, SMergeLogicNode* pDst) {
2,051✔
678
  COPY_BASE_OBJECT_FIELD(node, logicNodeCopy);
2,051!
679
  CLONE_NODE_LIST_FIELD(pMergeKeys);
2,051!
680
  CLONE_NODE_LIST_FIELD(pInputs);
2,051!
681
  COPY_SCALAR_FIELD(numOfChannels);
2,051✔
682
  COPY_SCALAR_FIELD(srcGroupId);
2,051✔
683
  COPY_SCALAR_FIELD(srcEndGroupId);
2,051✔
684
  COPY_SCALAR_FIELD(numOfSubplans);
2,051✔
685
  COPY_SCALAR_FIELD(colsMerge);
2,051✔
686
  COPY_SCALAR_FIELD(needSort);
2,051✔
687
  COPY_SCALAR_FIELD(groupSort);
2,051✔
688
  COPY_SCALAR_FIELD(ignoreGroupId);
2,051✔
689
  COPY_SCALAR_FIELD(inputWithGroupId);
2,051✔
690
  return TSDB_CODE_SUCCESS;
2,051✔
691
}
692

693
static int32_t logicWindowCopy(const SWindowLogicNode* pSrc, SWindowLogicNode* pDst) {
4,844✔
694
  COPY_BASE_OBJECT_FIELD(node, logicNodeCopy);
4,844!
695
  COPY_SCALAR_FIELD(winType);
4,844✔
696
  CLONE_NODE_LIST_FIELD(pFuncs);
4,844!
697
  COPY_SCALAR_FIELD(interval);
4,844✔
698
  COPY_SCALAR_FIELD(offset);
4,844✔
699
  COPY_SCALAR_FIELD(sliding);
4,844✔
700
  COPY_SCALAR_FIELD(intervalUnit);
4,844✔
701
  COPY_SCALAR_FIELD(slidingUnit);
4,844✔
702
  COPY_OBJECT_FIELD(timeRange, sizeof(STimeWindow));
4,844✔
703
  COPY_SCALAR_FIELD(sessionGap);
4,844✔
704
  CLONE_NODE_FIELD(pTspk);
4,844!
705
  CLONE_NODE_FIELD(pTsEnd);
4,844!
706
  CLONE_NODE_FIELD(pStateExpr);
4,844!
707
  CLONE_NODE_FIELD(pStartCond);
4,844!
708
  CLONE_NODE_FIELD(pEndCond);
4,844!
709
  COPY_SCALAR_FIELD(trueForLimit);
4,844✔
710
  COPY_SCALAR_FIELD(triggerType);
4,844✔
711
  COPY_SCALAR_FIELD(watermark);
4,844✔
712
  COPY_SCALAR_FIELD(deleteMark);
4,844✔
713
  COPY_SCALAR_FIELD(igExpired);
4,844✔
714
  COPY_SCALAR_FIELD(igCheckUpdate);
4,844✔
715
  COPY_SCALAR_FIELD(windowAlgo);
4,844✔
716
  COPY_SCALAR_FIELD(windowCount);
4,844✔
717
  COPY_SCALAR_FIELD(windowSliding);
4,844✔
718
  COPY_SCALAR_FIELD(indefRowsFunc);
4,844✔
719
  CLONE_NODE_FIELD(pAnomalyExpr);
4,844!
720
  COPY_CHAR_ARRAY_FIELD(anomalyOpt);
4,844✔
721
  COPY_SCALAR_FIELD(recalculateInterval);
4,844✔
722
  CLONE_NODE_LIST_FIELD(pProjs);
4,844!
723
  return TSDB_CODE_SUCCESS;
4,844✔
724
}
725

726
static int32_t logicFillCopy(const SFillLogicNode* pSrc, SFillLogicNode* pDst) {
43✔
727
  COPY_BASE_OBJECT_FIELD(node, logicNodeCopy);
43!
728
  COPY_SCALAR_FIELD(mode);
43✔
729
  CLONE_NODE_LIST_FIELD(pFillExprs);
43!
730
  CLONE_NODE_LIST_FIELD(pNotFillExprs);
43!
731
  CLONE_NODE_FIELD(pWStartTs);
43!
732
  CLONE_NODE_FIELD(pValues);
43!
733
  COPY_OBJECT_FIELD(timeRange, sizeof(STimeWindow));
43✔
734
  CLONE_NODE_FIELD(pTimeRange);
43!
735
  CLONE_NODE_LIST_FIELD(pFillNullExprs);
43!
736
  return TSDB_CODE_SUCCESS;
43✔
737
}
738

739
static int32_t logicSortCopy(const SSortLogicNode* pSrc, SSortLogicNode* pDst) {
2,197✔
740
  COPY_BASE_OBJECT_FIELD(node, logicNodeCopy);
2,197!
741
  CLONE_NODE_LIST_FIELD(pSortKeys);
2,197!
742
  COPY_SCALAR_FIELD(groupSort);
2,197✔
743
  COPY_SCALAR_FIELD(calcGroupId);
2,197✔
744
  COPY_SCALAR_FIELD(excludePkCol);
2,197✔
745
  return TSDB_CODE_SUCCESS;
2,197✔
746
}
747

748
static int32_t logicPartitionCopy(const SPartitionLogicNode* pSrc, SPartitionLogicNode* pDst) {
179✔
749
  COPY_BASE_OBJECT_FIELD(node, logicNodeCopy);
179!
750
  CLONE_NODE_LIST_FIELD(pPartitionKeys);
179!
751
  CLONE_NODE_LIST_FIELD(pTags);
179!
752
  CLONE_NODE_FIELD(pSubtable);
179!
753
  CLONE_NODE_LIST_FIELD(pAggFuncs);
179!
754
  COPY_SCALAR_FIELD(needBlockOutputTsOrder);
179✔
755
  COPY_SCALAR_FIELD(pkTsColId);
179✔
756
  COPY_SCALAR_FIELD(pkTsColTbId);
179✔
757
  return TSDB_CODE_SUCCESS;
179✔
758
}
759

760
static int32_t logicIndefRowsFuncCopy(const SIndefRowsFuncLogicNode* pSrc, SIndefRowsFuncLogicNode* pDst) {
48✔
761
  COPY_BASE_OBJECT_FIELD(node, logicNodeCopy);
48!
762
  CLONE_NODE_LIST_FIELD(pFuncs);
48!
763
  return TSDB_CODE_SUCCESS;
48✔
764
}
765

766
static int32_t logicInterpFuncCopy(const SInterpFuncLogicNode* pSrc, SInterpFuncLogicNode* pDst) {
331✔
767
  COPY_BASE_OBJECT_FIELD(node, logicNodeCopy);
331!
768
  CLONE_NODE_LIST_FIELD(pFuncs);
331!
769
  COPY_OBJECT_FIELD(timeRange, sizeof(STimeWindow));
331✔
770
  COPY_SCALAR_FIELD(interval);
331✔
771
  COPY_SCALAR_FIELD(intervalUnit);
331✔
772
  COPY_SCALAR_FIELD(precision);
331✔
773
  COPY_SCALAR_FIELD(fillMode);
331✔
774
  CLONE_NODE_FIELD(pFillValues);
331!
775
  CLONE_NODE_FIELD(pTimeSeries);
331!
776
  COPY_SCALAR_FIELD(rangeInterval);
331✔
777
  COPY_SCALAR_FIELD(rangeIntervalUnit);
331✔
778
  return TSDB_CODE_SUCCESS;
331✔
779
}
780

781
static int32_t logicForecastFuncCopy(const SForecastFuncLogicNode* pSrc, SForecastFuncLogicNode* pDst) {
×
782
  COPY_BASE_OBJECT_FIELD(node, logicNodeCopy);
×
783
  CLONE_NODE_LIST_FIELD(pFuncs);
×
784
  return TSDB_CODE_SUCCESS;
×
785
}
786

787
static int32_t logicGroupCacheCopy(const SGroupCacheLogicNode* pSrc, SGroupCacheLogicNode* pDst) {
×
788
  COPY_BASE_OBJECT_FIELD(node, logicNodeCopy);
×
789
  COPY_SCALAR_FIELD(grpColsMayBeNull);
×
790
  COPY_SCALAR_FIELD(grpByUid);
×
791
  COPY_SCALAR_FIELD(globalGrp);
×
792
  COPY_SCALAR_FIELD(batchFetch);
×
793
  CLONE_NODE_LIST_FIELD(pGroupCols);
×
794
  return TSDB_CODE_SUCCESS;
×
795
}
796

797
static int32_t logicDynQueryCtrlCopy(const SDynQueryCtrlLogicNode* pSrc, SDynQueryCtrlLogicNode* pDst) {
×
798
  COPY_BASE_OBJECT_FIELD(node, logicNodeCopy);
×
799
  COPY_SCALAR_FIELD(dynTbname);
×
800
  COPY_SCALAR_FIELD(qType);
×
801
  COPY_SCALAR_FIELD(stbJoin.batchFetch);
×
802
  CLONE_NODE_LIST_FIELD(stbJoin.pVgList);
×
803
  CLONE_NODE_LIST_FIELD(stbJoin.pUidList);
×
804
  COPY_OBJECT_FIELD(stbJoin.srcScan, sizeof(pDst->stbJoin.srcScan));
×
805
  COPY_SCALAR_FIELD(vtbScan.scanAllCols);
×
806
  COPY_SCALAR_FIELD(vtbScan.suid);
×
807
  COPY_CHAR_ARRAY_FIELD(vtbScan.dbName);
×
808
  COPY_CHAR_ARRAY_FIELD(vtbScan.stbName);
×
809
  CLONE_OBJECT_FIELD(vtbScan.pVgroupList, vgroupsInfoClone);
×
810
  return TSDB_CODE_SUCCESS;
×
811
}
812

813
static int32_t logicSubplanCopy(const SLogicSubplan* pSrc, SLogicSubplan* pDst) {
3✔
814
  COPY_OBJECT_FIELD(id, sizeof(SSubplanId));
3✔
815
  CLONE_NODE_FIELD_EX(pNode, SLogicNode*);
3!
816
  COPY_SCALAR_FIELD(subplanType);
3✔
817
  COPY_SCALAR_FIELD(level);
3✔
818
  COPY_SCALAR_FIELD(splitFlag);
3✔
819
  COPY_SCALAR_FIELD(processOneBlock);
3✔
820
  COPY_SCALAR_FIELD(dynTbname);
3✔
821
  return TSDB_CODE_SUCCESS;
3✔
822
}
823

824
static int32_t physiNodeCopy(const SPhysiNode* pSrc, SPhysiNode* pDst) {
9✔
825
  CLONE_NODE_FIELD_EX(pOutputDataBlockDesc, SDataBlockDescNode*);
9!
826
  CLONE_NODE_FIELD(pConditions);
9!
827
  CLONE_NODE_LIST_FIELD(pChildren);
9!
828
  COPY_SCALAR_FIELD(inputTsOrder);
9✔
829
  COPY_SCALAR_FIELD(outputTsOrder);
9✔
830
  COPY_SCALAR_FIELD(dynamicOp);
9✔
831
  COPY_SCALAR_FIELD(forceCreateNonBlockingOptr);
9✔
832
  return TSDB_CODE_SUCCESS;
9✔
833
}
834

835
static int32_t physiScanCopy(const SScanPhysiNode* pSrc, SScanPhysiNode* pDst) {
6✔
836
  COPY_BASE_OBJECT_FIELD(node, physiNodeCopy);
6!
837
  CLONE_NODE_LIST_FIELD(pScanCols);
6!
838
  CLONE_NODE_LIST_FIELD(pScanPseudoCols);
6!
839
  COPY_SCALAR_FIELD(uid);
6✔
840
  COPY_SCALAR_FIELD(suid);
6✔
841
  COPY_SCALAR_FIELD(tableType);
6✔
842
  COPY_OBJECT_FIELD(tableName, sizeof(SName));
6✔
843
  COPY_SCALAR_FIELD(groupOrderScan);
6✔
844
  return TSDB_CODE_SUCCESS;
6✔
845
}
846

847
static int32_t physiVirtualTableScanCopy(const SVirtualScanPhysiNode* pSrc, SVirtualScanPhysiNode* pDst) {
×
848
  COPY_BASE_OBJECT_FIELD(scan, physiScanCopy);
×
849
  CLONE_NODE_LIST_FIELD(pGroupTags);
×
850
  COPY_SCALAR_FIELD(groupSort);
×
851
  COPY_SCALAR_FIELD(scanAllCols);
×
852
  CLONE_NODE_LIST_FIELD(pTargets);
×
853
  CLONE_NODE_LIST_FIELD(pTags);
×
854
  CLONE_NODE_FIELD(pSubtable);
×
855
  COPY_SCALAR_FIELD(igExpired);
×
856
  COPY_SCALAR_FIELD(igCheckUpdate);
×
857
  return TSDB_CODE_SUCCESS;
×
858
}
859

860
static int32_t physiTagScanCopy(const STagScanPhysiNode* pSrc, STagScanPhysiNode* pDst) {
3✔
861
  COPY_BASE_OBJECT_FIELD(scan, physiScanCopy);
3!
862
  COPY_SCALAR_FIELD(onlyMetaCtbIdx);
3✔
863
  return TSDB_CODE_SUCCESS;
3✔
864
}
865

866
static int32_t physiTableScanCopy(const STableScanPhysiNode* pSrc, STableScanPhysiNode* pDst) {
×
867
  COPY_BASE_OBJECT_FIELD(scan, physiScanCopy);
×
868
  COPY_OBJECT_FIELD(scanSeq[0], sizeof(uint8_t) * 2);
×
869
  COPY_OBJECT_FIELD(scanRange, sizeof(STimeWindow));
×
870
  CLONE_NODE_FIELD(pTimeRange);
×
871
  COPY_SCALAR_FIELD(ratio);
×
872
  COPY_SCALAR_FIELD(dataRequired);
×
873
  CLONE_NODE_LIST_FIELD(pDynamicScanFuncs);
×
874
  CLONE_NODE_LIST_FIELD(pGroupTags);
×
875
  COPY_SCALAR_FIELD(interval);
×
876
  COPY_SCALAR_FIELD(offset);
×
877
  COPY_SCALAR_FIELD(sliding);
×
878
  COPY_SCALAR_FIELD(intervalUnit);
×
879
  COPY_SCALAR_FIELD(slidingUnit);
×
880
  COPY_SCALAR_FIELD(triggerType);
×
881
  COPY_SCALAR_FIELD(watermark);
×
882
  COPY_SCALAR_FIELD(igExpired);
×
883
  COPY_SCALAR_FIELD(filesetDelimited);
×
884
  COPY_SCALAR_FIELD(needCountEmptyTable);
×
885
  COPY_SCALAR_FIELD(paraTablesSort);
×
886
  COPY_SCALAR_FIELD(smallDataTsSort);
×
887
  return TSDB_CODE_SUCCESS;
×
888
}
889

890
static int32_t physiSysTableScanCopy(const SSystemTableScanPhysiNode* pSrc, SSystemTableScanPhysiNode* pDst) {
3✔
891
  COPY_BASE_OBJECT_FIELD(scan, physiScanCopy);
3!
892
  COPY_OBJECT_FIELD(mgmtEpSet, sizeof(SEpSet));
3✔
893
  COPY_SCALAR_FIELD(showRewrite);
3✔
894
  COPY_SCALAR_FIELD(accountId);
3✔
895
  COPY_SCALAR_FIELD(sysInfo);
3✔
896
  return TSDB_CODE_SUCCESS;
3✔
897
}
898

899
static int32_t physiWindowCopy(const SWindowPhysiNode* pSrc, SWindowPhysiNode* pDst) {
×
900
  COPY_BASE_OBJECT_FIELD(node, physiNodeCopy);
×
901
  CLONE_NODE_LIST_FIELD(pExprs);
×
902
  CLONE_NODE_LIST_FIELD(pFuncs);
×
903
  CLONE_NODE_LIST_FIELD(pProjs);
×
904
  CLONE_NODE_FIELD(pTspk);
×
905
  CLONE_NODE_FIELD(pTsEnd);
×
906
  COPY_SCALAR_FIELD(triggerType);
×
907
  COPY_SCALAR_FIELD(watermark);
×
908
  COPY_SCALAR_FIELD(igExpired);
×
909
  COPY_SCALAR_FIELD(indefRowsFunc);
×
910
  return TSDB_CODE_SUCCESS;
×
911
}
912

913
static int32_t physiIntervalCopy(const SIntervalPhysiNode* pSrc, SIntervalPhysiNode* pDst) {
×
914
  COPY_BASE_OBJECT_FIELD(window, physiWindowCopy);
×
915
  COPY_SCALAR_FIELD(interval);
×
916
  COPY_SCALAR_FIELD(offset);
×
917
  COPY_SCALAR_FIELD(sliding);
×
918
  COPY_SCALAR_FIELD(intervalUnit);
×
919
  COPY_SCALAR_FIELD(slidingUnit);
×
920
  COPY_OBJECT_FIELD(timeRange, sizeof(STimeWindow));
×
921
  return TSDB_CODE_SUCCESS;
×
922
}
923

924
static int32_t physiSessionCopy(const SSessionWinodwPhysiNode* pSrc, SSessionWinodwPhysiNode* pDst) {
×
925
  COPY_BASE_OBJECT_FIELD(window, physiWindowCopy);
×
926
  COPY_SCALAR_FIELD(gap);
×
927
  return TSDB_CODE_SUCCESS;
×
928
}
929

930
static int32_t physiPartitionCopy(const SPartitionPhysiNode* pSrc, SPartitionPhysiNode* pDst) {
3✔
931
  COPY_BASE_OBJECT_FIELD(node, physiNodeCopy);
3!
932
  CLONE_NODE_LIST_FIELD(pExprs);
3!
933
  CLONE_NODE_LIST_FIELD(pPartitionKeys);
3!
934
  CLONE_NODE_LIST_FIELD(pTargets);
3!
935
  COPY_SCALAR_FIELD(needBlockOutputTsOrder);
3✔
936
  COPY_SCALAR_FIELD(tsSlotId);
3✔
937
  return TSDB_CODE_SUCCESS;
3✔
938
}
939

940
static int32_t physiProjectCopy(const SProjectPhysiNode* pSrc, SProjectPhysiNode* pDst) {
×
941
  COPY_BASE_OBJECT_FIELD(node, physiNodeCopy);
×
942
  CLONE_NODE_LIST_FIELD(pProjections);
×
943
  COPY_SCALAR_FIELD(mergeDataBlock);
×
944
  COPY_SCALAR_FIELD(ignoreGroupId);
×
945
  COPY_SCALAR_FIELD(inputIgnoreGroup);
×
946
  return TSDB_CODE_SUCCESS;
×
947
}
948

949
static int32_t dataSinkNodeCopy(const SDataSinkNode* pSrc, SDataSinkNode* pDst) {
×
950
  CLONE_NODE_FIELD_EX(pInputDataBlockDesc, SDataBlockDescNode*);
×
951
  return TSDB_CODE_SUCCESS;
×
952
}
953

954
static int32_t physiDispatchCopy(const SDataDispatcherNode* pSrc, SDataDispatcherNode* pDst) {
×
955
  COPY_BASE_OBJECT_FIELD(sink, dataSinkNodeCopy);
×
956
  return TSDB_CODE_SUCCESS;
×
957
}
958

959
static int32_t physiQueryInserterCopy(const SQueryInserterNode* pSrc, SQueryInserterNode* pDst) {
×
960
  COPY_BASE_OBJECT_FIELD(sink, dataSinkNodeCopy);
×
961
  CLONE_NODE_LIST_FIELD(pCols);
×
962
  COPY_SCALAR_FIELD(tableId);
×
963
  COPY_SCALAR_FIELD(stableId);
×
964
  COPY_SCALAR_FIELD(tableType);
×
965
  COPY_CHAR_ARRAY_FIELD(tableName);
×
966
  COPY_SCALAR_FIELD(vgId);
×
967
  COPY_OBJECT_FIELD(epSet, sizeof(SEpSet));
×
968
  COPY_SCALAR_FIELD(explain);
×
969
  return TSDB_CODE_SUCCESS;
×
970
}
971

972
static int32_t physiDeleterCopy(const SDataDeleterNode* pSrc, SDataDeleterNode* pDst) {
×
973
  COPY_BASE_OBJECT_FIELD(sink, dataSinkNodeCopy);
×
974
  COPY_SCALAR_FIELD(tableId);
×
975
  COPY_SCALAR_FIELD(tableType);
×
976
  COPY_CHAR_ARRAY_FIELD(tableFName);
×
977
  COPY_CHAR_ARRAY_FIELD(tsColName);
×
978
  COPY_OBJECT_FIELD(deleteTimeRange, sizeof(STimeWindow));
×
979
  return TSDB_CODE_SUCCESS;
×
980
}
981

982
static int32_t physiSubplanCopy(const SSubplan* pSrc, SSubplan* pDst) {
×
983
  COPY_SCALAR_FIELD(type);
×
984
  COPY_OBJECT_FIELD(id, sizeof(SSubplanId));
×
985
  COPY_SCALAR_FIELD(subplanType);
×
986
  COPY_SCALAR_FIELD(msgType);
×
987
  COPY_SCALAR_FIELD(level);
×
988
  COPY_CHAR_ARRAY_FIELD(dbFName);
×
989
  COPY_CHAR_ARRAY_FIELD(user);
×
990
  COPY_OBJECT_FIELD(execNode, sizeof(SQueryNodeAddr));
×
991
  CLONE_NODE_LIST_FIELD(pChildren);
×
992
  CLONE_NODE_LIST_FIELD(pParents);
×
993
  CLONE_NODE_FIELD(pNode);
×
994
  CLONE_NODE_FIELD(pDataSink);
×
995
  CLONE_NODE_FIELD(pTagCond);
×
996
  CLONE_NODE_FIELD(pTagIndexCond);
×
997
  //STREAMTODO pVTables
998
  COPY_SCALAR_FIELD(showRewrite);
×
999
  COPY_SCALAR_FIELD(isView);
×
1000
  COPY_SCALAR_FIELD(isAudit);
×
1001
  COPY_SCALAR_FIELD(dynamicRowThreshold);
×
1002
  COPY_SCALAR_FIELD(rowsThreshold);
×
1003
  COPY_SCALAR_FIELD(processOneBlock);
×
1004
  COPY_SCALAR_FIELD(dynTbname);
×
1005
  return TSDB_CODE_SUCCESS;
×
1006
}
1007

1008

1009
static int32_t dataBlockDescCopy(const SDataBlockDescNode* pSrc, SDataBlockDescNode* pDst) {
51,132✔
1010
  COPY_SCALAR_FIELD(dataBlockId);
51,132✔
1011
  CLONE_NODE_LIST_FIELD(pSlots);
51,132!
1012
  COPY_SCALAR_FIELD(totalRowSize);
51,148✔
1013
  COPY_SCALAR_FIELD(outputRowSize);
51,148✔
1014
  COPY_SCALAR_FIELD(precision);
51,148✔
1015
  return TSDB_CODE_SUCCESS;
51,148✔
1016
}
1017

1018
static int32_t slotDescCopy(const SSlotDescNode* pSrc, SSlotDescNode* pDst) {
266,106✔
1019
  COPY_SCALAR_FIELD(slotId);
266,106✔
1020
  COPY_OBJECT_FIELD(dataType, sizeof(SDataType));
266,106✔
1021
  COPY_SCALAR_FIELD(reserve);
266,106✔
1022
  COPY_SCALAR_FIELD(output);
266,106✔
1023
  COPY_SCALAR_FIELD(tag);
266,106✔
1024
  return TSDB_CODE_SUCCESS;
266,106✔
1025
}
1026

1027
static int32_t downstreamSourceCopy(const SDownstreamSourceNode* pSrc, SDownstreamSourceNode* pDst) {
20,418✔
1028
  COPY_OBJECT_FIELD(addr, sizeof(SQueryNodeAddr));
20,418✔
1029
  COPY_SCALAR_FIELD(clientId);
20,418✔
1030
  COPY_SCALAR_FIELD(taskId);
20,418✔
1031
  COPY_SCALAR_FIELD(sId);
20,418✔
1032
  COPY_SCALAR_FIELD(execId);
20,418✔
1033
  COPY_SCALAR_FIELD(fetchMsgType);
20,418✔
1034
  COPY_SCALAR_FIELD(localExec);
20,418✔
1035
  return TSDB_CODE_SUCCESS;
20,418✔
1036
}
1037

1038
static int32_t selectStmtCopy(const SSelectStmt* pSrc, SSelectStmt* pDst) {
52✔
1039
  COPY_SCALAR_FIELD(isDistinct);
52✔
1040
  CLONE_NODE_LIST_FIELD(pProjectionList);
52!
1041
  CLONE_NODE_FIELD(pFromTable);
52!
1042
  CLONE_NODE_FIELD(pWhere);
52!
1043
  CLONE_NODE_LIST_FIELD(pPartitionByList);
52!
1044
  CLONE_NODE_FIELD(pWindow);
52!
1045
  CLONE_NODE_LIST_FIELD(pGroupByList);
52!
1046
  CLONE_NODE_FIELD(pHaving);
52!
1047
  CLONE_NODE_LIST_FIELD(pOrderByList);
52!
1048
  CLONE_NODE_FIELD_EX(pLimit, SLimitNode*);
52!
1049
  CLONE_NODE_FIELD_EX(pLimit, SLimitNode*);
52!
1050
  COPY_CHAR_ARRAY_FIELD(stmtName);
52✔
1051
  COPY_SCALAR_FIELD(precision);
52✔
1052
  COPY_SCALAR_FIELD(isSubquery);
52✔
1053
  COPY_SCALAR_FIELD(isEmptyResult);
52✔
1054
  COPY_SCALAR_FIELD(timeLineResMode);
52✔
1055
  COPY_SCALAR_FIELD(timeLineFromOrderBy);
52✔
1056
  COPY_SCALAR_FIELD(timeLineCurMode);
52✔
1057
  COPY_SCALAR_FIELD(hasAggFuncs);
52✔
1058
  COPY_SCALAR_FIELD(hasRepeatScanFuncs);
52✔
1059
  COPY_SCALAR_FIELD(hasIndefiniteRowsFunc);
52✔
1060
  COPY_SCALAR_FIELD(hasMultiRowsFunc);
52✔
1061
  COPY_SCALAR_FIELD(hasSelectFunc);
52✔
1062
  COPY_SCALAR_FIELD(hasSelectValFunc);
52✔
1063
  COPY_SCALAR_FIELD(hasOtherVectorFunc);
52✔
1064
  COPY_SCALAR_FIELD(hasUniqueFunc);
52✔
1065
  COPY_SCALAR_FIELD(hasTailFunc);
52✔
1066
  COPY_SCALAR_FIELD(hasInterpFunc);
52✔
1067
  COPY_SCALAR_FIELD(hasInterpPseudoColFunc);
52✔
1068
  COPY_SCALAR_FIELD(hasForecastFunc);
52✔
1069
  COPY_SCALAR_FIELD(hasForecastPseudoColFunc);
52✔
1070
  COPY_SCALAR_FIELD(hasLastRowFunc);
52✔
1071
  COPY_SCALAR_FIELD(hasLastFunc);
52✔
1072
  COPY_SCALAR_FIELD(hasTimeLineFunc);
52✔
1073
  COPY_SCALAR_FIELD(hasCountFunc);
52✔
1074
  COPY_SCALAR_FIELD(hasUdaf);
52✔
1075
  COPY_SCALAR_FIELD(hasStateKey);
52✔
1076
  COPY_SCALAR_FIELD(hasTwaOrElapsedFunc);
52✔
1077
  COPY_SCALAR_FIELD(onlyHasKeepOrderFunc);
52✔
1078
  COPY_SCALAR_FIELD(groupSort);
52✔
1079
  COPY_SCALAR_FIELD(tagScan);
52✔
1080
  COPY_SCALAR_FIELD(joinContains);
52✔
1081
  COPY_SCALAR_FIELD(mixSysTableAndActualTable);
52✔
1082

1083
  CLONE_NODE_LIST_FIELD(pHint);
52!
1084
  return TSDB_CODE_SUCCESS;
52✔
1085
}
1086

1087
static int32_t setOperatorCopy(const SSetOperator* pSrc, SSetOperator* pDst) {
×
1088
  COPY_SCALAR_FIELD(opType);
×
1089
  CLONE_NODE_LIST_FIELD(pProjectionList);
×
1090
  CLONE_NODE_FIELD(pLeft);
×
1091
  CLONE_NODE_FIELD(pRight);
×
1092
  CLONE_NODE_LIST_FIELD(pOrderByList);
×
1093
  CLONE_NODE_FIELD(pLimit);
×
1094
  COPY_CHAR_ARRAY_FIELD(stmtName);
×
1095
  COPY_SCALAR_FIELD(precision);
×
1096
  COPY_SCALAR_FIELD(timeLineResMode);
×
1097
  COPY_SCALAR_FIELD(timeLineFromOrderBy);
×
1098
  
1099
  return TSDB_CODE_SUCCESS;
×
1100
}
1101

1102
int32_t nodesCloneNode(const SNode* pNode, SNode** ppNode) {
9,113,658✔
1103
  if (NULL == pNode) {
9,113,658✔
1104
    return TSDB_CODE_SUCCESS;
97,504✔
1105
  }
1106

1107
  SNode* pDst = NULL;
9,016,154✔
1108
  int32_t code = nodesMakeNode(nodeType(pNode), &pDst);
9,016,154✔
1109
  if (TSDB_CODE_SUCCESS != code) {
8,998,122!
1110
    return code;
×
1111
  }
1112

1113
  switch (nodeType(pNode)) {
8,998,122!
1114
    case QUERY_NODE_COLUMN:
3,014,494✔
1115
      code = columnNodeCopy((const SColumnNode*)pNode, (SColumnNode*)pDst);
3,014,494✔
1116
      break;
3,014,321✔
1117
    case QUERY_NODE_COLUMN_DEF:
×
1118
      code = columnDefNodeCopy((const SColumnDefNode*)pNode, (SColumnDefNode*)pDst);
×
1119
      break;
×
1120
    case QUERY_NODE_VALUE:
4,711,917✔
1121
      code = valueNodeCopy((const SValueNode*)pNode, (SValueNode*)pDst);
4,711,917✔
1122
      break;
4,777,696✔
1123
    case QUERY_NODE_OPERATOR:
83,419✔
1124
      code = operatorNodeCopy((const SOperatorNode*)pNode, (SOperatorNode*)pDst);
83,419✔
1125
      break;
83,414✔
1126
    case QUERY_NODE_LOGIC_CONDITION:
14,148✔
1127
      code = logicConditionNodeCopy((const SLogicConditionNode*)pNode, (SLogicConditionNode*)pDst);
14,148✔
1128
      break;
14,150✔
1129
    case QUERY_NODE_FUNCTION:
545,897✔
1130
      code = functionNodeCopy((const SFunctionNode*)pNode, (SFunctionNode*)pDst);
545,897✔
1131
      break;
545,893✔
1132
    case QUERY_NODE_REAL_TABLE:
20,111✔
1133
      code = realTableNodeCopy((const SRealTableNode*)pNode, (SRealTableNode*)pDst);
20,111✔
1134
      break;
20,111✔
1135
    case QUERY_NODE_TEMP_TABLE:
5✔
1136
      code = tempTableNodeCopy((const STempTableNode*)pNode, (STempTableNode*)pDst);
5✔
1137
      break;
5✔
1138
    case QUERY_NODE_JOIN_TABLE:
3✔
1139
      code = joinTableNodeCopy((const SJoinTableNode*)pNode, (SJoinTableNode*)pDst);
3✔
1140
      break;
3✔
1141
    case QUERY_NODE_PLACE_HOLDER_TABLE:
×
1142
      code = placeHolderTableNodeCopy((const SPlaceHolderTableNode*)pNode, (SPlaceHolderTableNode*)pDst);
×
1143
      break;
×
1144
    case QUERY_NODE_GROUPING_SET:
3,290✔
1145
      code = groupingSetNodeCopy((const SGroupingSetNode*)pNode, (SGroupingSetNode*)pDst);
3,290✔
1146
      break;
3,290✔
1147
    case QUERY_NODE_ORDER_BY_EXPR:
16,169✔
1148
      code = orderByExprNodeCopy((const SOrderByExprNode*)pNode, (SOrderByExprNode*)pDst);
16,169✔
1149
      break;
16,168✔
1150
    case QUERY_NODE_LIMIT:
17,959✔
1151
      code = limitNodeCopy((const SLimitNode*)pNode, (SLimitNode*)pDst);
17,959✔
1152
      break;
17,959✔
1153
    case QUERY_NODE_STATE_WINDOW:
3✔
1154
      code = stateWindowNodeCopy((const SStateWindowNode*)pNode, (SStateWindowNode*)pDst);
3✔
1155
      break;
3✔
1156
    case QUERY_NODE_EVENT_WINDOW:
×
1157
      code = eventWindowNodeCopy((const SEventWindowNode*)pNode, (SEventWindowNode*)pDst);
×
1158
      break;
×
1159
    case QUERY_NODE_COUNT_WINDOW:
×
1160
      code = countWindowNodeCopy((const SCountWindowNode*)pNode, (SCountWindowNode*)pDst);
×
1161
      break;
×
1162
    case QUERY_NODE_ANOMALY_WINDOW:
×
1163
      code = anomalyWindowNodeCopy((const SAnomalyWindowNode*)pNode, (SAnomalyWindowNode*)pDst);
×
1164
      break;
×
1165
    case QUERY_NODE_SESSION_WINDOW:
3✔
1166
      code = sessionWindowNodeCopy((const SSessionWindowNode*)pNode, (SSessionWindowNode*)pDst);
3✔
1167
      break;
3✔
1168
    case QUERY_NODE_INTERVAL_WINDOW:
3✔
1169
      code = intervalWindowNodeCopy((const SIntervalWindowNode*)pNode, (SIntervalWindowNode*)pDst);
3✔
1170
      break;
3✔
1171
    case QUERY_NODE_NODE_LIST:
4,442✔
1172
      code = nodeListNodeCopy((const SNodeListNode*)pNode, (SNodeListNode*)pDst);
4,442✔
1173
      break;
4,442✔
1174
    case QUERY_NODE_FILL:
6✔
1175
      code = fillNodeCopy((const SFillNode*)pNode, (SFillNode*)pDst);
6✔
1176
      break;
6✔
1177
    case QUERY_NODE_TARGET:
×
1178
      code = targetNodeCopy((const STargetNode*)pNode, (STargetNode*)pDst);
×
1179
      break;
×
1180
    case QUERY_NODE_DATABLOCK_DESC:
51,131✔
1181
      code = dataBlockDescCopy((const SDataBlockDescNode*)pNode, (SDataBlockDescNode*)pDst);
51,131✔
1182
      break;
51,149✔
1183
    case QUERY_NODE_SLOT_DESC:
266,110✔
1184
      code = slotDescCopy((const SSlotDescNode*)pNode, (SSlotDescNode*)pDst);
266,110✔
1185
      break;
266,101✔
1186
    case QUERY_NODE_DOWNSTREAM_SOURCE:
20,418✔
1187
      code = downstreamSourceCopy((const SDownstreamSourceNode*)pNode, (SDownstreamSourceNode*)pDst);
20,418✔
1188
      break;
20,418✔
1189
    case QUERY_NODE_LEFT_VALUE:
846✔
1190
      code = TSDB_CODE_SUCCESS;
846✔
1191
      break;
846✔
1192
    case QUERY_NODE_WHEN_THEN:
82✔
1193
      code = whenThenNodeCopy((const SWhenThenNode*)pNode, (SWhenThenNode*)pDst);
82✔
1194
      break;
82✔
1195
    case QUERY_NODE_CASE_WHEN:
58✔
1196
      code = caseWhenNodeCopy((const SCaseWhenNode*)pNode, (SCaseWhenNode*)pDst);
58✔
1197
      break;
58✔
1198
    case QUERY_NODE_HINT:
×
1199
      code = hintNodeCopy((const SHintNode*)pNode, (SHintNode*)pDst);
×
1200
      break;
×
1201
    case QUERY_NODE_WINDOW_OFFSET:
×
1202
      code = windowOffsetCopy((const SWindowOffsetNode*)pNode, (SWindowOffsetNode*)pDst);
×
1203
      break;
×
1204
    case QUERY_NODE_VIRTUAL_TABLE:
×
1205
      code = virtualTableNodeCopy((const SVirtualTableNode*)pNode, (SVirtualTableNode*)pDst);
×
1206
      break;
×
1207
    case QUERY_NODE_TIME_RANGE:
×
1208
      code = timeRangeNodeCopy((const STimeRangeNode*)pNode, (STimeRangeNode*)pDst);
×
1209
      break;
×
1210
    case QUERY_NODE_SET_OPERATOR:
×
1211
      code = setOperatorCopy((const SSetOperator*)pNode, (SSetOperator*)pDst);
×
1212
      break;
×
1213
    case QUERY_NODE_SELECT_STMT:
52✔
1214
      code = selectStmtCopy((const SSelectStmt*)pNode, (SSelectStmt*)pDst);
52✔
1215
      break;
52✔
1216
    case QUERY_NODE_LOGIC_PLAN_SCAN:
39,019✔
1217
      code = logicScanCopy((const SScanLogicNode*)pNode, (SScanLogicNode*)pDst);
39,019✔
1218
      break;
39,023✔
1219
    case QUERY_NODE_LOGIC_PLAN_JOIN:
2,619✔
1220
      code = logicJoinCopy((const SJoinLogicNode*)pNode, (SJoinLogicNode*)pDst);
2,619✔
1221
      break;
2,619✔
1222
    case QUERY_NODE_LOGIC_PLAN_AGG:
18,516✔
1223
      code = logicAggCopy((const SAggLogicNode*)pNode, (SAggLogicNode*)pDst);
18,516✔
1224
      break;
18,537✔
1225
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
11,922✔
1226
      code = logicProjectCopy((const SProjectLogicNode*)pNode, (SProjectLogicNode*)pDst);
11,922✔
1227
      break;
11,925✔
1228
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
127,662✔
1229
      code = logicVnodeModifCopy((const SVnodeModifyLogicNode*)pNode, (SVnodeModifyLogicNode*)pDst);
127,662✔
1230
      break;
127,659✔
1231
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
16,067✔
1232
      code = logicExchangeCopy((const SExchangeLogicNode*)pNode, (SExchangeLogicNode*)pDst);
16,067✔
1233
      break;
16,067✔
1234
    case QUERY_NODE_LOGIC_PLAN_MERGE:
2,051✔
1235
      code = logicMergeCopy((const SMergeLogicNode*)pNode, (SMergeLogicNode*)pDst);
2,051✔
1236
      break;
2,051✔
1237
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
4,844✔
1238
      code = logicWindowCopy((const SWindowLogicNode*)pNode, (SWindowLogicNode*)pDst);
4,844✔
1239
      break;
4,844✔
1240
    case QUERY_NODE_LOGIC_PLAN_FILL:
43✔
1241
      code = logicFillCopy((const SFillLogicNode*)pNode, (SFillLogicNode*)pDst);
43✔
1242
      break;
43✔
1243
    case QUERY_NODE_LOGIC_PLAN_SORT:
2,197✔
1244
      code = logicSortCopy((const SSortLogicNode*)pNode, (SSortLogicNode*)pDst);
2,197✔
1245
      break;
2,197✔
1246
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
179✔
1247
      code = logicPartitionCopy((const SPartitionLogicNode*)pNode, (SPartitionLogicNode*)pDst);
179✔
1248
      break;
179✔
1249
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
48✔
1250
      code = logicIndefRowsFuncCopy((const SIndefRowsFuncLogicNode*)pNode, (SIndefRowsFuncLogicNode*)pDst);
48✔
1251
      break;
48✔
1252
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
331✔
1253
      code = logicInterpFuncCopy((const SInterpFuncLogicNode*)pNode, (SInterpFuncLogicNode*)pDst);
331✔
1254
      break;
331✔
1255
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
1256
      code = logicForecastFuncCopy((const SForecastFuncLogicNode*)pNode, (SForecastFuncLogicNode*)pDst);
×
1257
      break;
×
1258
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
1259
      code = logicGroupCacheCopy((const SGroupCacheLogicNode*)pNode, (SGroupCacheLogicNode*)pDst);
×
1260
      break;
×
1261
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
1262
      code = logicDynQueryCtrlCopy((const SDynQueryCtrlLogicNode*)pNode, (SDynQueryCtrlLogicNode*)pDst);
×
1263
      break;
×
1264
    case QUERY_NODE_LOGIC_PLAN_VIRTUAL_TABLE_SCAN:
2,362✔
1265
      code = logicVirtualScanCopy((const SVirtualScanLogicNode *)pNode, (SVirtualScanLogicNode*)pDst);
2,362✔
1266
      break;
2,362✔
1267
    case QUERY_NODE_LOGIC_SUBPLAN:
3✔
1268
      code = logicSubplanCopy((const SLogicSubplan*)pNode, (SLogicSubplan*)pDst);
3✔
1269
      break;
3✔
1270
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
3✔
1271
      code = physiTagScanCopy((const STagScanPhysiNode*)pNode, (STagScanPhysiNode*)pDst);
3✔
1272
      break;
3✔
1273
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
×
1274
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SEQ_SCAN:
1275
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
1276
      code = physiTableScanCopy((const STableScanPhysiNode*)pNode, (STableScanPhysiNode*)pDst);
×
1277
      break;
×
1278
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
3✔
1279
      code = physiSysTableScanCopy((const SSystemTableScanPhysiNode*)pNode, (SSystemTableScanPhysiNode*)pDst);
3✔
1280
      break;
3✔
1281
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
×
1282
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
1283
      code = physiIntervalCopy((const SIntervalPhysiNode*)pNode, (SIntervalPhysiNode*)pDst);
×
1284
      break;
×
1285
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
3✔
1286
      code = physiPartitionCopy((const SPartitionPhysiNode*)pNode, (SPartitionPhysiNode*)pDst);
3✔
1287
      break;
3✔
1288
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
×
1289
      code = physiVirtualTableScanCopy((const SVirtualScanPhysiNode*)pNode, (SVirtualScanPhysiNode*)pDst);
×
1290
      break;
×
1291
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
×
1292
      code = physiProjectCopy((const SProjectPhysiNode*)pNode, (SProjectPhysiNode*)pDst);
×
1293
      break;
×
1294
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:  
×
1295
      code = physiDispatchCopy((const SDataDispatcherNode*)pNode, (SDataDispatcherNode*)pDst);
×
1296
      break;
×
1297
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
×
1298
      code = physiQueryInserterCopy((const SQueryInserterNode*)pNode, (SQueryInserterNode*)pDst);
×
1299
      break;
×
1300
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
×
1301
      code = physiDeleterCopy((const SDataDeleterNode*)pNode, (SDataDeleterNode*)pDst);
×
1302
      break;
×
1303
    case QUERY_NODE_PHYSICAL_SUBPLAN:
×
1304
      code = physiSubplanCopy((const SSubplan*)pNode, (SSubplan*)pDst);
×
1305
      break;
×
1306
    default:
×
1307
      break;
×
1308
  }
1309

1310
  if (TSDB_CODE_SUCCESS != code) {
9,063,754!
1311
    terrno = TSDB_CODE_OUT_OF_MEMORY;
×
1312
    nodesDestroyNode(pDst);
×
1313
    nodesError("nodesCloneNode failed node = %s", nodesNodeName(nodeType(pNode)));
×
1314
    return code;
×
1315
  }
1316
  *ppNode = pDst;
9,063,754✔
1317
  return code;
9,063,754✔
1318
}
1319

1320
int32_t nodesCloneList(const SNodeList* pList, SNodeList** ppList) {
1,068,253✔
1321
  if (NULL == pList) {
1,068,253✔
1322
    return TSDB_CODE_SUCCESS;
73,421✔
1323
  }
1324

1325
  SNodeList* pDst = NULL;
994,832✔
1326
  SNode*     pNode;
1327
  FOREACH(pNode, pList) {
8,071,155!
1328
    SNode* pNew = NULL;
7,078,241✔
1329
    int32_t code = nodesCloneNode(pNode, &pNew);
7,078,241✔
1330
    if (TSDB_CODE_SUCCESS != code) {
7,113,577!
1331
      nodesDestroyList(pDst);
×
1332
      return code;
×
1333
    }
1334
    code = nodesListMakeStrictAppend(&pDst, pNew);
7,113,577✔
1335
    if (TSDB_CODE_SUCCESS != code) {
7,084,696✔
1336
      nodesDestroyList(pDst);
8,373✔
1337
      return code;
×
1338
    }
1339
  }
1340
  *ppList = pDst;
992,914✔
1341
  return TSDB_CODE_SUCCESS;
992,914✔
1342
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc