vitess.io/vitess@v0.16.2/go/vt/sqlparser/ast_copy_on_rewrite.go (about) 1 /* 2 Copyright 2023 The Vitess Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 // Code generated by ASTHelperGen. DO NOT EDIT. 17 18 package sqlparser 19 20 func (c *cow) copyOnRewriteSQLNode(n SQLNode, parent SQLNode) (out SQLNode, changed bool) { 21 if n == nil || c.cursor.stop { 22 return n, false 23 } 24 switch n := n.(type) { 25 case *AddColumns: 26 return c.copyOnRewriteRefOfAddColumns(n, parent) 27 case *AddConstraintDefinition: 28 return c.copyOnRewriteRefOfAddConstraintDefinition(n, parent) 29 case *AddIndexDefinition: 30 return c.copyOnRewriteRefOfAddIndexDefinition(n, parent) 31 case AlgorithmValue: 32 return c.copyOnRewriteAlgorithmValue(n, parent) 33 case *AliasedExpr: 34 return c.copyOnRewriteRefOfAliasedExpr(n, parent) 35 case *AliasedTableExpr: 36 return c.copyOnRewriteRefOfAliasedTableExpr(n, parent) 37 case *AlterCharset: 38 return c.copyOnRewriteRefOfAlterCharset(n, parent) 39 case *AlterCheck: 40 return c.copyOnRewriteRefOfAlterCheck(n, parent) 41 case *AlterColumn: 42 return c.copyOnRewriteRefOfAlterColumn(n, parent) 43 case *AlterDatabase: 44 return c.copyOnRewriteRefOfAlterDatabase(n, parent) 45 case *AlterIndex: 46 return c.copyOnRewriteRefOfAlterIndex(n, parent) 47 case *AlterMigration: 48 return c.copyOnRewriteRefOfAlterMigration(n, parent) 49 case *AlterTable: 50 return c.copyOnRewriteRefOfAlterTable(n, parent) 51 case *AlterView: 52 return c.copyOnRewriteRefOfAlterView(n, parent) 53 case *AlterVschema: 54 return c.copyOnRewriteRefOfAlterVschema(n, parent) 55 case *AndExpr: 56 return c.copyOnRewriteRefOfAndExpr(n, parent) 57 case Argument: 58 return c.copyOnRewriteArgument(n, parent) 59 case *ArgumentLessWindowExpr: 60 return c.copyOnRewriteRefOfArgumentLessWindowExpr(n, parent) 61 case *AutoIncSpec: 62 return c.copyOnRewriteRefOfAutoIncSpec(n, parent) 63 case *Avg: 64 return c.copyOnRewriteRefOfAvg(n, parent) 65 case *Begin: 66 return c.copyOnRewriteRefOfBegin(n, parent) 67 case *BetweenExpr: 68 return c.copyOnRewriteRefOfBetweenExpr(n, parent) 69 case *BinaryExpr: 70 return c.copyOnRewriteRefOfBinaryExpr(n, parent) 71 case *BitAnd: 72 return c.copyOnRewriteRefOfBitAnd(n, parent) 73 case *BitOr: 74 return c.copyOnRewriteRefOfBitOr(n, parent) 75 case *BitXor: 76 return c.copyOnRewriteRefOfBitXor(n, parent) 77 case BoolVal: 78 return c.copyOnRewriteBoolVal(n, parent) 79 case *CallProc: 80 return c.copyOnRewriteRefOfCallProc(n, parent) 81 case *CaseExpr: 82 return c.copyOnRewriteRefOfCaseExpr(n, parent) 83 case *CastExpr: 84 return c.copyOnRewriteRefOfCastExpr(n, parent) 85 case *ChangeColumn: 86 return c.copyOnRewriteRefOfChangeColumn(n, parent) 87 case *CharExpr: 88 return c.copyOnRewriteRefOfCharExpr(n, parent) 89 case *CheckConstraintDefinition: 90 return c.copyOnRewriteRefOfCheckConstraintDefinition(n, parent) 91 case *ColName: 92 return c.copyOnRewriteRefOfColName(n, parent) 93 case *CollateExpr: 94 return c.copyOnRewriteRefOfCollateExpr(n, parent) 95 case *ColumnDefinition: 96 return c.copyOnRewriteRefOfColumnDefinition(n, parent) 97 case *ColumnType: 98 return c.copyOnRewriteRefOfColumnType(n, parent) 99 case Columns: 100 return c.copyOnRewriteColumns(n, parent) 101 case *CommentOnly: 102 return c.copyOnRewriteRefOfCommentOnly(n, parent) 103 case *Commit: 104 return c.copyOnRewriteRefOfCommit(n, parent) 105 case *CommonTableExpr: 106 return c.copyOnRewriteRefOfCommonTableExpr(n, parent) 107 case *ComparisonExpr: 108 return c.copyOnRewriteRefOfComparisonExpr(n, parent) 109 case *ConstraintDefinition: 110 return c.copyOnRewriteRefOfConstraintDefinition(n, parent) 111 case *ConvertExpr: 112 return c.copyOnRewriteRefOfConvertExpr(n, parent) 113 case *ConvertType: 114 return c.copyOnRewriteRefOfConvertType(n, parent) 115 case *ConvertUsingExpr: 116 return c.copyOnRewriteRefOfConvertUsingExpr(n, parent) 117 case *Count: 118 return c.copyOnRewriteRefOfCount(n, parent) 119 case *CountStar: 120 return c.copyOnRewriteRefOfCountStar(n, parent) 121 case *CreateDatabase: 122 return c.copyOnRewriteRefOfCreateDatabase(n, parent) 123 case *CreateTable: 124 return c.copyOnRewriteRefOfCreateTable(n, parent) 125 case *CreateView: 126 return c.copyOnRewriteRefOfCreateView(n, parent) 127 case *CurTimeFuncExpr: 128 return c.copyOnRewriteRefOfCurTimeFuncExpr(n, parent) 129 case *DeallocateStmt: 130 return c.copyOnRewriteRefOfDeallocateStmt(n, parent) 131 case *Default: 132 return c.copyOnRewriteRefOfDefault(n, parent) 133 case *Definer: 134 return c.copyOnRewriteRefOfDefiner(n, parent) 135 case *Delete: 136 return c.copyOnRewriteRefOfDelete(n, parent) 137 case *DerivedTable: 138 return c.copyOnRewriteRefOfDerivedTable(n, parent) 139 case *DropColumn: 140 return c.copyOnRewriteRefOfDropColumn(n, parent) 141 case *DropDatabase: 142 return c.copyOnRewriteRefOfDropDatabase(n, parent) 143 case *DropKey: 144 return c.copyOnRewriteRefOfDropKey(n, parent) 145 case *DropTable: 146 return c.copyOnRewriteRefOfDropTable(n, parent) 147 case *DropView: 148 return c.copyOnRewriteRefOfDropView(n, parent) 149 case *ExecuteStmt: 150 return c.copyOnRewriteRefOfExecuteStmt(n, parent) 151 case *ExistsExpr: 152 return c.copyOnRewriteRefOfExistsExpr(n, parent) 153 case *ExplainStmt: 154 return c.copyOnRewriteRefOfExplainStmt(n, parent) 155 case *ExplainTab: 156 return c.copyOnRewriteRefOfExplainTab(n, parent) 157 case Exprs: 158 return c.copyOnRewriteExprs(n, parent) 159 case *ExtractFuncExpr: 160 return c.copyOnRewriteRefOfExtractFuncExpr(n, parent) 161 case *ExtractValueExpr: 162 return c.copyOnRewriteRefOfExtractValueExpr(n, parent) 163 case *ExtractedSubquery: 164 return c.copyOnRewriteRefOfExtractedSubquery(n, parent) 165 case *FirstOrLastValueExpr: 166 return c.copyOnRewriteRefOfFirstOrLastValueExpr(n, parent) 167 case *Flush: 168 return c.copyOnRewriteRefOfFlush(n, parent) 169 case *Force: 170 return c.copyOnRewriteRefOfForce(n, parent) 171 case *ForeignKeyDefinition: 172 return c.copyOnRewriteRefOfForeignKeyDefinition(n, parent) 173 case *FrameClause: 174 return c.copyOnRewriteRefOfFrameClause(n, parent) 175 case *FramePoint: 176 return c.copyOnRewriteRefOfFramePoint(n, parent) 177 case *FromFirstLastClause: 178 return c.copyOnRewriteRefOfFromFirstLastClause(n, parent) 179 case *FuncExpr: 180 return c.copyOnRewriteRefOfFuncExpr(n, parent) 181 case *GTIDFuncExpr: 182 return c.copyOnRewriteRefOfGTIDFuncExpr(n, parent) 183 case GroupBy: 184 return c.copyOnRewriteGroupBy(n, parent) 185 case *GroupConcatExpr: 186 return c.copyOnRewriteRefOfGroupConcatExpr(n, parent) 187 case IdentifierCI: 188 return c.copyOnRewriteIdentifierCI(n, parent) 189 case IdentifierCS: 190 return c.copyOnRewriteIdentifierCS(n, parent) 191 case *IndexDefinition: 192 return c.copyOnRewriteRefOfIndexDefinition(n, parent) 193 case *IndexHint: 194 return c.copyOnRewriteRefOfIndexHint(n, parent) 195 case IndexHints: 196 return c.copyOnRewriteIndexHints(n, parent) 197 case *IndexInfo: 198 return c.copyOnRewriteRefOfIndexInfo(n, parent) 199 case *Insert: 200 return c.copyOnRewriteRefOfInsert(n, parent) 201 case *InsertExpr: 202 return c.copyOnRewriteRefOfInsertExpr(n, parent) 203 case *IntervalExpr: 204 return c.copyOnRewriteRefOfIntervalExpr(n, parent) 205 case *IntervalFuncExpr: 206 return c.copyOnRewriteRefOfIntervalFuncExpr(n, parent) 207 case *IntroducerExpr: 208 return c.copyOnRewriteRefOfIntroducerExpr(n, parent) 209 case *IsExpr: 210 return c.copyOnRewriteRefOfIsExpr(n, parent) 211 case *JSONArrayExpr: 212 return c.copyOnRewriteRefOfJSONArrayExpr(n, parent) 213 case *JSONAttributesExpr: 214 return c.copyOnRewriteRefOfJSONAttributesExpr(n, parent) 215 case *JSONContainsExpr: 216 return c.copyOnRewriteRefOfJSONContainsExpr(n, parent) 217 case *JSONContainsPathExpr: 218 return c.copyOnRewriteRefOfJSONContainsPathExpr(n, parent) 219 case *JSONExtractExpr: 220 return c.copyOnRewriteRefOfJSONExtractExpr(n, parent) 221 case *JSONKeysExpr: 222 return c.copyOnRewriteRefOfJSONKeysExpr(n, parent) 223 case *JSONObjectExpr: 224 return c.copyOnRewriteRefOfJSONObjectExpr(n, parent) 225 case *JSONObjectParam: 226 return c.copyOnRewriteRefOfJSONObjectParam(n, parent) 227 case *JSONOverlapsExpr: 228 return c.copyOnRewriteRefOfJSONOverlapsExpr(n, parent) 229 case *JSONPrettyExpr: 230 return c.copyOnRewriteRefOfJSONPrettyExpr(n, parent) 231 case *JSONQuoteExpr: 232 return c.copyOnRewriteRefOfJSONQuoteExpr(n, parent) 233 case *JSONRemoveExpr: 234 return c.copyOnRewriteRefOfJSONRemoveExpr(n, parent) 235 case *JSONSchemaValidFuncExpr: 236 return c.copyOnRewriteRefOfJSONSchemaValidFuncExpr(n, parent) 237 case *JSONSchemaValidationReportFuncExpr: 238 return c.copyOnRewriteRefOfJSONSchemaValidationReportFuncExpr(n, parent) 239 case *JSONSearchExpr: 240 return c.copyOnRewriteRefOfJSONSearchExpr(n, parent) 241 case *JSONStorageFreeExpr: 242 return c.copyOnRewriteRefOfJSONStorageFreeExpr(n, parent) 243 case *JSONStorageSizeExpr: 244 return c.copyOnRewriteRefOfJSONStorageSizeExpr(n, parent) 245 case *JSONTableExpr: 246 return c.copyOnRewriteRefOfJSONTableExpr(n, parent) 247 case *JSONUnquoteExpr: 248 return c.copyOnRewriteRefOfJSONUnquoteExpr(n, parent) 249 case *JSONValueExpr: 250 return c.copyOnRewriteRefOfJSONValueExpr(n, parent) 251 case *JSONValueMergeExpr: 252 return c.copyOnRewriteRefOfJSONValueMergeExpr(n, parent) 253 case *JSONValueModifierExpr: 254 return c.copyOnRewriteRefOfJSONValueModifierExpr(n, parent) 255 case *JoinCondition: 256 return c.copyOnRewriteRefOfJoinCondition(n, parent) 257 case *JoinTableExpr: 258 return c.copyOnRewriteRefOfJoinTableExpr(n, parent) 259 case *JtColumnDefinition: 260 return c.copyOnRewriteRefOfJtColumnDefinition(n, parent) 261 case *JtOnResponse: 262 return c.copyOnRewriteRefOfJtOnResponse(n, parent) 263 case *KeyState: 264 return c.copyOnRewriteRefOfKeyState(n, parent) 265 case *LagLeadExpr: 266 return c.copyOnRewriteRefOfLagLeadExpr(n, parent) 267 case *Limit: 268 return c.copyOnRewriteRefOfLimit(n, parent) 269 case ListArg: 270 return c.copyOnRewriteListArg(n, parent) 271 case *Literal: 272 return c.copyOnRewriteRefOfLiteral(n, parent) 273 case *Load: 274 return c.copyOnRewriteRefOfLoad(n, parent) 275 case *LocateExpr: 276 return c.copyOnRewriteRefOfLocateExpr(n, parent) 277 case *LockOption: 278 return c.copyOnRewriteRefOfLockOption(n, parent) 279 case *LockTables: 280 return c.copyOnRewriteRefOfLockTables(n, parent) 281 case *LockingFunc: 282 return c.copyOnRewriteRefOfLockingFunc(n, parent) 283 case MatchAction: 284 return c.copyOnRewriteMatchAction(n, parent) 285 case *MatchExpr: 286 return c.copyOnRewriteRefOfMatchExpr(n, parent) 287 case *Max: 288 return c.copyOnRewriteRefOfMax(n, parent) 289 case *MemberOfExpr: 290 return c.copyOnRewriteRefOfMemberOfExpr(n, parent) 291 case *Min: 292 return c.copyOnRewriteRefOfMin(n, parent) 293 case *ModifyColumn: 294 return c.copyOnRewriteRefOfModifyColumn(n, parent) 295 case *NTHValueExpr: 296 return c.copyOnRewriteRefOfNTHValueExpr(n, parent) 297 case *NamedWindow: 298 return c.copyOnRewriteRefOfNamedWindow(n, parent) 299 case NamedWindows: 300 return c.copyOnRewriteNamedWindows(n, parent) 301 case *Nextval: 302 return c.copyOnRewriteRefOfNextval(n, parent) 303 case *NotExpr: 304 return c.copyOnRewriteRefOfNotExpr(n, parent) 305 case *NtileExpr: 306 return c.copyOnRewriteRefOfNtileExpr(n, parent) 307 case *NullTreatmentClause: 308 return c.copyOnRewriteRefOfNullTreatmentClause(n, parent) 309 case *NullVal: 310 return c.copyOnRewriteRefOfNullVal(n, parent) 311 case *Offset: 312 return c.copyOnRewriteRefOfOffset(n, parent) 313 case OnDup: 314 return c.copyOnRewriteOnDup(n, parent) 315 case *OptLike: 316 return c.copyOnRewriteRefOfOptLike(n, parent) 317 case *OrExpr: 318 return c.copyOnRewriteRefOfOrExpr(n, parent) 319 case *Order: 320 return c.copyOnRewriteRefOfOrder(n, parent) 321 case OrderBy: 322 return c.copyOnRewriteOrderBy(n, parent) 323 case *OrderByOption: 324 return c.copyOnRewriteRefOfOrderByOption(n, parent) 325 case *OtherAdmin: 326 return c.copyOnRewriteRefOfOtherAdmin(n, parent) 327 case *OtherRead: 328 return c.copyOnRewriteRefOfOtherRead(n, parent) 329 case *OverClause: 330 return c.copyOnRewriteRefOfOverClause(n, parent) 331 case *ParenTableExpr: 332 return c.copyOnRewriteRefOfParenTableExpr(n, parent) 333 case *ParsedComments: 334 return c.copyOnRewriteRefOfParsedComments(n, parent) 335 case *PartitionDefinition: 336 return c.copyOnRewriteRefOfPartitionDefinition(n, parent) 337 case *PartitionDefinitionOptions: 338 return c.copyOnRewriteRefOfPartitionDefinitionOptions(n, parent) 339 case *PartitionEngine: 340 return c.copyOnRewriteRefOfPartitionEngine(n, parent) 341 case *PartitionOption: 342 return c.copyOnRewriteRefOfPartitionOption(n, parent) 343 case *PartitionSpec: 344 return c.copyOnRewriteRefOfPartitionSpec(n, parent) 345 case *PartitionValueRange: 346 return c.copyOnRewriteRefOfPartitionValueRange(n, parent) 347 case Partitions: 348 return c.copyOnRewritePartitions(n, parent) 349 case *PerformanceSchemaFuncExpr: 350 return c.copyOnRewriteRefOfPerformanceSchemaFuncExpr(n, parent) 351 case *PrepareStmt: 352 return c.copyOnRewriteRefOfPrepareStmt(n, parent) 353 case ReferenceAction: 354 return c.copyOnRewriteReferenceAction(n, parent) 355 case *ReferenceDefinition: 356 return c.copyOnRewriteRefOfReferenceDefinition(n, parent) 357 case *RegexpInstrExpr: 358 return c.copyOnRewriteRefOfRegexpInstrExpr(n, parent) 359 case *RegexpLikeExpr: 360 return c.copyOnRewriteRefOfRegexpLikeExpr(n, parent) 361 case *RegexpReplaceExpr: 362 return c.copyOnRewriteRefOfRegexpReplaceExpr(n, parent) 363 case *RegexpSubstrExpr: 364 return c.copyOnRewriteRefOfRegexpSubstrExpr(n, parent) 365 case *Release: 366 return c.copyOnRewriteRefOfRelease(n, parent) 367 case *RenameColumn: 368 return c.copyOnRewriteRefOfRenameColumn(n, parent) 369 case *RenameIndex: 370 return c.copyOnRewriteRefOfRenameIndex(n, parent) 371 case *RenameTable: 372 return c.copyOnRewriteRefOfRenameTable(n, parent) 373 case *RenameTableName: 374 return c.copyOnRewriteRefOfRenameTableName(n, parent) 375 case *RevertMigration: 376 return c.copyOnRewriteRefOfRevertMigration(n, parent) 377 case *Rollback: 378 return c.copyOnRewriteRefOfRollback(n, parent) 379 case RootNode: 380 return c.copyOnRewriteRootNode(n, parent) 381 case *SRollback: 382 return c.copyOnRewriteRefOfSRollback(n, parent) 383 case *Savepoint: 384 return c.copyOnRewriteRefOfSavepoint(n, parent) 385 case *Select: 386 return c.copyOnRewriteRefOfSelect(n, parent) 387 case SelectExprs: 388 return c.copyOnRewriteSelectExprs(n, parent) 389 case *SelectInto: 390 return c.copyOnRewriteRefOfSelectInto(n, parent) 391 case *Set: 392 return c.copyOnRewriteRefOfSet(n, parent) 393 case *SetExpr: 394 return c.copyOnRewriteRefOfSetExpr(n, parent) 395 case SetExprs: 396 return c.copyOnRewriteSetExprs(n, parent) 397 case *Show: 398 return c.copyOnRewriteRefOfShow(n, parent) 399 case *ShowBasic: 400 return c.copyOnRewriteRefOfShowBasic(n, parent) 401 case *ShowCreate: 402 return c.copyOnRewriteRefOfShowCreate(n, parent) 403 case *ShowFilter: 404 return c.copyOnRewriteRefOfShowFilter(n, parent) 405 case *ShowMigrationLogs: 406 return c.copyOnRewriteRefOfShowMigrationLogs(n, parent) 407 case *ShowOther: 408 return c.copyOnRewriteRefOfShowOther(n, parent) 409 case *ShowThrottledApps: 410 return c.copyOnRewriteRefOfShowThrottledApps(n, parent) 411 case *ShowThrottlerStatus: 412 return c.copyOnRewriteRefOfShowThrottlerStatus(n, parent) 413 case *StarExpr: 414 return c.copyOnRewriteRefOfStarExpr(n, parent) 415 case *Std: 416 return c.copyOnRewriteRefOfStd(n, parent) 417 case *StdDev: 418 return c.copyOnRewriteRefOfStdDev(n, parent) 419 case *StdPop: 420 return c.copyOnRewriteRefOfStdPop(n, parent) 421 case *StdSamp: 422 return c.copyOnRewriteRefOfStdSamp(n, parent) 423 case *Stream: 424 return c.copyOnRewriteRefOfStream(n, parent) 425 case *SubPartition: 426 return c.copyOnRewriteRefOfSubPartition(n, parent) 427 case *SubPartitionDefinition: 428 return c.copyOnRewriteRefOfSubPartitionDefinition(n, parent) 429 case *SubPartitionDefinitionOptions: 430 return c.copyOnRewriteRefOfSubPartitionDefinitionOptions(n, parent) 431 case SubPartitionDefinitions: 432 return c.copyOnRewriteSubPartitionDefinitions(n, parent) 433 case *Subquery: 434 return c.copyOnRewriteRefOfSubquery(n, parent) 435 case *SubstrExpr: 436 return c.copyOnRewriteRefOfSubstrExpr(n, parent) 437 case *Sum: 438 return c.copyOnRewriteRefOfSum(n, parent) 439 case TableExprs: 440 return c.copyOnRewriteTableExprs(n, parent) 441 case TableName: 442 return c.copyOnRewriteTableName(n, parent) 443 case TableNames: 444 return c.copyOnRewriteTableNames(n, parent) 445 case TableOptions: 446 return c.copyOnRewriteTableOptions(n, parent) 447 case *TableSpec: 448 return c.copyOnRewriteRefOfTableSpec(n, parent) 449 case *TablespaceOperation: 450 return c.copyOnRewriteRefOfTablespaceOperation(n, parent) 451 case *TimestampFuncExpr: 452 return c.copyOnRewriteRefOfTimestampFuncExpr(n, parent) 453 case *TrimFuncExpr: 454 return c.copyOnRewriteRefOfTrimFuncExpr(n, parent) 455 case *TruncateTable: 456 return c.copyOnRewriteRefOfTruncateTable(n, parent) 457 case *UnaryExpr: 458 return c.copyOnRewriteRefOfUnaryExpr(n, parent) 459 case *Union: 460 return c.copyOnRewriteRefOfUnion(n, parent) 461 case *UnlockTables: 462 return c.copyOnRewriteRefOfUnlockTables(n, parent) 463 case *Update: 464 return c.copyOnRewriteRefOfUpdate(n, parent) 465 case *UpdateExpr: 466 return c.copyOnRewriteRefOfUpdateExpr(n, parent) 467 case UpdateExprs: 468 return c.copyOnRewriteUpdateExprs(n, parent) 469 case *UpdateXMLExpr: 470 return c.copyOnRewriteRefOfUpdateXMLExpr(n, parent) 471 case *Use: 472 return c.copyOnRewriteRefOfUse(n, parent) 473 case *VExplainStmt: 474 return c.copyOnRewriteRefOfVExplainStmt(n, parent) 475 case *VStream: 476 return c.copyOnRewriteRefOfVStream(n, parent) 477 case ValTuple: 478 return c.copyOnRewriteValTuple(n, parent) 479 case *Validation: 480 return c.copyOnRewriteRefOfValidation(n, parent) 481 case Values: 482 return c.copyOnRewriteValues(n, parent) 483 case *ValuesFuncExpr: 484 return c.copyOnRewriteRefOfValuesFuncExpr(n, parent) 485 case *VarPop: 486 return c.copyOnRewriteRefOfVarPop(n, parent) 487 case *VarSamp: 488 return c.copyOnRewriteRefOfVarSamp(n, parent) 489 case *Variable: 490 return c.copyOnRewriteRefOfVariable(n, parent) 491 case *Variance: 492 return c.copyOnRewriteRefOfVariance(n, parent) 493 case VindexParam: 494 return c.copyOnRewriteVindexParam(n, parent) 495 case *VindexSpec: 496 return c.copyOnRewriteRefOfVindexSpec(n, parent) 497 case *WeightStringFuncExpr: 498 return c.copyOnRewriteRefOfWeightStringFuncExpr(n, parent) 499 case *When: 500 return c.copyOnRewriteRefOfWhen(n, parent) 501 case *Where: 502 return c.copyOnRewriteRefOfWhere(n, parent) 503 case *WindowDefinition: 504 return c.copyOnRewriteRefOfWindowDefinition(n, parent) 505 case WindowDefinitions: 506 return c.copyOnRewriteWindowDefinitions(n, parent) 507 case *WindowSpecification: 508 return c.copyOnRewriteRefOfWindowSpecification(n, parent) 509 case *With: 510 return c.copyOnRewriteRefOfWith(n, parent) 511 case *XorExpr: 512 return c.copyOnRewriteRefOfXorExpr(n, parent) 513 default: 514 // this should never happen 515 return nil, false 516 } 517 } 518 func (c *cow) copyOnRewriteRefOfAddColumns(n *AddColumns, parent SQLNode) (out SQLNode, changed bool) { 519 if n == nil || c.cursor.stop { 520 return n, false 521 } 522 out = n 523 if c.pre == nil || c.pre(n, parent) { 524 var changedColumns bool 525 _Columns := make([]*ColumnDefinition, len(n.Columns)) 526 for x, el := range n.Columns { 527 this, changed := c.copyOnRewriteRefOfColumnDefinition(el, n) 528 _Columns[x] = this.(*ColumnDefinition) 529 if changed { 530 changedColumns = true 531 } 532 } 533 _After, changedAfter := c.copyOnRewriteRefOfColName(n.After, n) 534 if changedColumns || changedAfter { 535 res := *n 536 res.Columns = _Columns 537 res.After, _ = _After.(*ColName) 538 out = &res 539 if c.cloned != nil { 540 c.cloned(n, out) 541 } 542 changed = true 543 } 544 } 545 if c.post != nil { 546 out, changed = c.postVisit(out, parent, changed) 547 } 548 return 549 } 550 func (c *cow) copyOnRewriteRefOfAddConstraintDefinition(n *AddConstraintDefinition, parent SQLNode) (out SQLNode, changed bool) { 551 if n == nil || c.cursor.stop { 552 return n, false 553 } 554 out = n 555 if c.pre == nil || c.pre(n, parent) { 556 _ConstraintDefinition, changedConstraintDefinition := c.copyOnRewriteRefOfConstraintDefinition(n.ConstraintDefinition, n) 557 if changedConstraintDefinition { 558 res := *n 559 res.ConstraintDefinition, _ = _ConstraintDefinition.(*ConstraintDefinition) 560 out = &res 561 if c.cloned != nil { 562 c.cloned(n, out) 563 } 564 changed = true 565 } 566 } 567 if c.post != nil { 568 out, changed = c.postVisit(out, parent, changed) 569 } 570 return 571 } 572 func (c *cow) copyOnRewriteRefOfAddIndexDefinition(n *AddIndexDefinition, parent SQLNode) (out SQLNode, changed bool) { 573 if n == nil || c.cursor.stop { 574 return n, false 575 } 576 out = n 577 if c.pre == nil || c.pre(n, parent) { 578 _IndexDefinition, changedIndexDefinition := c.copyOnRewriteRefOfIndexDefinition(n.IndexDefinition, n) 579 if changedIndexDefinition { 580 res := *n 581 res.IndexDefinition, _ = _IndexDefinition.(*IndexDefinition) 582 out = &res 583 if c.cloned != nil { 584 c.cloned(n, out) 585 } 586 changed = true 587 } 588 } 589 if c.post != nil { 590 out, changed = c.postVisit(out, parent, changed) 591 } 592 return 593 } 594 func (c *cow) copyOnRewriteRefOfAliasedExpr(n *AliasedExpr, parent SQLNode) (out SQLNode, changed bool) { 595 if n == nil || c.cursor.stop { 596 return n, false 597 } 598 out = n 599 if c.pre == nil || c.pre(n, parent) { 600 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 601 _As, changedAs := c.copyOnRewriteIdentifierCI(n.As, n) 602 if changedExpr || changedAs { 603 res := *n 604 res.Expr, _ = _Expr.(Expr) 605 res.As, _ = _As.(IdentifierCI) 606 out = &res 607 if c.cloned != nil { 608 c.cloned(n, out) 609 } 610 changed = true 611 } 612 } 613 if c.post != nil { 614 out, changed = c.postVisit(out, parent, changed) 615 } 616 return 617 } 618 func (c *cow) copyOnRewriteRefOfAliasedTableExpr(n *AliasedTableExpr, parent SQLNode) (out SQLNode, changed bool) { 619 if n == nil || c.cursor.stop { 620 return n, false 621 } 622 out = n 623 if c.pre == nil || c.pre(n, parent) { 624 _Expr, changedExpr := c.copyOnRewriteSimpleTableExpr(n.Expr, n) 625 _Partitions, changedPartitions := c.copyOnRewritePartitions(n.Partitions, n) 626 _As, changedAs := c.copyOnRewriteIdentifierCS(n.As, n) 627 _Hints, changedHints := c.copyOnRewriteIndexHints(n.Hints, n) 628 _Columns, changedColumns := c.copyOnRewriteColumns(n.Columns, n) 629 if changedExpr || changedPartitions || changedAs || changedHints || changedColumns { 630 res := *n 631 res.Expr, _ = _Expr.(SimpleTableExpr) 632 res.Partitions, _ = _Partitions.(Partitions) 633 res.As, _ = _As.(IdentifierCS) 634 res.Hints, _ = _Hints.(IndexHints) 635 res.Columns, _ = _Columns.(Columns) 636 out = &res 637 if c.cloned != nil { 638 c.cloned(n, out) 639 } 640 changed = true 641 } 642 } 643 if c.post != nil { 644 out, changed = c.postVisit(out, parent, changed) 645 } 646 return 647 } 648 func (c *cow) copyOnRewriteRefOfAlterCharset(n *AlterCharset, parent SQLNode) (out SQLNode, changed bool) { 649 if n == nil || c.cursor.stop { 650 return n, false 651 } 652 out = n 653 if c.pre == nil || c.pre(n, parent) { 654 } 655 if c.post != nil { 656 out, changed = c.postVisit(out, parent, changed) 657 } 658 return 659 } 660 func (c *cow) copyOnRewriteRefOfAlterCheck(n *AlterCheck, parent SQLNode) (out SQLNode, changed bool) { 661 if n == nil || c.cursor.stop { 662 return n, false 663 } 664 out = n 665 if c.pre == nil || c.pre(n, parent) { 666 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 667 if changedName { 668 res := *n 669 res.Name, _ = _Name.(IdentifierCI) 670 out = &res 671 if c.cloned != nil { 672 c.cloned(n, out) 673 } 674 changed = true 675 } 676 } 677 if c.post != nil { 678 out, changed = c.postVisit(out, parent, changed) 679 } 680 return 681 } 682 func (c *cow) copyOnRewriteRefOfAlterColumn(n *AlterColumn, parent SQLNode) (out SQLNode, changed bool) { 683 if n == nil || c.cursor.stop { 684 return n, false 685 } 686 out = n 687 if c.pre == nil || c.pre(n, parent) { 688 _Column, changedColumn := c.copyOnRewriteRefOfColName(n.Column, n) 689 _DefaultVal, changedDefaultVal := c.copyOnRewriteExpr(n.DefaultVal, n) 690 if changedColumn || changedDefaultVal { 691 res := *n 692 res.Column, _ = _Column.(*ColName) 693 res.DefaultVal, _ = _DefaultVal.(Expr) 694 out = &res 695 if c.cloned != nil { 696 c.cloned(n, out) 697 } 698 changed = true 699 } 700 } 701 if c.post != nil { 702 out, changed = c.postVisit(out, parent, changed) 703 } 704 return 705 } 706 func (c *cow) copyOnRewriteRefOfAlterDatabase(n *AlterDatabase, parent SQLNode) (out SQLNode, changed bool) { 707 if n == nil || c.cursor.stop { 708 return n, false 709 } 710 out = n 711 if c.pre == nil || c.pre(n, parent) { 712 _DBName, changedDBName := c.copyOnRewriteIdentifierCS(n.DBName, n) 713 if changedDBName { 714 res := *n 715 res.DBName, _ = _DBName.(IdentifierCS) 716 out = &res 717 if c.cloned != nil { 718 c.cloned(n, out) 719 } 720 changed = true 721 } 722 } 723 if c.post != nil { 724 out, changed = c.postVisit(out, parent, changed) 725 } 726 return 727 } 728 func (c *cow) copyOnRewriteRefOfAlterIndex(n *AlterIndex, parent SQLNode) (out SQLNode, changed bool) { 729 if n == nil || c.cursor.stop { 730 return n, false 731 } 732 out = n 733 if c.pre == nil || c.pre(n, parent) { 734 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 735 if changedName { 736 res := *n 737 res.Name, _ = _Name.(IdentifierCI) 738 out = &res 739 if c.cloned != nil { 740 c.cloned(n, out) 741 } 742 changed = true 743 } 744 } 745 if c.post != nil { 746 out, changed = c.postVisit(out, parent, changed) 747 } 748 return 749 } 750 func (c *cow) copyOnRewriteRefOfAlterMigration(n *AlterMigration, parent SQLNode) (out SQLNode, changed bool) { 751 if n == nil || c.cursor.stop { 752 return n, false 753 } 754 out = n 755 if c.pre == nil || c.pre(n, parent) { 756 _Ratio, changedRatio := c.copyOnRewriteRefOfLiteral(n.Ratio, n) 757 if changedRatio { 758 res := *n 759 res.Ratio, _ = _Ratio.(*Literal) 760 out = &res 761 if c.cloned != nil { 762 c.cloned(n, out) 763 } 764 changed = true 765 } 766 } 767 if c.post != nil { 768 out, changed = c.postVisit(out, parent, changed) 769 } 770 return 771 } 772 func (c *cow) copyOnRewriteRefOfAlterTable(n *AlterTable, parent SQLNode) (out SQLNode, changed bool) { 773 if n == nil || c.cursor.stop { 774 return n, false 775 } 776 out = n 777 if c.pre == nil || c.pre(n, parent) { 778 _Table, changedTable := c.copyOnRewriteTableName(n.Table, n) 779 var changedAlterOptions bool 780 _AlterOptions := make([]AlterOption, len(n.AlterOptions)) 781 for x, el := range n.AlterOptions { 782 this, changed := c.copyOnRewriteAlterOption(el, n) 783 _AlterOptions[x] = this.(AlterOption) 784 if changed { 785 changedAlterOptions = true 786 } 787 } 788 _PartitionSpec, changedPartitionSpec := c.copyOnRewriteRefOfPartitionSpec(n.PartitionSpec, n) 789 _PartitionOption, changedPartitionOption := c.copyOnRewriteRefOfPartitionOption(n.PartitionOption, n) 790 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 791 if changedTable || changedAlterOptions || changedPartitionSpec || changedPartitionOption || changedComments { 792 res := *n 793 res.Table, _ = _Table.(TableName) 794 res.AlterOptions = _AlterOptions 795 res.PartitionSpec, _ = _PartitionSpec.(*PartitionSpec) 796 res.PartitionOption, _ = _PartitionOption.(*PartitionOption) 797 res.Comments, _ = _Comments.(*ParsedComments) 798 out = &res 799 if c.cloned != nil { 800 c.cloned(n, out) 801 } 802 changed = true 803 } 804 } 805 if c.post != nil { 806 out, changed = c.postVisit(out, parent, changed) 807 } 808 return 809 } 810 func (c *cow) copyOnRewriteRefOfAlterView(n *AlterView, parent SQLNode) (out SQLNode, changed bool) { 811 if n == nil || c.cursor.stop { 812 return n, false 813 } 814 out = n 815 if c.pre == nil || c.pre(n, parent) { 816 _ViewName, changedViewName := c.copyOnRewriteTableName(n.ViewName, n) 817 _Definer, changedDefiner := c.copyOnRewriteRefOfDefiner(n.Definer, n) 818 _Columns, changedColumns := c.copyOnRewriteColumns(n.Columns, n) 819 _Select, changedSelect := c.copyOnRewriteSelectStatement(n.Select, n) 820 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 821 if changedViewName || changedDefiner || changedColumns || changedSelect || changedComments { 822 res := *n 823 res.ViewName, _ = _ViewName.(TableName) 824 res.Definer, _ = _Definer.(*Definer) 825 res.Columns, _ = _Columns.(Columns) 826 res.Select, _ = _Select.(SelectStatement) 827 res.Comments, _ = _Comments.(*ParsedComments) 828 out = &res 829 if c.cloned != nil { 830 c.cloned(n, out) 831 } 832 changed = true 833 } 834 } 835 if c.post != nil { 836 out, changed = c.postVisit(out, parent, changed) 837 } 838 return 839 } 840 func (c *cow) copyOnRewriteRefOfAlterVschema(n *AlterVschema, parent SQLNode) (out SQLNode, changed bool) { 841 if n == nil || c.cursor.stop { 842 return n, false 843 } 844 out = n 845 if c.pre == nil || c.pre(n, parent) { 846 _Table, changedTable := c.copyOnRewriteTableName(n.Table, n) 847 _VindexSpec, changedVindexSpec := c.copyOnRewriteRefOfVindexSpec(n.VindexSpec, n) 848 var changedVindexCols bool 849 _VindexCols := make([]IdentifierCI, len(n.VindexCols)) 850 for x, el := range n.VindexCols { 851 this, changed := c.copyOnRewriteIdentifierCI(el, n) 852 _VindexCols[x] = this.(IdentifierCI) 853 if changed { 854 changedVindexCols = true 855 } 856 } 857 _AutoIncSpec, changedAutoIncSpec := c.copyOnRewriteRefOfAutoIncSpec(n.AutoIncSpec, n) 858 if changedTable || changedVindexSpec || changedVindexCols || changedAutoIncSpec { 859 res := *n 860 res.Table, _ = _Table.(TableName) 861 res.VindexSpec, _ = _VindexSpec.(*VindexSpec) 862 res.VindexCols = _VindexCols 863 res.AutoIncSpec, _ = _AutoIncSpec.(*AutoIncSpec) 864 out = &res 865 if c.cloned != nil { 866 c.cloned(n, out) 867 } 868 changed = true 869 } 870 } 871 if c.post != nil { 872 out, changed = c.postVisit(out, parent, changed) 873 } 874 return 875 } 876 func (c *cow) copyOnRewriteRefOfAndExpr(n *AndExpr, parent SQLNode) (out SQLNode, changed bool) { 877 if n == nil || c.cursor.stop { 878 return n, false 879 } 880 out = n 881 if c.pre == nil || c.pre(n, parent) { 882 _Left, changedLeft := c.copyOnRewriteExpr(n.Left, n) 883 _Right, changedRight := c.copyOnRewriteExpr(n.Right, n) 884 if changedLeft || changedRight { 885 res := *n 886 res.Left, _ = _Left.(Expr) 887 res.Right, _ = _Right.(Expr) 888 out = &res 889 if c.cloned != nil { 890 c.cloned(n, out) 891 } 892 changed = true 893 } 894 } 895 if c.post != nil { 896 out, changed = c.postVisit(out, parent, changed) 897 } 898 return 899 } 900 func (c *cow) copyOnRewriteRefOfArgumentLessWindowExpr(n *ArgumentLessWindowExpr, parent SQLNode) (out SQLNode, changed bool) { 901 if n == nil || c.cursor.stop { 902 return n, false 903 } 904 out = n 905 if c.pre == nil || c.pre(n, parent) { 906 _OverClause, changedOverClause := c.copyOnRewriteRefOfOverClause(n.OverClause, n) 907 if changedOverClause { 908 res := *n 909 res.OverClause, _ = _OverClause.(*OverClause) 910 out = &res 911 if c.cloned != nil { 912 c.cloned(n, out) 913 } 914 changed = true 915 } 916 } 917 if c.post != nil { 918 out, changed = c.postVisit(out, parent, changed) 919 } 920 return 921 } 922 func (c *cow) copyOnRewriteRefOfAutoIncSpec(n *AutoIncSpec, parent SQLNode) (out SQLNode, changed bool) { 923 if n == nil || c.cursor.stop { 924 return n, false 925 } 926 out = n 927 if c.pre == nil || c.pre(n, parent) { 928 _Column, changedColumn := c.copyOnRewriteIdentifierCI(n.Column, n) 929 _Sequence, changedSequence := c.copyOnRewriteTableName(n.Sequence, n) 930 if changedColumn || changedSequence { 931 res := *n 932 res.Column, _ = _Column.(IdentifierCI) 933 res.Sequence, _ = _Sequence.(TableName) 934 out = &res 935 if c.cloned != nil { 936 c.cloned(n, out) 937 } 938 changed = true 939 } 940 } 941 if c.post != nil { 942 out, changed = c.postVisit(out, parent, changed) 943 } 944 return 945 } 946 func (c *cow) copyOnRewriteRefOfAvg(n *Avg, parent SQLNode) (out SQLNode, changed bool) { 947 if n == nil || c.cursor.stop { 948 return n, false 949 } 950 out = n 951 if c.pre == nil || c.pre(n, parent) { 952 _Arg, changedArg := c.copyOnRewriteExpr(n.Arg, n) 953 if changedArg { 954 res := *n 955 res.Arg, _ = _Arg.(Expr) 956 out = &res 957 if c.cloned != nil { 958 c.cloned(n, out) 959 } 960 changed = true 961 } 962 } 963 if c.post != nil { 964 out, changed = c.postVisit(out, parent, changed) 965 } 966 return 967 } 968 func (c *cow) copyOnRewriteRefOfBegin(n *Begin, parent SQLNode) (out SQLNode, changed bool) { 969 if n == nil || c.cursor.stop { 970 return n, false 971 } 972 out = n 973 if c.pre == nil || c.pre(n, parent) { 974 } 975 if c.post != nil { 976 out, changed = c.postVisit(out, parent, changed) 977 } 978 return 979 } 980 func (c *cow) copyOnRewriteRefOfBetweenExpr(n *BetweenExpr, parent SQLNode) (out SQLNode, changed bool) { 981 if n == nil || c.cursor.stop { 982 return n, false 983 } 984 out = n 985 if c.pre == nil || c.pre(n, parent) { 986 _Left, changedLeft := c.copyOnRewriteExpr(n.Left, n) 987 _From, changedFrom := c.copyOnRewriteExpr(n.From, n) 988 _To, changedTo := c.copyOnRewriteExpr(n.To, n) 989 if changedLeft || changedFrom || changedTo { 990 res := *n 991 res.Left, _ = _Left.(Expr) 992 res.From, _ = _From.(Expr) 993 res.To, _ = _To.(Expr) 994 out = &res 995 if c.cloned != nil { 996 c.cloned(n, out) 997 } 998 changed = true 999 } 1000 } 1001 if c.post != nil { 1002 out, changed = c.postVisit(out, parent, changed) 1003 } 1004 return 1005 } 1006 func (c *cow) copyOnRewriteRefOfBinaryExpr(n *BinaryExpr, parent SQLNode) (out SQLNode, changed bool) { 1007 if n == nil || c.cursor.stop { 1008 return n, false 1009 } 1010 out = n 1011 if c.pre == nil || c.pre(n, parent) { 1012 _Left, changedLeft := c.copyOnRewriteExpr(n.Left, n) 1013 _Right, changedRight := c.copyOnRewriteExpr(n.Right, n) 1014 if changedLeft || changedRight { 1015 res := *n 1016 res.Left, _ = _Left.(Expr) 1017 res.Right, _ = _Right.(Expr) 1018 out = &res 1019 if c.cloned != nil { 1020 c.cloned(n, out) 1021 } 1022 changed = true 1023 } 1024 } 1025 if c.post != nil { 1026 out, changed = c.postVisit(out, parent, changed) 1027 } 1028 return 1029 } 1030 func (c *cow) copyOnRewriteRefOfBitAnd(n *BitAnd, parent SQLNode) (out SQLNode, changed bool) { 1031 if n == nil || c.cursor.stop { 1032 return n, false 1033 } 1034 out = n 1035 if c.pre == nil || c.pre(n, parent) { 1036 _Arg, changedArg := c.copyOnRewriteExpr(n.Arg, n) 1037 if changedArg { 1038 res := *n 1039 res.Arg, _ = _Arg.(Expr) 1040 out = &res 1041 if c.cloned != nil { 1042 c.cloned(n, out) 1043 } 1044 changed = true 1045 } 1046 } 1047 if c.post != nil { 1048 out, changed = c.postVisit(out, parent, changed) 1049 } 1050 return 1051 } 1052 func (c *cow) copyOnRewriteRefOfBitOr(n *BitOr, parent SQLNode) (out SQLNode, changed bool) { 1053 if n == nil || c.cursor.stop { 1054 return n, false 1055 } 1056 out = n 1057 if c.pre == nil || c.pre(n, parent) { 1058 _Arg, changedArg := c.copyOnRewriteExpr(n.Arg, n) 1059 if changedArg { 1060 res := *n 1061 res.Arg, _ = _Arg.(Expr) 1062 out = &res 1063 if c.cloned != nil { 1064 c.cloned(n, out) 1065 } 1066 changed = true 1067 } 1068 } 1069 if c.post != nil { 1070 out, changed = c.postVisit(out, parent, changed) 1071 } 1072 return 1073 } 1074 func (c *cow) copyOnRewriteRefOfBitXor(n *BitXor, parent SQLNode) (out SQLNode, changed bool) { 1075 if n == nil || c.cursor.stop { 1076 return n, false 1077 } 1078 out = n 1079 if c.pre == nil || c.pre(n, parent) { 1080 _Arg, changedArg := c.copyOnRewriteExpr(n.Arg, n) 1081 if changedArg { 1082 res := *n 1083 res.Arg, _ = _Arg.(Expr) 1084 out = &res 1085 if c.cloned != nil { 1086 c.cloned(n, out) 1087 } 1088 changed = true 1089 } 1090 } 1091 if c.post != nil { 1092 out, changed = c.postVisit(out, parent, changed) 1093 } 1094 return 1095 } 1096 func (c *cow) copyOnRewriteRefOfCallProc(n *CallProc, parent SQLNode) (out SQLNode, changed bool) { 1097 if n == nil || c.cursor.stop { 1098 return n, false 1099 } 1100 out = n 1101 if c.pre == nil || c.pre(n, parent) { 1102 _Name, changedName := c.copyOnRewriteTableName(n.Name, n) 1103 _Params, changedParams := c.copyOnRewriteExprs(n.Params, n) 1104 if changedName || changedParams { 1105 res := *n 1106 res.Name, _ = _Name.(TableName) 1107 res.Params, _ = _Params.(Exprs) 1108 out = &res 1109 if c.cloned != nil { 1110 c.cloned(n, out) 1111 } 1112 changed = true 1113 } 1114 } 1115 if c.post != nil { 1116 out, changed = c.postVisit(out, parent, changed) 1117 } 1118 return 1119 } 1120 func (c *cow) copyOnRewriteRefOfCaseExpr(n *CaseExpr, parent SQLNode) (out SQLNode, changed bool) { 1121 if n == nil || c.cursor.stop { 1122 return n, false 1123 } 1124 out = n 1125 if c.pre == nil || c.pre(n, parent) { 1126 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 1127 var changedWhens bool 1128 _Whens := make([]*When, len(n.Whens)) 1129 for x, el := range n.Whens { 1130 this, changed := c.copyOnRewriteRefOfWhen(el, n) 1131 _Whens[x] = this.(*When) 1132 if changed { 1133 changedWhens = true 1134 } 1135 } 1136 _Else, changedElse := c.copyOnRewriteExpr(n.Else, n) 1137 if changedExpr || changedWhens || changedElse { 1138 res := *n 1139 res.Expr, _ = _Expr.(Expr) 1140 res.Whens = _Whens 1141 res.Else, _ = _Else.(Expr) 1142 out = &res 1143 if c.cloned != nil { 1144 c.cloned(n, out) 1145 } 1146 changed = true 1147 } 1148 } 1149 if c.post != nil { 1150 out, changed = c.postVisit(out, parent, changed) 1151 } 1152 return 1153 } 1154 func (c *cow) copyOnRewriteRefOfCastExpr(n *CastExpr, parent SQLNode) (out SQLNode, changed bool) { 1155 if n == nil || c.cursor.stop { 1156 return n, false 1157 } 1158 out = n 1159 if c.pre == nil || c.pre(n, parent) { 1160 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 1161 _Type, changedType := c.copyOnRewriteRefOfConvertType(n.Type, n) 1162 if changedExpr || changedType { 1163 res := *n 1164 res.Expr, _ = _Expr.(Expr) 1165 res.Type, _ = _Type.(*ConvertType) 1166 out = &res 1167 if c.cloned != nil { 1168 c.cloned(n, out) 1169 } 1170 changed = true 1171 } 1172 } 1173 if c.post != nil { 1174 out, changed = c.postVisit(out, parent, changed) 1175 } 1176 return 1177 } 1178 func (c *cow) copyOnRewriteRefOfChangeColumn(n *ChangeColumn, parent SQLNode) (out SQLNode, changed bool) { 1179 if n == nil || c.cursor.stop { 1180 return n, false 1181 } 1182 out = n 1183 if c.pre == nil || c.pre(n, parent) { 1184 _OldColumn, changedOldColumn := c.copyOnRewriteRefOfColName(n.OldColumn, n) 1185 _NewColDefinition, changedNewColDefinition := c.copyOnRewriteRefOfColumnDefinition(n.NewColDefinition, n) 1186 _After, changedAfter := c.copyOnRewriteRefOfColName(n.After, n) 1187 if changedOldColumn || changedNewColDefinition || changedAfter { 1188 res := *n 1189 res.OldColumn, _ = _OldColumn.(*ColName) 1190 res.NewColDefinition, _ = _NewColDefinition.(*ColumnDefinition) 1191 res.After, _ = _After.(*ColName) 1192 out = &res 1193 if c.cloned != nil { 1194 c.cloned(n, out) 1195 } 1196 changed = true 1197 } 1198 } 1199 if c.post != nil { 1200 out, changed = c.postVisit(out, parent, changed) 1201 } 1202 return 1203 } 1204 func (c *cow) copyOnRewriteRefOfCharExpr(n *CharExpr, parent SQLNode) (out SQLNode, changed bool) { 1205 if n == nil || c.cursor.stop { 1206 return n, false 1207 } 1208 out = n 1209 if c.pre == nil || c.pre(n, parent) { 1210 _Exprs, changedExprs := c.copyOnRewriteExprs(n.Exprs, n) 1211 if changedExprs { 1212 res := *n 1213 res.Exprs, _ = _Exprs.(Exprs) 1214 out = &res 1215 if c.cloned != nil { 1216 c.cloned(n, out) 1217 } 1218 changed = true 1219 } 1220 } 1221 if c.post != nil { 1222 out, changed = c.postVisit(out, parent, changed) 1223 } 1224 return 1225 } 1226 func (c *cow) copyOnRewriteRefOfCheckConstraintDefinition(n *CheckConstraintDefinition, parent SQLNode) (out SQLNode, changed bool) { 1227 if n == nil || c.cursor.stop { 1228 return n, false 1229 } 1230 out = n 1231 if c.pre == nil || c.pre(n, parent) { 1232 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 1233 if changedExpr { 1234 res := *n 1235 res.Expr, _ = _Expr.(Expr) 1236 out = &res 1237 if c.cloned != nil { 1238 c.cloned(n, out) 1239 } 1240 changed = true 1241 } 1242 } 1243 if c.post != nil { 1244 out, changed = c.postVisit(out, parent, changed) 1245 } 1246 return 1247 } 1248 func (c *cow) copyOnRewriteRefOfColName(n *ColName, parent SQLNode) (out SQLNode, changed bool) { 1249 if n == nil || c.cursor.stop { 1250 return n, false 1251 } 1252 out = n 1253 if c.pre == nil || c.pre(n, parent) { 1254 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 1255 _Qualifier, changedQualifier := c.copyOnRewriteTableName(n.Qualifier, n) 1256 if changedName || changedQualifier { 1257 res := *n 1258 res.Name, _ = _Name.(IdentifierCI) 1259 res.Qualifier, _ = _Qualifier.(TableName) 1260 out = &res 1261 if c.cloned != nil { 1262 c.cloned(n, out) 1263 } 1264 changed = true 1265 } 1266 } 1267 if c.post != nil { 1268 out, changed = c.postVisit(out, parent, changed) 1269 } 1270 return 1271 } 1272 func (c *cow) copyOnRewriteRefOfCollateExpr(n *CollateExpr, parent SQLNode) (out SQLNode, changed bool) { 1273 if n == nil || c.cursor.stop { 1274 return n, false 1275 } 1276 out = n 1277 if c.pre == nil || c.pre(n, parent) { 1278 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 1279 if changedExpr { 1280 res := *n 1281 res.Expr, _ = _Expr.(Expr) 1282 out = &res 1283 if c.cloned != nil { 1284 c.cloned(n, out) 1285 } 1286 changed = true 1287 } 1288 } 1289 if c.post != nil { 1290 out, changed = c.postVisit(out, parent, changed) 1291 } 1292 return 1293 } 1294 func (c *cow) copyOnRewriteRefOfColumnDefinition(n *ColumnDefinition, parent SQLNode) (out SQLNode, changed bool) { 1295 if n == nil || c.cursor.stop { 1296 return n, false 1297 } 1298 out = n 1299 if c.pre == nil || c.pre(n, parent) { 1300 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 1301 _Type, changedType := c.copyOnRewriteRefOfColumnType(n.Type, n) 1302 if changedName || changedType { 1303 res := *n 1304 res.Name, _ = _Name.(IdentifierCI) 1305 res.Type, _ = _Type.(*ColumnType) 1306 out = &res 1307 if c.cloned != nil { 1308 c.cloned(n, out) 1309 } 1310 changed = true 1311 } 1312 } 1313 if c.post != nil { 1314 out, changed = c.postVisit(out, parent, changed) 1315 } 1316 return 1317 } 1318 func (c *cow) copyOnRewriteRefOfColumnType(n *ColumnType, parent SQLNode) (out SQLNode, changed bool) { 1319 if n == nil || c.cursor.stop { 1320 return n, false 1321 } 1322 out = n 1323 if c.pre == nil || c.pre(n, parent) { 1324 _Length, changedLength := c.copyOnRewriteRefOfLiteral(n.Length, n) 1325 _Scale, changedScale := c.copyOnRewriteRefOfLiteral(n.Scale, n) 1326 if changedLength || changedScale { 1327 res := *n 1328 res.Length, _ = _Length.(*Literal) 1329 res.Scale, _ = _Scale.(*Literal) 1330 out = &res 1331 if c.cloned != nil { 1332 c.cloned(n, out) 1333 } 1334 changed = true 1335 } 1336 } 1337 if c.post != nil { 1338 out, changed = c.postVisit(out, parent, changed) 1339 } 1340 return 1341 } 1342 func (c *cow) copyOnRewriteColumns(n Columns, parent SQLNode) (out SQLNode, changed bool) { 1343 if n == nil || c.cursor.stop { 1344 return n, false 1345 } 1346 out = n 1347 if c.pre == nil || c.pre(n, parent) { 1348 res := make(Columns, len(n)) 1349 for x, el := range n { 1350 this, change := c.copyOnRewriteIdentifierCI(el, n) 1351 res[x] = this.(IdentifierCI) 1352 if change { 1353 changed = true 1354 } 1355 } 1356 if changed { 1357 out = res 1358 } 1359 } 1360 if c.post != nil { 1361 out, changed = c.postVisit(out, parent, changed) 1362 } 1363 return 1364 } 1365 func (c *cow) copyOnRewriteRefOfCommentOnly(n *CommentOnly, parent SQLNode) (out SQLNode, changed bool) { 1366 if n == nil || c.cursor.stop { 1367 return n, false 1368 } 1369 out = n 1370 if c.pre == nil || c.pre(n, parent) { 1371 } 1372 if c.post != nil { 1373 out, changed = c.postVisit(out, parent, changed) 1374 } 1375 return 1376 } 1377 func (c *cow) copyOnRewriteRefOfCommit(n *Commit, parent SQLNode) (out SQLNode, changed bool) { 1378 if n == nil || c.cursor.stop { 1379 return n, false 1380 } 1381 out = n 1382 if c.pre == nil || c.pre(n, parent) { 1383 } 1384 if c.post != nil { 1385 out, changed = c.postVisit(out, parent, changed) 1386 } 1387 return 1388 } 1389 func (c *cow) copyOnRewriteRefOfCommonTableExpr(n *CommonTableExpr, parent SQLNode) (out SQLNode, changed bool) { 1390 if n == nil || c.cursor.stop { 1391 return n, false 1392 } 1393 out = n 1394 if c.pre == nil || c.pre(n, parent) { 1395 _ID, changedID := c.copyOnRewriteIdentifierCS(n.ID, n) 1396 _Columns, changedColumns := c.copyOnRewriteColumns(n.Columns, n) 1397 _Subquery, changedSubquery := c.copyOnRewriteRefOfSubquery(n.Subquery, n) 1398 if changedID || changedColumns || changedSubquery { 1399 res := *n 1400 res.ID, _ = _ID.(IdentifierCS) 1401 res.Columns, _ = _Columns.(Columns) 1402 res.Subquery, _ = _Subquery.(*Subquery) 1403 out = &res 1404 if c.cloned != nil { 1405 c.cloned(n, out) 1406 } 1407 changed = true 1408 } 1409 } 1410 if c.post != nil { 1411 out, changed = c.postVisit(out, parent, changed) 1412 } 1413 return 1414 } 1415 func (c *cow) copyOnRewriteRefOfComparisonExpr(n *ComparisonExpr, parent SQLNode) (out SQLNode, changed bool) { 1416 if n == nil || c.cursor.stop { 1417 return n, false 1418 } 1419 out = n 1420 if c.pre == nil || c.pre(n, parent) { 1421 _Left, changedLeft := c.copyOnRewriteExpr(n.Left, n) 1422 _Right, changedRight := c.copyOnRewriteExpr(n.Right, n) 1423 _Escape, changedEscape := c.copyOnRewriteExpr(n.Escape, n) 1424 if changedLeft || changedRight || changedEscape { 1425 res := *n 1426 res.Left, _ = _Left.(Expr) 1427 res.Right, _ = _Right.(Expr) 1428 res.Escape, _ = _Escape.(Expr) 1429 out = &res 1430 if c.cloned != nil { 1431 c.cloned(n, out) 1432 } 1433 changed = true 1434 } 1435 } 1436 if c.post != nil { 1437 out, changed = c.postVisit(out, parent, changed) 1438 } 1439 return 1440 } 1441 func (c *cow) copyOnRewriteRefOfConstraintDefinition(n *ConstraintDefinition, parent SQLNode) (out SQLNode, changed bool) { 1442 if n == nil || c.cursor.stop { 1443 return n, false 1444 } 1445 out = n 1446 if c.pre == nil || c.pre(n, parent) { 1447 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 1448 _Details, changedDetails := c.copyOnRewriteConstraintInfo(n.Details, n) 1449 if changedName || changedDetails { 1450 res := *n 1451 res.Name, _ = _Name.(IdentifierCI) 1452 res.Details, _ = _Details.(ConstraintInfo) 1453 out = &res 1454 if c.cloned != nil { 1455 c.cloned(n, out) 1456 } 1457 changed = true 1458 } 1459 } 1460 if c.post != nil { 1461 out, changed = c.postVisit(out, parent, changed) 1462 } 1463 return 1464 } 1465 func (c *cow) copyOnRewriteRefOfConvertExpr(n *ConvertExpr, parent SQLNode) (out SQLNode, changed bool) { 1466 if n == nil || c.cursor.stop { 1467 return n, false 1468 } 1469 out = n 1470 if c.pre == nil || c.pre(n, parent) { 1471 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 1472 _Type, changedType := c.copyOnRewriteRefOfConvertType(n.Type, n) 1473 if changedExpr || changedType { 1474 res := *n 1475 res.Expr, _ = _Expr.(Expr) 1476 res.Type, _ = _Type.(*ConvertType) 1477 out = &res 1478 if c.cloned != nil { 1479 c.cloned(n, out) 1480 } 1481 changed = true 1482 } 1483 } 1484 if c.post != nil { 1485 out, changed = c.postVisit(out, parent, changed) 1486 } 1487 return 1488 } 1489 func (c *cow) copyOnRewriteRefOfConvertType(n *ConvertType, parent SQLNode) (out SQLNode, changed bool) { 1490 if n == nil || c.cursor.stop { 1491 return n, false 1492 } 1493 out = n 1494 if c.pre == nil || c.pre(n, parent) { 1495 _Length, changedLength := c.copyOnRewriteRefOfLiteral(n.Length, n) 1496 _Scale, changedScale := c.copyOnRewriteRefOfLiteral(n.Scale, n) 1497 if changedLength || changedScale { 1498 res := *n 1499 res.Length, _ = _Length.(*Literal) 1500 res.Scale, _ = _Scale.(*Literal) 1501 out = &res 1502 if c.cloned != nil { 1503 c.cloned(n, out) 1504 } 1505 changed = true 1506 } 1507 } 1508 if c.post != nil { 1509 out, changed = c.postVisit(out, parent, changed) 1510 } 1511 return 1512 } 1513 func (c *cow) copyOnRewriteRefOfConvertUsingExpr(n *ConvertUsingExpr, parent SQLNode) (out SQLNode, changed bool) { 1514 if n == nil || c.cursor.stop { 1515 return n, false 1516 } 1517 out = n 1518 if c.pre == nil || c.pre(n, parent) { 1519 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 1520 if changedExpr { 1521 res := *n 1522 res.Expr, _ = _Expr.(Expr) 1523 out = &res 1524 if c.cloned != nil { 1525 c.cloned(n, out) 1526 } 1527 changed = true 1528 } 1529 } 1530 if c.post != nil { 1531 out, changed = c.postVisit(out, parent, changed) 1532 } 1533 return 1534 } 1535 func (c *cow) copyOnRewriteRefOfCount(n *Count, parent SQLNode) (out SQLNode, changed bool) { 1536 if n == nil || c.cursor.stop { 1537 return n, false 1538 } 1539 out = n 1540 if c.pre == nil || c.pre(n, parent) { 1541 _Args, changedArgs := c.copyOnRewriteExprs(n.Args, n) 1542 if changedArgs { 1543 res := *n 1544 res.Args, _ = _Args.(Exprs) 1545 out = &res 1546 if c.cloned != nil { 1547 c.cloned(n, out) 1548 } 1549 changed = true 1550 } 1551 } 1552 if c.post != nil { 1553 out, changed = c.postVisit(out, parent, changed) 1554 } 1555 return 1556 } 1557 func (c *cow) copyOnRewriteRefOfCountStar(n *CountStar, parent SQLNode) (out SQLNode, changed bool) { 1558 if n == nil || c.cursor.stop { 1559 return n, false 1560 } 1561 out = n 1562 if c.pre == nil || c.pre(n, parent) { 1563 } 1564 if c.post != nil { 1565 out, changed = c.postVisit(out, parent, changed) 1566 } 1567 return 1568 } 1569 func (c *cow) copyOnRewriteRefOfCreateDatabase(n *CreateDatabase, parent SQLNode) (out SQLNode, changed bool) { 1570 if n == nil || c.cursor.stop { 1571 return n, false 1572 } 1573 out = n 1574 if c.pre == nil || c.pre(n, parent) { 1575 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 1576 _DBName, changedDBName := c.copyOnRewriteIdentifierCS(n.DBName, n) 1577 if changedComments || changedDBName { 1578 res := *n 1579 res.Comments, _ = _Comments.(*ParsedComments) 1580 res.DBName, _ = _DBName.(IdentifierCS) 1581 out = &res 1582 if c.cloned != nil { 1583 c.cloned(n, out) 1584 } 1585 changed = true 1586 } 1587 } 1588 if c.post != nil { 1589 out, changed = c.postVisit(out, parent, changed) 1590 } 1591 return 1592 } 1593 func (c *cow) copyOnRewriteRefOfCreateTable(n *CreateTable, parent SQLNode) (out SQLNode, changed bool) { 1594 if n == nil || c.cursor.stop { 1595 return n, false 1596 } 1597 out = n 1598 if c.pre == nil || c.pre(n, parent) { 1599 _Table, changedTable := c.copyOnRewriteTableName(n.Table, n) 1600 _TableSpec, changedTableSpec := c.copyOnRewriteRefOfTableSpec(n.TableSpec, n) 1601 _OptLike, changedOptLike := c.copyOnRewriteRefOfOptLike(n.OptLike, n) 1602 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 1603 if changedTable || changedTableSpec || changedOptLike || changedComments { 1604 res := *n 1605 res.Table, _ = _Table.(TableName) 1606 res.TableSpec, _ = _TableSpec.(*TableSpec) 1607 res.OptLike, _ = _OptLike.(*OptLike) 1608 res.Comments, _ = _Comments.(*ParsedComments) 1609 out = &res 1610 if c.cloned != nil { 1611 c.cloned(n, out) 1612 } 1613 changed = true 1614 } 1615 } 1616 if c.post != nil { 1617 out, changed = c.postVisit(out, parent, changed) 1618 } 1619 return 1620 } 1621 func (c *cow) copyOnRewriteRefOfCreateView(n *CreateView, parent SQLNode) (out SQLNode, changed bool) { 1622 if n == nil || c.cursor.stop { 1623 return n, false 1624 } 1625 out = n 1626 if c.pre == nil || c.pre(n, parent) { 1627 _ViewName, changedViewName := c.copyOnRewriteTableName(n.ViewName, n) 1628 _Definer, changedDefiner := c.copyOnRewriteRefOfDefiner(n.Definer, n) 1629 _Columns, changedColumns := c.copyOnRewriteColumns(n.Columns, n) 1630 _Select, changedSelect := c.copyOnRewriteSelectStatement(n.Select, n) 1631 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 1632 if changedViewName || changedDefiner || changedColumns || changedSelect || changedComments { 1633 res := *n 1634 res.ViewName, _ = _ViewName.(TableName) 1635 res.Definer, _ = _Definer.(*Definer) 1636 res.Columns, _ = _Columns.(Columns) 1637 res.Select, _ = _Select.(SelectStatement) 1638 res.Comments, _ = _Comments.(*ParsedComments) 1639 out = &res 1640 if c.cloned != nil { 1641 c.cloned(n, out) 1642 } 1643 changed = true 1644 } 1645 } 1646 if c.post != nil { 1647 out, changed = c.postVisit(out, parent, changed) 1648 } 1649 return 1650 } 1651 func (c *cow) copyOnRewriteRefOfCurTimeFuncExpr(n *CurTimeFuncExpr, parent SQLNode) (out SQLNode, changed bool) { 1652 if n == nil || c.cursor.stop { 1653 return n, false 1654 } 1655 out = n 1656 if c.pre == nil || c.pre(n, parent) { 1657 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 1658 _Fsp, changedFsp := c.copyOnRewriteExpr(n.Fsp, n) 1659 if changedName || changedFsp { 1660 res := *n 1661 res.Name, _ = _Name.(IdentifierCI) 1662 res.Fsp, _ = _Fsp.(Expr) 1663 out = &res 1664 if c.cloned != nil { 1665 c.cloned(n, out) 1666 } 1667 changed = true 1668 } 1669 } 1670 if c.post != nil { 1671 out, changed = c.postVisit(out, parent, changed) 1672 } 1673 return 1674 } 1675 func (c *cow) copyOnRewriteRefOfDeallocateStmt(n *DeallocateStmt, parent SQLNode) (out SQLNode, changed bool) { 1676 if n == nil || c.cursor.stop { 1677 return n, false 1678 } 1679 out = n 1680 if c.pre == nil || c.pre(n, parent) { 1681 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 1682 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 1683 if changedComments || changedName { 1684 res := *n 1685 res.Comments, _ = _Comments.(*ParsedComments) 1686 res.Name, _ = _Name.(IdentifierCI) 1687 out = &res 1688 if c.cloned != nil { 1689 c.cloned(n, out) 1690 } 1691 changed = true 1692 } 1693 } 1694 if c.post != nil { 1695 out, changed = c.postVisit(out, parent, changed) 1696 } 1697 return 1698 } 1699 func (c *cow) copyOnRewriteRefOfDefault(n *Default, parent SQLNode) (out SQLNode, changed bool) { 1700 if n == nil || c.cursor.stop { 1701 return n, false 1702 } 1703 out = n 1704 if c.pre == nil || c.pre(n, parent) { 1705 } 1706 if c.post != nil { 1707 out, changed = c.postVisit(out, parent, changed) 1708 } 1709 return 1710 } 1711 func (c *cow) copyOnRewriteRefOfDefiner(n *Definer, parent SQLNode) (out SQLNode, changed bool) { 1712 if n == nil || c.cursor.stop { 1713 return n, false 1714 } 1715 out = n 1716 if c.pre == nil || c.pre(n, parent) { 1717 } 1718 if c.post != nil { 1719 out, changed = c.postVisit(out, parent, changed) 1720 } 1721 return 1722 } 1723 func (c *cow) copyOnRewriteRefOfDelete(n *Delete, parent SQLNode) (out SQLNode, changed bool) { 1724 if n == nil || c.cursor.stop { 1725 return n, false 1726 } 1727 out = n 1728 if c.pre == nil || c.pre(n, parent) { 1729 _With, changedWith := c.copyOnRewriteRefOfWith(n.With, n) 1730 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 1731 _Targets, changedTargets := c.copyOnRewriteTableNames(n.Targets, n) 1732 _TableExprs, changedTableExprs := c.copyOnRewriteTableExprs(n.TableExprs, n) 1733 _Partitions, changedPartitions := c.copyOnRewritePartitions(n.Partitions, n) 1734 _Where, changedWhere := c.copyOnRewriteRefOfWhere(n.Where, n) 1735 _OrderBy, changedOrderBy := c.copyOnRewriteOrderBy(n.OrderBy, n) 1736 _Limit, changedLimit := c.copyOnRewriteRefOfLimit(n.Limit, n) 1737 if changedWith || changedComments || changedTargets || changedTableExprs || changedPartitions || changedWhere || changedOrderBy || changedLimit { 1738 res := *n 1739 res.With, _ = _With.(*With) 1740 res.Comments, _ = _Comments.(*ParsedComments) 1741 res.Targets, _ = _Targets.(TableNames) 1742 res.TableExprs, _ = _TableExprs.(TableExprs) 1743 res.Partitions, _ = _Partitions.(Partitions) 1744 res.Where, _ = _Where.(*Where) 1745 res.OrderBy, _ = _OrderBy.(OrderBy) 1746 res.Limit, _ = _Limit.(*Limit) 1747 out = &res 1748 if c.cloned != nil { 1749 c.cloned(n, out) 1750 } 1751 changed = true 1752 } 1753 } 1754 if c.post != nil { 1755 out, changed = c.postVisit(out, parent, changed) 1756 } 1757 return 1758 } 1759 func (c *cow) copyOnRewriteRefOfDerivedTable(n *DerivedTable, parent SQLNode) (out SQLNode, changed bool) { 1760 if n == nil || c.cursor.stop { 1761 return n, false 1762 } 1763 out = n 1764 if c.pre == nil || c.pre(n, parent) { 1765 _Select, changedSelect := c.copyOnRewriteSelectStatement(n.Select, n) 1766 if changedSelect { 1767 res := *n 1768 res.Select, _ = _Select.(SelectStatement) 1769 out = &res 1770 if c.cloned != nil { 1771 c.cloned(n, out) 1772 } 1773 changed = true 1774 } 1775 } 1776 if c.post != nil { 1777 out, changed = c.postVisit(out, parent, changed) 1778 } 1779 return 1780 } 1781 func (c *cow) copyOnRewriteRefOfDropColumn(n *DropColumn, parent SQLNode) (out SQLNode, changed bool) { 1782 if n == nil || c.cursor.stop { 1783 return n, false 1784 } 1785 out = n 1786 if c.pre == nil || c.pre(n, parent) { 1787 _Name, changedName := c.copyOnRewriteRefOfColName(n.Name, n) 1788 if changedName { 1789 res := *n 1790 res.Name, _ = _Name.(*ColName) 1791 out = &res 1792 if c.cloned != nil { 1793 c.cloned(n, out) 1794 } 1795 changed = true 1796 } 1797 } 1798 if c.post != nil { 1799 out, changed = c.postVisit(out, parent, changed) 1800 } 1801 return 1802 } 1803 func (c *cow) copyOnRewriteRefOfDropDatabase(n *DropDatabase, parent SQLNode) (out SQLNode, changed bool) { 1804 if n == nil || c.cursor.stop { 1805 return n, false 1806 } 1807 out = n 1808 if c.pre == nil || c.pre(n, parent) { 1809 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 1810 _DBName, changedDBName := c.copyOnRewriteIdentifierCS(n.DBName, n) 1811 if changedComments || changedDBName { 1812 res := *n 1813 res.Comments, _ = _Comments.(*ParsedComments) 1814 res.DBName, _ = _DBName.(IdentifierCS) 1815 out = &res 1816 if c.cloned != nil { 1817 c.cloned(n, out) 1818 } 1819 changed = true 1820 } 1821 } 1822 if c.post != nil { 1823 out, changed = c.postVisit(out, parent, changed) 1824 } 1825 return 1826 } 1827 func (c *cow) copyOnRewriteRefOfDropKey(n *DropKey, parent SQLNode) (out SQLNode, changed bool) { 1828 if n == nil || c.cursor.stop { 1829 return n, false 1830 } 1831 out = n 1832 if c.pre == nil || c.pre(n, parent) { 1833 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 1834 if changedName { 1835 res := *n 1836 res.Name, _ = _Name.(IdentifierCI) 1837 out = &res 1838 if c.cloned != nil { 1839 c.cloned(n, out) 1840 } 1841 changed = true 1842 } 1843 } 1844 if c.post != nil { 1845 out, changed = c.postVisit(out, parent, changed) 1846 } 1847 return 1848 } 1849 func (c *cow) copyOnRewriteRefOfDropTable(n *DropTable, parent SQLNode) (out SQLNode, changed bool) { 1850 if n == nil || c.cursor.stop { 1851 return n, false 1852 } 1853 out = n 1854 if c.pre == nil || c.pre(n, parent) { 1855 _FromTables, changedFromTables := c.copyOnRewriteTableNames(n.FromTables, n) 1856 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 1857 if changedFromTables || changedComments { 1858 res := *n 1859 res.FromTables, _ = _FromTables.(TableNames) 1860 res.Comments, _ = _Comments.(*ParsedComments) 1861 out = &res 1862 if c.cloned != nil { 1863 c.cloned(n, out) 1864 } 1865 changed = true 1866 } 1867 } 1868 if c.post != nil { 1869 out, changed = c.postVisit(out, parent, changed) 1870 } 1871 return 1872 } 1873 func (c *cow) copyOnRewriteRefOfDropView(n *DropView, parent SQLNode) (out SQLNode, changed bool) { 1874 if n == nil || c.cursor.stop { 1875 return n, false 1876 } 1877 out = n 1878 if c.pre == nil || c.pre(n, parent) { 1879 _FromTables, changedFromTables := c.copyOnRewriteTableNames(n.FromTables, n) 1880 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 1881 if changedFromTables || changedComments { 1882 res := *n 1883 res.FromTables, _ = _FromTables.(TableNames) 1884 res.Comments, _ = _Comments.(*ParsedComments) 1885 out = &res 1886 if c.cloned != nil { 1887 c.cloned(n, out) 1888 } 1889 changed = true 1890 } 1891 } 1892 if c.post != nil { 1893 out, changed = c.postVisit(out, parent, changed) 1894 } 1895 return 1896 } 1897 func (c *cow) copyOnRewriteRefOfExecuteStmt(n *ExecuteStmt, parent SQLNode) (out SQLNode, changed bool) { 1898 if n == nil || c.cursor.stop { 1899 return n, false 1900 } 1901 out = n 1902 if c.pre == nil || c.pre(n, parent) { 1903 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 1904 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 1905 var changedArguments bool 1906 _Arguments := make([]*Variable, len(n.Arguments)) 1907 for x, el := range n.Arguments { 1908 this, changed := c.copyOnRewriteRefOfVariable(el, n) 1909 _Arguments[x] = this.(*Variable) 1910 if changed { 1911 changedArguments = true 1912 } 1913 } 1914 if changedName || changedComments || changedArguments { 1915 res := *n 1916 res.Name, _ = _Name.(IdentifierCI) 1917 res.Comments, _ = _Comments.(*ParsedComments) 1918 res.Arguments = _Arguments 1919 out = &res 1920 if c.cloned != nil { 1921 c.cloned(n, out) 1922 } 1923 changed = true 1924 } 1925 } 1926 if c.post != nil { 1927 out, changed = c.postVisit(out, parent, changed) 1928 } 1929 return 1930 } 1931 func (c *cow) copyOnRewriteRefOfExistsExpr(n *ExistsExpr, parent SQLNode) (out SQLNode, changed bool) { 1932 if n == nil || c.cursor.stop { 1933 return n, false 1934 } 1935 out = n 1936 if c.pre == nil || c.pre(n, parent) { 1937 _Subquery, changedSubquery := c.copyOnRewriteRefOfSubquery(n.Subquery, n) 1938 if changedSubquery { 1939 res := *n 1940 res.Subquery, _ = _Subquery.(*Subquery) 1941 out = &res 1942 if c.cloned != nil { 1943 c.cloned(n, out) 1944 } 1945 changed = true 1946 } 1947 } 1948 if c.post != nil { 1949 out, changed = c.postVisit(out, parent, changed) 1950 } 1951 return 1952 } 1953 func (c *cow) copyOnRewriteRefOfExplainStmt(n *ExplainStmt, parent SQLNode) (out SQLNode, changed bool) { 1954 if n == nil || c.cursor.stop { 1955 return n, false 1956 } 1957 out = n 1958 if c.pre == nil || c.pre(n, parent) { 1959 _Statement, changedStatement := c.copyOnRewriteStatement(n.Statement, n) 1960 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 1961 if changedStatement || changedComments { 1962 res := *n 1963 res.Statement, _ = _Statement.(Statement) 1964 res.Comments, _ = _Comments.(*ParsedComments) 1965 out = &res 1966 if c.cloned != nil { 1967 c.cloned(n, out) 1968 } 1969 changed = true 1970 } 1971 } 1972 if c.post != nil { 1973 out, changed = c.postVisit(out, parent, changed) 1974 } 1975 return 1976 } 1977 func (c *cow) copyOnRewriteRefOfExplainTab(n *ExplainTab, parent SQLNode) (out SQLNode, changed bool) { 1978 if n == nil || c.cursor.stop { 1979 return n, false 1980 } 1981 out = n 1982 if c.pre == nil || c.pre(n, parent) { 1983 _Table, changedTable := c.copyOnRewriteTableName(n.Table, n) 1984 if changedTable { 1985 res := *n 1986 res.Table, _ = _Table.(TableName) 1987 out = &res 1988 if c.cloned != nil { 1989 c.cloned(n, out) 1990 } 1991 changed = true 1992 } 1993 } 1994 if c.post != nil { 1995 out, changed = c.postVisit(out, parent, changed) 1996 } 1997 return 1998 } 1999 func (c *cow) copyOnRewriteExprs(n Exprs, parent SQLNode) (out SQLNode, changed bool) { 2000 if n == nil || c.cursor.stop { 2001 return n, false 2002 } 2003 out = n 2004 if c.pre == nil || c.pre(n, parent) { 2005 res := make(Exprs, len(n)) 2006 for x, el := range n { 2007 this, change := c.copyOnRewriteExpr(el, n) 2008 res[x] = this.(Expr) 2009 if change { 2010 changed = true 2011 } 2012 } 2013 if changed { 2014 out = res 2015 } 2016 } 2017 if c.post != nil { 2018 out, changed = c.postVisit(out, parent, changed) 2019 } 2020 return 2021 } 2022 func (c *cow) copyOnRewriteRefOfExtractFuncExpr(n *ExtractFuncExpr, parent SQLNode) (out SQLNode, changed bool) { 2023 if n == nil || c.cursor.stop { 2024 return n, false 2025 } 2026 out = n 2027 if c.pre == nil || c.pre(n, parent) { 2028 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 2029 if changedExpr { 2030 res := *n 2031 res.Expr, _ = _Expr.(Expr) 2032 out = &res 2033 if c.cloned != nil { 2034 c.cloned(n, out) 2035 } 2036 changed = true 2037 } 2038 } 2039 if c.post != nil { 2040 out, changed = c.postVisit(out, parent, changed) 2041 } 2042 return 2043 } 2044 func (c *cow) copyOnRewriteRefOfExtractValueExpr(n *ExtractValueExpr, parent SQLNode) (out SQLNode, changed bool) { 2045 if n == nil || c.cursor.stop { 2046 return n, false 2047 } 2048 out = n 2049 if c.pre == nil || c.pre(n, parent) { 2050 _Fragment, changedFragment := c.copyOnRewriteExpr(n.Fragment, n) 2051 _XPathExpr, changedXPathExpr := c.copyOnRewriteExpr(n.XPathExpr, n) 2052 if changedFragment || changedXPathExpr { 2053 res := *n 2054 res.Fragment, _ = _Fragment.(Expr) 2055 res.XPathExpr, _ = _XPathExpr.(Expr) 2056 out = &res 2057 if c.cloned != nil { 2058 c.cloned(n, out) 2059 } 2060 changed = true 2061 } 2062 } 2063 if c.post != nil { 2064 out, changed = c.postVisit(out, parent, changed) 2065 } 2066 return 2067 } 2068 func (c *cow) copyOnRewriteRefOfExtractedSubquery(n *ExtractedSubquery, parent SQLNode) (out SQLNode, changed bool) { 2069 if n == nil || c.cursor.stop { 2070 return n, false 2071 } 2072 out = n 2073 if c.pre == nil || c.pre(n, parent) { 2074 _Original, changedOriginal := c.copyOnRewriteExpr(n.Original, n) 2075 _Subquery, changedSubquery := c.copyOnRewriteRefOfSubquery(n.Subquery, n) 2076 _OtherSide, changedOtherSide := c.copyOnRewriteExpr(n.OtherSide, n) 2077 _alternative, changedalternative := c.copyOnRewriteExpr(n.alternative, n) 2078 if changedOriginal || changedSubquery || changedOtherSide || changedalternative { 2079 res := *n 2080 res.Original, _ = _Original.(Expr) 2081 res.Subquery, _ = _Subquery.(*Subquery) 2082 res.OtherSide, _ = _OtherSide.(Expr) 2083 res.alternative, _ = _alternative.(Expr) 2084 out = &res 2085 if c.cloned != nil { 2086 c.cloned(n, out) 2087 } 2088 changed = true 2089 } 2090 } 2091 if c.post != nil { 2092 out, changed = c.postVisit(out, parent, changed) 2093 } 2094 return 2095 } 2096 func (c *cow) copyOnRewriteRefOfFirstOrLastValueExpr(n *FirstOrLastValueExpr, parent SQLNode) (out SQLNode, changed bool) { 2097 if n == nil || c.cursor.stop { 2098 return n, false 2099 } 2100 out = n 2101 if c.pre == nil || c.pre(n, parent) { 2102 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 2103 _NullTreatmentClause, changedNullTreatmentClause := c.copyOnRewriteRefOfNullTreatmentClause(n.NullTreatmentClause, n) 2104 _OverClause, changedOverClause := c.copyOnRewriteRefOfOverClause(n.OverClause, n) 2105 if changedExpr || changedNullTreatmentClause || changedOverClause { 2106 res := *n 2107 res.Expr, _ = _Expr.(Expr) 2108 res.NullTreatmentClause, _ = _NullTreatmentClause.(*NullTreatmentClause) 2109 res.OverClause, _ = _OverClause.(*OverClause) 2110 out = &res 2111 if c.cloned != nil { 2112 c.cloned(n, out) 2113 } 2114 changed = true 2115 } 2116 } 2117 if c.post != nil { 2118 out, changed = c.postVisit(out, parent, changed) 2119 } 2120 return 2121 } 2122 func (c *cow) copyOnRewriteRefOfFlush(n *Flush, parent SQLNode) (out SQLNode, changed bool) { 2123 if n == nil || c.cursor.stop { 2124 return n, false 2125 } 2126 out = n 2127 if c.pre == nil || c.pre(n, parent) { 2128 _TableNames, changedTableNames := c.copyOnRewriteTableNames(n.TableNames, n) 2129 if changedTableNames { 2130 res := *n 2131 res.TableNames, _ = _TableNames.(TableNames) 2132 out = &res 2133 if c.cloned != nil { 2134 c.cloned(n, out) 2135 } 2136 changed = true 2137 } 2138 } 2139 if c.post != nil { 2140 out, changed = c.postVisit(out, parent, changed) 2141 } 2142 return 2143 } 2144 func (c *cow) copyOnRewriteRefOfForce(n *Force, parent SQLNode) (out SQLNode, changed bool) { 2145 if n == nil || c.cursor.stop { 2146 return n, false 2147 } 2148 out = n 2149 if c.pre == nil || c.pre(n, parent) { 2150 } 2151 if c.post != nil { 2152 out, changed = c.postVisit(out, parent, changed) 2153 } 2154 return 2155 } 2156 func (c *cow) copyOnRewriteRefOfForeignKeyDefinition(n *ForeignKeyDefinition, parent SQLNode) (out SQLNode, changed bool) { 2157 if n == nil || c.cursor.stop { 2158 return n, false 2159 } 2160 out = n 2161 if c.pre == nil || c.pre(n, parent) { 2162 _Source, changedSource := c.copyOnRewriteColumns(n.Source, n) 2163 _IndexName, changedIndexName := c.copyOnRewriteIdentifierCI(n.IndexName, n) 2164 _ReferenceDefinition, changedReferenceDefinition := c.copyOnRewriteRefOfReferenceDefinition(n.ReferenceDefinition, n) 2165 if changedSource || changedIndexName || changedReferenceDefinition { 2166 res := *n 2167 res.Source, _ = _Source.(Columns) 2168 res.IndexName, _ = _IndexName.(IdentifierCI) 2169 res.ReferenceDefinition, _ = _ReferenceDefinition.(*ReferenceDefinition) 2170 out = &res 2171 if c.cloned != nil { 2172 c.cloned(n, out) 2173 } 2174 changed = true 2175 } 2176 } 2177 if c.post != nil { 2178 out, changed = c.postVisit(out, parent, changed) 2179 } 2180 return 2181 } 2182 func (c *cow) copyOnRewriteRefOfFrameClause(n *FrameClause, parent SQLNode) (out SQLNode, changed bool) { 2183 if n == nil || c.cursor.stop { 2184 return n, false 2185 } 2186 out = n 2187 if c.pre == nil || c.pre(n, parent) { 2188 _Start, changedStart := c.copyOnRewriteRefOfFramePoint(n.Start, n) 2189 _End, changedEnd := c.copyOnRewriteRefOfFramePoint(n.End, n) 2190 if changedStart || changedEnd { 2191 res := *n 2192 res.Start, _ = _Start.(*FramePoint) 2193 res.End, _ = _End.(*FramePoint) 2194 out = &res 2195 if c.cloned != nil { 2196 c.cloned(n, out) 2197 } 2198 changed = true 2199 } 2200 } 2201 if c.post != nil { 2202 out, changed = c.postVisit(out, parent, changed) 2203 } 2204 return 2205 } 2206 func (c *cow) copyOnRewriteRefOfFramePoint(n *FramePoint, parent SQLNode) (out SQLNode, changed bool) { 2207 if n == nil || c.cursor.stop { 2208 return n, false 2209 } 2210 out = n 2211 if c.pre == nil || c.pre(n, parent) { 2212 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 2213 if changedExpr { 2214 res := *n 2215 res.Expr, _ = _Expr.(Expr) 2216 out = &res 2217 if c.cloned != nil { 2218 c.cloned(n, out) 2219 } 2220 changed = true 2221 } 2222 } 2223 if c.post != nil { 2224 out, changed = c.postVisit(out, parent, changed) 2225 } 2226 return 2227 } 2228 func (c *cow) copyOnRewriteRefOfFromFirstLastClause(n *FromFirstLastClause, parent SQLNode) (out SQLNode, changed bool) { 2229 if n == nil || c.cursor.stop { 2230 return n, false 2231 } 2232 out = n 2233 if c.pre == nil || c.pre(n, parent) { 2234 } 2235 if c.post != nil { 2236 out, changed = c.postVisit(out, parent, changed) 2237 } 2238 return 2239 } 2240 func (c *cow) copyOnRewriteRefOfFuncExpr(n *FuncExpr, parent SQLNode) (out SQLNode, changed bool) { 2241 if n == nil || c.cursor.stop { 2242 return n, false 2243 } 2244 out = n 2245 if c.pre == nil || c.pre(n, parent) { 2246 _Qualifier, changedQualifier := c.copyOnRewriteIdentifierCS(n.Qualifier, n) 2247 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 2248 _Exprs, changedExprs := c.copyOnRewriteSelectExprs(n.Exprs, n) 2249 if changedQualifier || changedName || changedExprs { 2250 res := *n 2251 res.Qualifier, _ = _Qualifier.(IdentifierCS) 2252 res.Name, _ = _Name.(IdentifierCI) 2253 res.Exprs, _ = _Exprs.(SelectExprs) 2254 out = &res 2255 if c.cloned != nil { 2256 c.cloned(n, out) 2257 } 2258 changed = true 2259 } 2260 } 2261 if c.post != nil { 2262 out, changed = c.postVisit(out, parent, changed) 2263 } 2264 return 2265 } 2266 func (c *cow) copyOnRewriteRefOfGTIDFuncExpr(n *GTIDFuncExpr, parent SQLNode) (out SQLNode, changed bool) { 2267 if n == nil || c.cursor.stop { 2268 return n, false 2269 } 2270 out = n 2271 if c.pre == nil || c.pre(n, parent) { 2272 _Set1, changedSet1 := c.copyOnRewriteExpr(n.Set1, n) 2273 _Set2, changedSet2 := c.copyOnRewriteExpr(n.Set2, n) 2274 _Timeout, changedTimeout := c.copyOnRewriteExpr(n.Timeout, n) 2275 _Channel, changedChannel := c.copyOnRewriteExpr(n.Channel, n) 2276 if changedSet1 || changedSet2 || changedTimeout || changedChannel { 2277 res := *n 2278 res.Set1, _ = _Set1.(Expr) 2279 res.Set2, _ = _Set2.(Expr) 2280 res.Timeout, _ = _Timeout.(Expr) 2281 res.Channel, _ = _Channel.(Expr) 2282 out = &res 2283 if c.cloned != nil { 2284 c.cloned(n, out) 2285 } 2286 changed = true 2287 } 2288 } 2289 if c.post != nil { 2290 out, changed = c.postVisit(out, parent, changed) 2291 } 2292 return 2293 } 2294 func (c *cow) copyOnRewriteGroupBy(n GroupBy, parent SQLNode) (out SQLNode, changed bool) { 2295 if n == nil || c.cursor.stop { 2296 return n, false 2297 } 2298 out = n 2299 if c.pre == nil || c.pre(n, parent) { 2300 res := make(GroupBy, len(n)) 2301 for x, el := range n { 2302 this, change := c.copyOnRewriteExpr(el, n) 2303 res[x] = this.(Expr) 2304 if change { 2305 changed = true 2306 } 2307 } 2308 if changed { 2309 out = res 2310 } 2311 } 2312 if c.post != nil { 2313 out, changed = c.postVisit(out, parent, changed) 2314 } 2315 return 2316 } 2317 func (c *cow) copyOnRewriteRefOfGroupConcatExpr(n *GroupConcatExpr, parent SQLNode) (out SQLNode, changed bool) { 2318 if n == nil || c.cursor.stop { 2319 return n, false 2320 } 2321 out = n 2322 if c.pre == nil || c.pre(n, parent) { 2323 _Exprs, changedExprs := c.copyOnRewriteExprs(n.Exprs, n) 2324 _OrderBy, changedOrderBy := c.copyOnRewriteOrderBy(n.OrderBy, n) 2325 _Limit, changedLimit := c.copyOnRewriteRefOfLimit(n.Limit, n) 2326 if changedExprs || changedOrderBy || changedLimit { 2327 res := *n 2328 res.Exprs, _ = _Exprs.(Exprs) 2329 res.OrderBy, _ = _OrderBy.(OrderBy) 2330 res.Limit, _ = _Limit.(*Limit) 2331 out = &res 2332 if c.cloned != nil { 2333 c.cloned(n, out) 2334 } 2335 changed = true 2336 } 2337 } 2338 if c.post != nil { 2339 out, changed = c.postVisit(out, parent, changed) 2340 } 2341 return 2342 } 2343 func (c *cow) copyOnRewriteIdentifierCI(n IdentifierCI, parent SQLNode) (out SQLNode, changed bool) { 2344 out = n 2345 if c.pre == nil || c.pre(n, parent) { 2346 } 2347 if c.post != nil { 2348 out, changed = c.postVisit(out, parent, changed) 2349 } 2350 return 2351 } 2352 func (c *cow) copyOnRewriteIdentifierCS(n IdentifierCS, parent SQLNode) (out SQLNode, changed bool) { 2353 out = n 2354 if c.pre == nil || c.pre(n, parent) { 2355 } 2356 if c.post != nil { 2357 out, changed = c.postVisit(out, parent, changed) 2358 } 2359 return 2360 } 2361 func (c *cow) copyOnRewriteRefOfIndexDefinition(n *IndexDefinition, parent SQLNode) (out SQLNode, changed bool) { 2362 if n == nil || c.cursor.stop { 2363 return n, false 2364 } 2365 out = n 2366 if c.pre == nil || c.pre(n, parent) { 2367 _Info, changedInfo := c.copyOnRewriteRefOfIndexInfo(n.Info, n) 2368 if changedInfo { 2369 res := *n 2370 res.Info, _ = _Info.(*IndexInfo) 2371 out = &res 2372 if c.cloned != nil { 2373 c.cloned(n, out) 2374 } 2375 changed = true 2376 } 2377 } 2378 if c.post != nil { 2379 out, changed = c.postVisit(out, parent, changed) 2380 } 2381 return 2382 } 2383 func (c *cow) copyOnRewriteRefOfIndexHint(n *IndexHint, parent SQLNode) (out SQLNode, changed bool) { 2384 if n == nil || c.cursor.stop { 2385 return n, false 2386 } 2387 out = n 2388 if c.pre == nil || c.pre(n, parent) { 2389 var changedIndexes bool 2390 _Indexes := make([]IdentifierCI, len(n.Indexes)) 2391 for x, el := range n.Indexes { 2392 this, changed := c.copyOnRewriteIdentifierCI(el, n) 2393 _Indexes[x] = this.(IdentifierCI) 2394 if changed { 2395 changedIndexes = true 2396 } 2397 } 2398 if changedIndexes { 2399 res := *n 2400 res.Indexes = _Indexes 2401 out = &res 2402 if c.cloned != nil { 2403 c.cloned(n, out) 2404 } 2405 changed = true 2406 } 2407 } 2408 if c.post != nil { 2409 out, changed = c.postVisit(out, parent, changed) 2410 } 2411 return 2412 } 2413 func (c *cow) copyOnRewriteIndexHints(n IndexHints, parent SQLNode) (out SQLNode, changed bool) { 2414 if n == nil || c.cursor.stop { 2415 return n, false 2416 } 2417 out = n 2418 if c.pre == nil || c.pre(n, parent) { 2419 res := make(IndexHints, len(n)) 2420 for x, el := range n { 2421 this, change := c.copyOnRewriteRefOfIndexHint(el, n) 2422 res[x] = this.(*IndexHint) 2423 if change { 2424 changed = true 2425 } 2426 } 2427 if changed { 2428 out = res 2429 } 2430 } 2431 if c.post != nil { 2432 out, changed = c.postVisit(out, parent, changed) 2433 } 2434 return 2435 } 2436 func (c *cow) copyOnRewriteRefOfIndexInfo(n *IndexInfo, parent SQLNode) (out SQLNode, changed bool) { 2437 if n == nil || c.cursor.stop { 2438 return n, false 2439 } 2440 out = n 2441 if c.pre == nil || c.pre(n, parent) { 2442 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 2443 _ConstraintName, changedConstraintName := c.copyOnRewriteIdentifierCI(n.ConstraintName, n) 2444 if changedName || changedConstraintName { 2445 res := *n 2446 res.Name, _ = _Name.(IdentifierCI) 2447 res.ConstraintName, _ = _ConstraintName.(IdentifierCI) 2448 out = &res 2449 if c.cloned != nil { 2450 c.cloned(n, out) 2451 } 2452 changed = true 2453 } 2454 } 2455 if c.post != nil { 2456 out, changed = c.postVisit(out, parent, changed) 2457 } 2458 return 2459 } 2460 func (c *cow) copyOnRewriteRefOfInsert(n *Insert, parent SQLNode) (out SQLNode, changed bool) { 2461 if n == nil || c.cursor.stop { 2462 return n, false 2463 } 2464 out = n 2465 if c.pre == nil || c.pre(n, parent) { 2466 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 2467 _Table, changedTable := c.copyOnRewriteTableName(n.Table, n) 2468 _Partitions, changedPartitions := c.copyOnRewritePartitions(n.Partitions, n) 2469 _Columns, changedColumns := c.copyOnRewriteColumns(n.Columns, n) 2470 _Rows, changedRows := c.copyOnRewriteInsertRows(n.Rows, n) 2471 _OnDup, changedOnDup := c.copyOnRewriteOnDup(n.OnDup, n) 2472 if changedComments || changedTable || changedPartitions || changedColumns || changedRows || changedOnDup { 2473 res := *n 2474 res.Comments, _ = _Comments.(*ParsedComments) 2475 res.Table, _ = _Table.(TableName) 2476 res.Partitions, _ = _Partitions.(Partitions) 2477 res.Columns, _ = _Columns.(Columns) 2478 res.Rows, _ = _Rows.(InsertRows) 2479 res.OnDup, _ = _OnDup.(OnDup) 2480 out = &res 2481 if c.cloned != nil { 2482 c.cloned(n, out) 2483 } 2484 changed = true 2485 } 2486 } 2487 if c.post != nil { 2488 out, changed = c.postVisit(out, parent, changed) 2489 } 2490 return 2491 } 2492 func (c *cow) copyOnRewriteRefOfInsertExpr(n *InsertExpr, parent SQLNode) (out SQLNode, changed bool) { 2493 if n == nil || c.cursor.stop { 2494 return n, false 2495 } 2496 out = n 2497 if c.pre == nil || c.pre(n, parent) { 2498 _Str, changedStr := c.copyOnRewriteExpr(n.Str, n) 2499 _Pos, changedPos := c.copyOnRewriteExpr(n.Pos, n) 2500 _Len, changedLen := c.copyOnRewriteExpr(n.Len, n) 2501 _NewStr, changedNewStr := c.copyOnRewriteExpr(n.NewStr, n) 2502 if changedStr || changedPos || changedLen || changedNewStr { 2503 res := *n 2504 res.Str, _ = _Str.(Expr) 2505 res.Pos, _ = _Pos.(Expr) 2506 res.Len, _ = _Len.(Expr) 2507 res.NewStr, _ = _NewStr.(Expr) 2508 out = &res 2509 if c.cloned != nil { 2510 c.cloned(n, out) 2511 } 2512 changed = true 2513 } 2514 } 2515 if c.post != nil { 2516 out, changed = c.postVisit(out, parent, changed) 2517 } 2518 return 2519 } 2520 func (c *cow) copyOnRewriteRefOfIntervalExpr(n *IntervalExpr, parent SQLNode) (out SQLNode, changed bool) { 2521 if n == nil || c.cursor.stop { 2522 return n, false 2523 } 2524 out = n 2525 if c.pre == nil || c.pre(n, parent) { 2526 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 2527 if changedExpr { 2528 res := *n 2529 res.Expr, _ = _Expr.(Expr) 2530 out = &res 2531 if c.cloned != nil { 2532 c.cloned(n, out) 2533 } 2534 changed = true 2535 } 2536 } 2537 if c.post != nil { 2538 out, changed = c.postVisit(out, parent, changed) 2539 } 2540 return 2541 } 2542 func (c *cow) copyOnRewriteRefOfIntervalFuncExpr(n *IntervalFuncExpr, parent SQLNode) (out SQLNode, changed bool) { 2543 if n == nil || c.cursor.stop { 2544 return n, false 2545 } 2546 out = n 2547 if c.pre == nil || c.pre(n, parent) { 2548 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 2549 _Exprs, changedExprs := c.copyOnRewriteExprs(n.Exprs, n) 2550 if changedExpr || changedExprs { 2551 res := *n 2552 res.Expr, _ = _Expr.(Expr) 2553 res.Exprs, _ = _Exprs.(Exprs) 2554 out = &res 2555 if c.cloned != nil { 2556 c.cloned(n, out) 2557 } 2558 changed = true 2559 } 2560 } 2561 if c.post != nil { 2562 out, changed = c.postVisit(out, parent, changed) 2563 } 2564 return 2565 } 2566 func (c *cow) copyOnRewriteRefOfIntroducerExpr(n *IntroducerExpr, parent SQLNode) (out SQLNode, changed bool) { 2567 if n == nil || c.cursor.stop { 2568 return n, false 2569 } 2570 out = n 2571 if c.pre == nil || c.pre(n, parent) { 2572 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 2573 if changedExpr { 2574 res := *n 2575 res.Expr, _ = _Expr.(Expr) 2576 out = &res 2577 if c.cloned != nil { 2578 c.cloned(n, out) 2579 } 2580 changed = true 2581 } 2582 } 2583 if c.post != nil { 2584 out, changed = c.postVisit(out, parent, changed) 2585 } 2586 return 2587 } 2588 func (c *cow) copyOnRewriteRefOfIsExpr(n *IsExpr, parent SQLNode) (out SQLNode, changed bool) { 2589 if n == nil || c.cursor.stop { 2590 return n, false 2591 } 2592 out = n 2593 if c.pre == nil || c.pre(n, parent) { 2594 _Left, changedLeft := c.copyOnRewriteExpr(n.Left, n) 2595 if changedLeft { 2596 res := *n 2597 res.Left, _ = _Left.(Expr) 2598 out = &res 2599 if c.cloned != nil { 2600 c.cloned(n, out) 2601 } 2602 changed = true 2603 } 2604 } 2605 if c.post != nil { 2606 out, changed = c.postVisit(out, parent, changed) 2607 } 2608 return 2609 } 2610 func (c *cow) copyOnRewriteRefOfJSONArrayExpr(n *JSONArrayExpr, parent SQLNode) (out SQLNode, changed bool) { 2611 if n == nil || c.cursor.stop { 2612 return n, false 2613 } 2614 out = n 2615 if c.pre == nil || c.pre(n, parent) { 2616 _Params, changedParams := c.copyOnRewriteExprs(n.Params, n) 2617 if changedParams { 2618 res := *n 2619 res.Params, _ = _Params.(Exprs) 2620 out = &res 2621 if c.cloned != nil { 2622 c.cloned(n, out) 2623 } 2624 changed = true 2625 } 2626 } 2627 if c.post != nil { 2628 out, changed = c.postVisit(out, parent, changed) 2629 } 2630 return 2631 } 2632 func (c *cow) copyOnRewriteRefOfJSONAttributesExpr(n *JSONAttributesExpr, parent SQLNode) (out SQLNode, changed bool) { 2633 if n == nil || c.cursor.stop { 2634 return n, false 2635 } 2636 out = n 2637 if c.pre == nil || c.pre(n, parent) { 2638 _JSONDoc, changedJSONDoc := c.copyOnRewriteExpr(n.JSONDoc, n) 2639 _Path, changedPath := c.copyOnRewriteExpr(n.Path, n) 2640 if changedJSONDoc || changedPath { 2641 res := *n 2642 res.JSONDoc, _ = _JSONDoc.(Expr) 2643 res.Path, _ = _Path.(Expr) 2644 out = &res 2645 if c.cloned != nil { 2646 c.cloned(n, out) 2647 } 2648 changed = true 2649 } 2650 } 2651 if c.post != nil { 2652 out, changed = c.postVisit(out, parent, changed) 2653 } 2654 return 2655 } 2656 func (c *cow) copyOnRewriteRefOfJSONContainsExpr(n *JSONContainsExpr, parent SQLNode) (out SQLNode, changed bool) { 2657 if n == nil || c.cursor.stop { 2658 return n, false 2659 } 2660 out = n 2661 if c.pre == nil || c.pre(n, parent) { 2662 _Target, changedTarget := c.copyOnRewriteExpr(n.Target, n) 2663 _Candidate, changedCandidate := c.copyOnRewriteExpr(n.Candidate, n) 2664 var changedPathList bool 2665 _PathList := make([]Expr, len(n.PathList)) 2666 for x, el := range n.PathList { 2667 this, changed := c.copyOnRewriteExpr(el, n) 2668 _PathList[x] = this.(Expr) 2669 if changed { 2670 changedPathList = true 2671 } 2672 } 2673 if changedTarget || changedCandidate || changedPathList { 2674 res := *n 2675 res.Target, _ = _Target.(Expr) 2676 res.Candidate, _ = _Candidate.(Expr) 2677 res.PathList = _PathList 2678 out = &res 2679 if c.cloned != nil { 2680 c.cloned(n, out) 2681 } 2682 changed = true 2683 } 2684 } 2685 if c.post != nil { 2686 out, changed = c.postVisit(out, parent, changed) 2687 } 2688 return 2689 } 2690 func (c *cow) copyOnRewriteRefOfJSONContainsPathExpr(n *JSONContainsPathExpr, parent SQLNode) (out SQLNode, changed bool) { 2691 if n == nil || c.cursor.stop { 2692 return n, false 2693 } 2694 out = n 2695 if c.pre == nil || c.pre(n, parent) { 2696 _JSONDoc, changedJSONDoc := c.copyOnRewriteExpr(n.JSONDoc, n) 2697 _OneOrAll, changedOneOrAll := c.copyOnRewriteExpr(n.OneOrAll, n) 2698 var changedPathList bool 2699 _PathList := make([]Expr, len(n.PathList)) 2700 for x, el := range n.PathList { 2701 this, changed := c.copyOnRewriteExpr(el, n) 2702 _PathList[x] = this.(Expr) 2703 if changed { 2704 changedPathList = true 2705 } 2706 } 2707 if changedJSONDoc || changedOneOrAll || changedPathList { 2708 res := *n 2709 res.JSONDoc, _ = _JSONDoc.(Expr) 2710 res.OneOrAll, _ = _OneOrAll.(Expr) 2711 res.PathList = _PathList 2712 out = &res 2713 if c.cloned != nil { 2714 c.cloned(n, out) 2715 } 2716 changed = true 2717 } 2718 } 2719 if c.post != nil { 2720 out, changed = c.postVisit(out, parent, changed) 2721 } 2722 return 2723 } 2724 func (c *cow) copyOnRewriteRefOfJSONExtractExpr(n *JSONExtractExpr, parent SQLNode) (out SQLNode, changed bool) { 2725 if n == nil || c.cursor.stop { 2726 return n, false 2727 } 2728 out = n 2729 if c.pre == nil || c.pre(n, parent) { 2730 _JSONDoc, changedJSONDoc := c.copyOnRewriteExpr(n.JSONDoc, n) 2731 var changedPathList bool 2732 _PathList := make([]Expr, len(n.PathList)) 2733 for x, el := range n.PathList { 2734 this, changed := c.copyOnRewriteExpr(el, n) 2735 _PathList[x] = this.(Expr) 2736 if changed { 2737 changedPathList = true 2738 } 2739 } 2740 if changedJSONDoc || changedPathList { 2741 res := *n 2742 res.JSONDoc, _ = _JSONDoc.(Expr) 2743 res.PathList = _PathList 2744 out = &res 2745 if c.cloned != nil { 2746 c.cloned(n, out) 2747 } 2748 changed = true 2749 } 2750 } 2751 if c.post != nil { 2752 out, changed = c.postVisit(out, parent, changed) 2753 } 2754 return 2755 } 2756 func (c *cow) copyOnRewriteRefOfJSONKeysExpr(n *JSONKeysExpr, parent SQLNode) (out SQLNode, changed bool) { 2757 if n == nil || c.cursor.stop { 2758 return n, false 2759 } 2760 out = n 2761 if c.pre == nil || c.pre(n, parent) { 2762 _JSONDoc, changedJSONDoc := c.copyOnRewriteExpr(n.JSONDoc, n) 2763 _Path, changedPath := c.copyOnRewriteExpr(n.Path, n) 2764 if changedJSONDoc || changedPath { 2765 res := *n 2766 res.JSONDoc, _ = _JSONDoc.(Expr) 2767 res.Path, _ = _Path.(Expr) 2768 out = &res 2769 if c.cloned != nil { 2770 c.cloned(n, out) 2771 } 2772 changed = true 2773 } 2774 } 2775 if c.post != nil { 2776 out, changed = c.postVisit(out, parent, changed) 2777 } 2778 return 2779 } 2780 func (c *cow) copyOnRewriteRefOfJSONObjectExpr(n *JSONObjectExpr, parent SQLNode) (out SQLNode, changed bool) { 2781 if n == nil || c.cursor.stop { 2782 return n, false 2783 } 2784 out = n 2785 if c.pre == nil || c.pre(n, parent) { 2786 var changedParams bool 2787 _Params := make([]*JSONObjectParam, len(n.Params)) 2788 for x, el := range n.Params { 2789 this, changed := c.copyOnRewriteRefOfJSONObjectParam(el, n) 2790 _Params[x] = this.(*JSONObjectParam) 2791 if changed { 2792 changedParams = true 2793 } 2794 } 2795 if changedParams { 2796 res := *n 2797 res.Params = _Params 2798 out = &res 2799 if c.cloned != nil { 2800 c.cloned(n, out) 2801 } 2802 changed = true 2803 } 2804 } 2805 if c.post != nil { 2806 out, changed = c.postVisit(out, parent, changed) 2807 } 2808 return 2809 } 2810 func (c *cow) copyOnRewriteRefOfJSONObjectParam(n *JSONObjectParam, parent SQLNode) (out SQLNode, changed bool) { 2811 if n == nil || c.cursor.stop { 2812 return n, false 2813 } 2814 out = n 2815 if c.pre == nil || c.pre(n, parent) { 2816 _Key, changedKey := c.copyOnRewriteExpr(n.Key, n) 2817 _Value, changedValue := c.copyOnRewriteExpr(n.Value, n) 2818 if changedKey || changedValue { 2819 res := *n 2820 res.Key, _ = _Key.(Expr) 2821 res.Value, _ = _Value.(Expr) 2822 out = &res 2823 if c.cloned != nil { 2824 c.cloned(n, out) 2825 } 2826 changed = true 2827 } 2828 } 2829 if c.post != nil { 2830 out, changed = c.postVisit(out, parent, changed) 2831 } 2832 return 2833 } 2834 func (c *cow) copyOnRewriteRefOfJSONOverlapsExpr(n *JSONOverlapsExpr, parent SQLNode) (out SQLNode, changed bool) { 2835 if n == nil || c.cursor.stop { 2836 return n, false 2837 } 2838 out = n 2839 if c.pre == nil || c.pre(n, parent) { 2840 _JSONDoc1, changedJSONDoc1 := c.copyOnRewriteExpr(n.JSONDoc1, n) 2841 _JSONDoc2, changedJSONDoc2 := c.copyOnRewriteExpr(n.JSONDoc2, n) 2842 if changedJSONDoc1 || changedJSONDoc2 { 2843 res := *n 2844 res.JSONDoc1, _ = _JSONDoc1.(Expr) 2845 res.JSONDoc2, _ = _JSONDoc2.(Expr) 2846 out = &res 2847 if c.cloned != nil { 2848 c.cloned(n, out) 2849 } 2850 changed = true 2851 } 2852 } 2853 if c.post != nil { 2854 out, changed = c.postVisit(out, parent, changed) 2855 } 2856 return 2857 } 2858 func (c *cow) copyOnRewriteRefOfJSONPrettyExpr(n *JSONPrettyExpr, parent SQLNode) (out SQLNode, changed bool) { 2859 if n == nil || c.cursor.stop { 2860 return n, false 2861 } 2862 out = n 2863 if c.pre == nil || c.pre(n, parent) { 2864 _JSONVal, changedJSONVal := c.copyOnRewriteExpr(n.JSONVal, n) 2865 if changedJSONVal { 2866 res := *n 2867 res.JSONVal, _ = _JSONVal.(Expr) 2868 out = &res 2869 if c.cloned != nil { 2870 c.cloned(n, out) 2871 } 2872 changed = true 2873 } 2874 } 2875 if c.post != nil { 2876 out, changed = c.postVisit(out, parent, changed) 2877 } 2878 return 2879 } 2880 func (c *cow) copyOnRewriteRefOfJSONQuoteExpr(n *JSONQuoteExpr, parent SQLNode) (out SQLNode, changed bool) { 2881 if n == nil || c.cursor.stop { 2882 return n, false 2883 } 2884 out = n 2885 if c.pre == nil || c.pre(n, parent) { 2886 _StringArg, changedStringArg := c.copyOnRewriteExpr(n.StringArg, n) 2887 if changedStringArg { 2888 res := *n 2889 res.StringArg, _ = _StringArg.(Expr) 2890 out = &res 2891 if c.cloned != nil { 2892 c.cloned(n, out) 2893 } 2894 changed = true 2895 } 2896 } 2897 if c.post != nil { 2898 out, changed = c.postVisit(out, parent, changed) 2899 } 2900 return 2901 } 2902 func (c *cow) copyOnRewriteRefOfJSONRemoveExpr(n *JSONRemoveExpr, parent SQLNode) (out SQLNode, changed bool) { 2903 if n == nil || c.cursor.stop { 2904 return n, false 2905 } 2906 out = n 2907 if c.pre == nil || c.pre(n, parent) { 2908 _JSONDoc, changedJSONDoc := c.copyOnRewriteExpr(n.JSONDoc, n) 2909 _PathList, changedPathList := c.copyOnRewriteExprs(n.PathList, n) 2910 if changedJSONDoc || changedPathList { 2911 res := *n 2912 res.JSONDoc, _ = _JSONDoc.(Expr) 2913 res.PathList, _ = _PathList.(Exprs) 2914 out = &res 2915 if c.cloned != nil { 2916 c.cloned(n, out) 2917 } 2918 changed = true 2919 } 2920 } 2921 if c.post != nil { 2922 out, changed = c.postVisit(out, parent, changed) 2923 } 2924 return 2925 } 2926 func (c *cow) copyOnRewriteRefOfJSONSchemaValidFuncExpr(n *JSONSchemaValidFuncExpr, parent SQLNode) (out SQLNode, changed bool) { 2927 if n == nil || c.cursor.stop { 2928 return n, false 2929 } 2930 out = n 2931 if c.pre == nil || c.pre(n, parent) { 2932 _Schema, changedSchema := c.copyOnRewriteExpr(n.Schema, n) 2933 _Document, changedDocument := c.copyOnRewriteExpr(n.Document, n) 2934 if changedSchema || changedDocument { 2935 res := *n 2936 res.Schema, _ = _Schema.(Expr) 2937 res.Document, _ = _Document.(Expr) 2938 out = &res 2939 if c.cloned != nil { 2940 c.cloned(n, out) 2941 } 2942 changed = true 2943 } 2944 } 2945 if c.post != nil { 2946 out, changed = c.postVisit(out, parent, changed) 2947 } 2948 return 2949 } 2950 func (c *cow) copyOnRewriteRefOfJSONSchemaValidationReportFuncExpr(n *JSONSchemaValidationReportFuncExpr, parent SQLNode) (out SQLNode, changed bool) { 2951 if n == nil || c.cursor.stop { 2952 return n, false 2953 } 2954 out = n 2955 if c.pre == nil || c.pre(n, parent) { 2956 _Schema, changedSchema := c.copyOnRewriteExpr(n.Schema, n) 2957 _Document, changedDocument := c.copyOnRewriteExpr(n.Document, n) 2958 if changedSchema || changedDocument { 2959 res := *n 2960 res.Schema, _ = _Schema.(Expr) 2961 res.Document, _ = _Document.(Expr) 2962 out = &res 2963 if c.cloned != nil { 2964 c.cloned(n, out) 2965 } 2966 changed = true 2967 } 2968 } 2969 if c.post != nil { 2970 out, changed = c.postVisit(out, parent, changed) 2971 } 2972 return 2973 } 2974 func (c *cow) copyOnRewriteRefOfJSONSearchExpr(n *JSONSearchExpr, parent SQLNode) (out SQLNode, changed bool) { 2975 if n == nil || c.cursor.stop { 2976 return n, false 2977 } 2978 out = n 2979 if c.pre == nil || c.pre(n, parent) { 2980 _JSONDoc, changedJSONDoc := c.copyOnRewriteExpr(n.JSONDoc, n) 2981 _OneOrAll, changedOneOrAll := c.copyOnRewriteExpr(n.OneOrAll, n) 2982 _SearchStr, changedSearchStr := c.copyOnRewriteExpr(n.SearchStr, n) 2983 _EscapeChar, changedEscapeChar := c.copyOnRewriteExpr(n.EscapeChar, n) 2984 var changedPathList bool 2985 _PathList := make([]Expr, len(n.PathList)) 2986 for x, el := range n.PathList { 2987 this, changed := c.copyOnRewriteExpr(el, n) 2988 _PathList[x] = this.(Expr) 2989 if changed { 2990 changedPathList = true 2991 } 2992 } 2993 if changedJSONDoc || changedOneOrAll || changedSearchStr || changedEscapeChar || changedPathList { 2994 res := *n 2995 res.JSONDoc, _ = _JSONDoc.(Expr) 2996 res.OneOrAll, _ = _OneOrAll.(Expr) 2997 res.SearchStr, _ = _SearchStr.(Expr) 2998 res.EscapeChar, _ = _EscapeChar.(Expr) 2999 res.PathList = _PathList 3000 out = &res 3001 if c.cloned != nil { 3002 c.cloned(n, out) 3003 } 3004 changed = true 3005 } 3006 } 3007 if c.post != nil { 3008 out, changed = c.postVisit(out, parent, changed) 3009 } 3010 return 3011 } 3012 func (c *cow) copyOnRewriteRefOfJSONStorageFreeExpr(n *JSONStorageFreeExpr, parent SQLNode) (out SQLNode, changed bool) { 3013 if n == nil || c.cursor.stop { 3014 return n, false 3015 } 3016 out = n 3017 if c.pre == nil || c.pre(n, parent) { 3018 _JSONVal, changedJSONVal := c.copyOnRewriteExpr(n.JSONVal, n) 3019 if changedJSONVal { 3020 res := *n 3021 res.JSONVal, _ = _JSONVal.(Expr) 3022 out = &res 3023 if c.cloned != nil { 3024 c.cloned(n, out) 3025 } 3026 changed = true 3027 } 3028 } 3029 if c.post != nil { 3030 out, changed = c.postVisit(out, parent, changed) 3031 } 3032 return 3033 } 3034 func (c *cow) copyOnRewriteRefOfJSONStorageSizeExpr(n *JSONStorageSizeExpr, parent SQLNode) (out SQLNode, changed bool) { 3035 if n == nil || c.cursor.stop { 3036 return n, false 3037 } 3038 out = n 3039 if c.pre == nil || c.pre(n, parent) { 3040 _JSONVal, changedJSONVal := c.copyOnRewriteExpr(n.JSONVal, n) 3041 if changedJSONVal { 3042 res := *n 3043 res.JSONVal, _ = _JSONVal.(Expr) 3044 out = &res 3045 if c.cloned != nil { 3046 c.cloned(n, out) 3047 } 3048 changed = true 3049 } 3050 } 3051 if c.post != nil { 3052 out, changed = c.postVisit(out, parent, changed) 3053 } 3054 return 3055 } 3056 func (c *cow) copyOnRewriteRefOfJSONTableExpr(n *JSONTableExpr, parent SQLNode) (out SQLNode, changed bool) { 3057 if n == nil || c.cursor.stop { 3058 return n, false 3059 } 3060 out = n 3061 if c.pre == nil || c.pre(n, parent) { 3062 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 3063 _Alias, changedAlias := c.copyOnRewriteIdentifierCS(n.Alias, n) 3064 _Filter, changedFilter := c.copyOnRewriteExpr(n.Filter, n) 3065 var changedColumns bool 3066 _Columns := make([]*JtColumnDefinition, len(n.Columns)) 3067 for x, el := range n.Columns { 3068 this, changed := c.copyOnRewriteRefOfJtColumnDefinition(el, n) 3069 _Columns[x] = this.(*JtColumnDefinition) 3070 if changed { 3071 changedColumns = true 3072 } 3073 } 3074 if changedExpr || changedAlias || changedFilter || changedColumns { 3075 res := *n 3076 res.Expr, _ = _Expr.(Expr) 3077 res.Alias, _ = _Alias.(IdentifierCS) 3078 res.Filter, _ = _Filter.(Expr) 3079 res.Columns = _Columns 3080 out = &res 3081 if c.cloned != nil { 3082 c.cloned(n, out) 3083 } 3084 changed = true 3085 } 3086 } 3087 if c.post != nil { 3088 out, changed = c.postVisit(out, parent, changed) 3089 } 3090 return 3091 } 3092 func (c *cow) copyOnRewriteRefOfJSONUnquoteExpr(n *JSONUnquoteExpr, parent SQLNode) (out SQLNode, changed bool) { 3093 if n == nil || c.cursor.stop { 3094 return n, false 3095 } 3096 out = n 3097 if c.pre == nil || c.pre(n, parent) { 3098 _JSONValue, changedJSONValue := c.copyOnRewriteExpr(n.JSONValue, n) 3099 if changedJSONValue { 3100 res := *n 3101 res.JSONValue, _ = _JSONValue.(Expr) 3102 out = &res 3103 if c.cloned != nil { 3104 c.cloned(n, out) 3105 } 3106 changed = true 3107 } 3108 } 3109 if c.post != nil { 3110 out, changed = c.postVisit(out, parent, changed) 3111 } 3112 return 3113 } 3114 func (c *cow) copyOnRewriteRefOfJSONValueExpr(n *JSONValueExpr, parent SQLNode) (out SQLNode, changed bool) { 3115 if n == nil || c.cursor.stop { 3116 return n, false 3117 } 3118 out = n 3119 if c.pre == nil || c.pre(n, parent) { 3120 _JSONDoc, changedJSONDoc := c.copyOnRewriteExpr(n.JSONDoc, n) 3121 _Path, changedPath := c.copyOnRewriteExpr(n.Path, n) 3122 _ReturningType, changedReturningType := c.copyOnRewriteRefOfConvertType(n.ReturningType, n) 3123 _EmptyOnResponse, changedEmptyOnResponse := c.copyOnRewriteRefOfJtOnResponse(n.EmptyOnResponse, n) 3124 _ErrorOnResponse, changedErrorOnResponse := c.copyOnRewriteRefOfJtOnResponse(n.ErrorOnResponse, n) 3125 if changedJSONDoc || changedPath || changedReturningType || changedEmptyOnResponse || changedErrorOnResponse { 3126 res := *n 3127 res.JSONDoc, _ = _JSONDoc.(Expr) 3128 res.Path, _ = _Path.(Expr) 3129 res.ReturningType, _ = _ReturningType.(*ConvertType) 3130 res.EmptyOnResponse, _ = _EmptyOnResponse.(*JtOnResponse) 3131 res.ErrorOnResponse, _ = _ErrorOnResponse.(*JtOnResponse) 3132 out = &res 3133 if c.cloned != nil { 3134 c.cloned(n, out) 3135 } 3136 changed = true 3137 } 3138 } 3139 if c.post != nil { 3140 out, changed = c.postVisit(out, parent, changed) 3141 } 3142 return 3143 } 3144 func (c *cow) copyOnRewriteRefOfJSONValueMergeExpr(n *JSONValueMergeExpr, parent SQLNode) (out SQLNode, changed bool) { 3145 if n == nil || c.cursor.stop { 3146 return n, false 3147 } 3148 out = n 3149 if c.pre == nil || c.pre(n, parent) { 3150 _JSONDoc, changedJSONDoc := c.copyOnRewriteExpr(n.JSONDoc, n) 3151 _JSONDocList, changedJSONDocList := c.copyOnRewriteExprs(n.JSONDocList, n) 3152 if changedJSONDoc || changedJSONDocList { 3153 res := *n 3154 res.JSONDoc, _ = _JSONDoc.(Expr) 3155 res.JSONDocList, _ = _JSONDocList.(Exprs) 3156 out = &res 3157 if c.cloned != nil { 3158 c.cloned(n, out) 3159 } 3160 changed = true 3161 } 3162 } 3163 if c.post != nil { 3164 out, changed = c.postVisit(out, parent, changed) 3165 } 3166 return 3167 } 3168 func (c *cow) copyOnRewriteRefOfJSONValueModifierExpr(n *JSONValueModifierExpr, parent SQLNode) (out SQLNode, changed bool) { 3169 if n == nil || c.cursor.stop { 3170 return n, false 3171 } 3172 out = n 3173 if c.pre == nil || c.pre(n, parent) { 3174 _JSONDoc, changedJSONDoc := c.copyOnRewriteExpr(n.JSONDoc, n) 3175 var changedParams bool 3176 _Params := make([]*JSONObjectParam, len(n.Params)) 3177 for x, el := range n.Params { 3178 this, changed := c.copyOnRewriteRefOfJSONObjectParam(el, n) 3179 _Params[x] = this.(*JSONObjectParam) 3180 if changed { 3181 changedParams = true 3182 } 3183 } 3184 if changedJSONDoc || changedParams { 3185 res := *n 3186 res.JSONDoc, _ = _JSONDoc.(Expr) 3187 res.Params = _Params 3188 out = &res 3189 if c.cloned != nil { 3190 c.cloned(n, out) 3191 } 3192 changed = true 3193 } 3194 } 3195 if c.post != nil { 3196 out, changed = c.postVisit(out, parent, changed) 3197 } 3198 return 3199 } 3200 func (c *cow) copyOnRewriteRefOfJoinCondition(n *JoinCondition, parent SQLNode) (out SQLNode, changed bool) { 3201 if n == nil || c.cursor.stop { 3202 return n, false 3203 } 3204 out = n 3205 if c.pre == nil || c.pre(n, parent) { 3206 _On, changedOn := c.copyOnRewriteExpr(n.On, n) 3207 _Using, changedUsing := c.copyOnRewriteColumns(n.Using, n) 3208 if changedOn || changedUsing { 3209 res := *n 3210 res.On, _ = _On.(Expr) 3211 res.Using, _ = _Using.(Columns) 3212 out = &res 3213 if c.cloned != nil { 3214 c.cloned(n, out) 3215 } 3216 changed = true 3217 } 3218 } 3219 if c.post != nil { 3220 out, changed = c.postVisit(out, parent, changed) 3221 } 3222 return 3223 } 3224 func (c *cow) copyOnRewriteRefOfJoinTableExpr(n *JoinTableExpr, parent SQLNode) (out SQLNode, changed bool) { 3225 if n == nil || c.cursor.stop { 3226 return n, false 3227 } 3228 out = n 3229 if c.pre == nil || c.pre(n, parent) { 3230 _LeftExpr, changedLeftExpr := c.copyOnRewriteTableExpr(n.LeftExpr, n) 3231 _RightExpr, changedRightExpr := c.copyOnRewriteTableExpr(n.RightExpr, n) 3232 _Condition, changedCondition := c.copyOnRewriteRefOfJoinCondition(n.Condition, n) 3233 if changedLeftExpr || changedRightExpr || changedCondition { 3234 res := *n 3235 res.LeftExpr, _ = _LeftExpr.(TableExpr) 3236 res.RightExpr, _ = _RightExpr.(TableExpr) 3237 res.Condition, _ = _Condition.(*JoinCondition) 3238 out = &res 3239 if c.cloned != nil { 3240 c.cloned(n, out) 3241 } 3242 changed = true 3243 } 3244 } 3245 if c.post != nil { 3246 out, changed = c.postVisit(out, parent, changed) 3247 } 3248 return 3249 } 3250 func (c *cow) copyOnRewriteRefOfJtColumnDefinition(n *JtColumnDefinition, parent SQLNode) (out SQLNode, changed bool) { 3251 if n == nil || c.cursor.stop { 3252 return n, false 3253 } 3254 out = n 3255 if c.pre == nil || c.pre(n, parent) { 3256 } 3257 if c.post != nil { 3258 out, changed = c.postVisit(out, parent, changed) 3259 } 3260 return 3261 } 3262 func (c *cow) copyOnRewriteRefOfJtOnResponse(n *JtOnResponse, parent SQLNode) (out SQLNode, changed bool) { 3263 if n == nil || c.cursor.stop { 3264 return n, false 3265 } 3266 out = n 3267 if c.pre == nil || c.pre(n, parent) { 3268 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 3269 if changedExpr { 3270 res := *n 3271 res.Expr, _ = _Expr.(Expr) 3272 out = &res 3273 if c.cloned != nil { 3274 c.cloned(n, out) 3275 } 3276 changed = true 3277 } 3278 } 3279 if c.post != nil { 3280 out, changed = c.postVisit(out, parent, changed) 3281 } 3282 return 3283 } 3284 func (c *cow) copyOnRewriteRefOfKeyState(n *KeyState, parent SQLNode) (out SQLNode, changed bool) { 3285 if n == nil || c.cursor.stop { 3286 return n, false 3287 } 3288 out = n 3289 if c.pre == nil || c.pre(n, parent) { 3290 } 3291 if c.post != nil { 3292 out, changed = c.postVisit(out, parent, changed) 3293 } 3294 return 3295 } 3296 func (c *cow) copyOnRewriteRefOfLagLeadExpr(n *LagLeadExpr, parent SQLNode) (out SQLNode, changed bool) { 3297 if n == nil || c.cursor.stop { 3298 return n, false 3299 } 3300 out = n 3301 if c.pre == nil || c.pre(n, parent) { 3302 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 3303 _N, changedN := c.copyOnRewriteExpr(n.N, n) 3304 _Default, changedDefault := c.copyOnRewriteExpr(n.Default, n) 3305 _OverClause, changedOverClause := c.copyOnRewriteRefOfOverClause(n.OverClause, n) 3306 _NullTreatmentClause, changedNullTreatmentClause := c.copyOnRewriteRefOfNullTreatmentClause(n.NullTreatmentClause, n) 3307 if changedExpr || changedN || changedDefault || changedOverClause || changedNullTreatmentClause { 3308 res := *n 3309 res.Expr, _ = _Expr.(Expr) 3310 res.N, _ = _N.(Expr) 3311 res.Default, _ = _Default.(Expr) 3312 res.OverClause, _ = _OverClause.(*OverClause) 3313 res.NullTreatmentClause, _ = _NullTreatmentClause.(*NullTreatmentClause) 3314 out = &res 3315 if c.cloned != nil { 3316 c.cloned(n, out) 3317 } 3318 changed = true 3319 } 3320 } 3321 if c.post != nil { 3322 out, changed = c.postVisit(out, parent, changed) 3323 } 3324 return 3325 } 3326 func (c *cow) copyOnRewriteRefOfLimit(n *Limit, parent SQLNode) (out SQLNode, changed bool) { 3327 if n == nil || c.cursor.stop { 3328 return n, false 3329 } 3330 out = n 3331 if c.pre == nil || c.pre(n, parent) { 3332 _Offset, changedOffset := c.copyOnRewriteExpr(n.Offset, n) 3333 _Rowcount, changedRowcount := c.copyOnRewriteExpr(n.Rowcount, n) 3334 if changedOffset || changedRowcount { 3335 res := *n 3336 res.Offset, _ = _Offset.(Expr) 3337 res.Rowcount, _ = _Rowcount.(Expr) 3338 out = &res 3339 if c.cloned != nil { 3340 c.cloned(n, out) 3341 } 3342 changed = true 3343 } 3344 } 3345 if c.post != nil { 3346 out, changed = c.postVisit(out, parent, changed) 3347 } 3348 return 3349 } 3350 func (c *cow) copyOnRewriteRefOfLiteral(n *Literal, parent SQLNode) (out SQLNode, changed bool) { 3351 if n == nil || c.cursor.stop { 3352 return n, false 3353 } 3354 out = n 3355 if c.pre == nil || c.pre(n, parent) { 3356 } 3357 if c.post != nil { 3358 out, changed = c.postVisit(out, parent, changed) 3359 } 3360 return 3361 } 3362 func (c *cow) copyOnRewriteRefOfLoad(n *Load, parent SQLNode) (out SQLNode, changed bool) { 3363 if n == nil || c.cursor.stop { 3364 return n, false 3365 } 3366 out = n 3367 if c.pre == nil || c.pre(n, parent) { 3368 } 3369 if c.post != nil { 3370 out, changed = c.postVisit(out, parent, changed) 3371 } 3372 return 3373 } 3374 func (c *cow) copyOnRewriteRefOfLocateExpr(n *LocateExpr, parent SQLNode) (out SQLNode, changed bool) { 3375 if n == nil || c.cursor.stop { 3376 return n, false 3377 } 3378 out = n 3379 if c.pre == nil || c.pre(n, parent) { 3380 _SubStr, changedSubStr := c.copyOnRewriteExpr(n.SubStr, n) 3381 _Str, changedStr := c.copyOnRewriteExpr(n.Str, n) 3382 _Pos, changedPos := c.copyOnRewriteExpr(n.Pos, n) 3383 if changedSubStr || changedStr || changedPos { 3384 res := *n 3385 res.SubStr, _ = _SubStr.(Expr) 3386 res.Str, _ = _Str.(Expr) 3387 res.Pos, _ = _Pos.(Expr) 3388 out = &res 3389 if c.cloned != nil { 3390 c.cloned(n, out) 3391 } 3392 changed = true 3393 } 3394 } 3395 if c.post != nil { 3396 out, changed = c.postVisit(out, parent, changed) 3397 } 3398 return 3399 } 3400 func (c *cow) copyOnRewriteRefOfLockOption(n *LockOption, parent SQLNode) (out SQLNode, changed bool) { 3401 if n == nil || c.cursor.stop { 3402 return n, false 3403 } 3404 out = n 3405 if c.pre == nil || c.pre(n, parent) { 3406 } 3407 if c.post != nil { 3408 out, changed = c.postVisit(out, parent, changed) 3409 } 3410 return 3411 } 3412 func (c *cow) copyOnRewriteRefOfLockTables(n *LockTables, parent SQLNode) (out SQLNode, changed bool) { 3413 if n == nil || c.cursor.stop { 3414 return n, false 3415 } 3416 out = n 3417 if c.pre == nil || c.pre(n, parent) { 3418 } 3419 if c.post != nil { 3420 out, changed = c.postVisit(out, parent, changed) 3421 } 3422 return 3423 } 3424 func (c *cow) copyOnRewriteRefOfLockingFunc(n *LockingFunc, parent SQLNode) (out SQLNode, changed bool) { 3425 if n == nil || c.cursor.stop { 3426 return n, false 3427 } 3428 out = n 3429 if c.pre == nil || c.pre(n, parent) { 3430 _Name, changedName := c.copyOnRewriteExpr(n.Name, n) 3431 _Timeout, changedTimeout := c.copyOnRewriteExpr(n.Timeout, n) 3432 if changedName || changedTimeout { 3433 res := *n 3434 res.Name, _ = _Name.(Expr) 3435 res.Timeout, _ = _Timeout.(Expr) 3436 out = &res 3437 if c.cloned != nil { 3438 c.cloned(n, out) 3439 } 3440 changed = true 3441 } 3442 } 3443 if c.post != nil { 3444 out, changed = c.postVisit(out, parent, changed) 3445 } 3446 return 3447 } 3448 func (c *cow) copyOnRewriteRefOfMatchExpr(n *MatchExpr, parent SQLNode) (out SQLNode, changed bool) { 3449 if n == nil || c.cursor.stop { 3450 return n, false 3451 } 3452 out = n 3453 if c.pre == nil || c.pre(n, parent) { 3454 var changedColumns bool 3455 _Columns := make([]*ColName, len(n.Columns)) 3456 for x, el := range n.Columns { 3457 this, changed := c.copyOnRewriteRefOfColName(el, n) 3458 _Columns[x] = this.(*ColName) 3459 if changed { 3460 changedColumns = true 3461 } 3462 } 3463 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 3464 if changedColumns || changedExpr { 3465 res := *n 3466 res.Columns = _Columns 3467 res.Expr, _ = _Expr.(Expr) 3468 out = &res 3469 if c.cloned != nil { 3470 c.cloned(n, out) 3471 } 3472 changed = true 3473 } 3474 } 3475 if c.post != nil { 3476 out, changed = c.postVisit(out, parent, changed) 3477 } 3478 return 3479 } 3480 func (c *cow) copyOnRewriteRefOfMax(n *Max, parent SQLNode) (out SQLNode, changed bool) { 3481 if n == nil || c.cursor.stop { 3482 return n, false 3483 } 3484 out = n 3485 if c.pre == nil || c.pre(n, parent) { 3486 _Arg, changedArg := c.copyOnRewriteExpr(n.Arg, n) 3487 if changedArg { 3488 res := *n 3489 res.Arg, _ = _Arg.(Expr) 3490 out = &res 3491 if c.cloned != nil { 3492 c.cloned(n, out) 3493 } 3494 changed = true 3495 } 3496 } 3497 if c.post != nil { 3498 out, changed = c.postVisit(out, parent, changed) 3499 } 3500 return 3501 } 3502 func (c *cow) copyOnRewriteRefOfMemberOfExpr(n *MemberOfExpr, parent SQLNode) (out SQLNode, changed bool) { 3503 if n == nil || c.cursor.stop { 3504 return n, false 3505 } 3506 out = n 3507 if c.pre == nil || c.pre(n, parent) { 3508 _Value, changedValue := c.copyOnRewriteExpr(n.Value, n) 3509 _JSONArr, changedJSONArr := c.copyOnRewriteExpr(n.JSONArr, n) 3510 if changedValue || changedJSONArr { 3511 res := *n 3512 res.Value, _ = _Value.(Expr) 3513 res.JSONArr, _ = _JSONArr.(Expr) 3514 out = &res 3515 if c.cloned != nil { 3516 c.cloned(n, out) 3517 } 3518 changed = true 3519 } 3520 } 3521 if c.post != nil { 3522 out, changed = c.postVisit(out, parent, changed) 3523 } 3524 return 3525 } 3526 func (c *cow) copyOnRewriteRefOfMin(n *Min, parent SQLNode) (out SQLNode, changed bool) { 3527 if n == nil || c.cursor.stop { 3528 return n, false 3529 } 3530 out = n 3531 if c.pre == nil || c.pre(n, parent) { 3532 _Arg, changedArg := c.copyOnRewriteExpr(n.Arg, n) 3533 if changedArg { 3534 res := *n 3535 res.Arg, _ = _Arg.(Expr) 3536 out = &res 3537 if c.cloned != nil { 3538 c.cloned(n, out) 3539 } 3540 changed = true 3541 } 3542 } 3543 if c.post != nil { 3544 out, changed = c.postVisit(out, parent, changed) 3545 } 3546 return 3547 } 3548 func (c *cow) copyOnRewriteRefOfModifyColumn(n *ModifyColumn, parent SQLNode) (out SQLNode, changed bool) { 3549 if n == nil || c.cursor.stop { 3550 return n, false 3551 } 3552 out = n 3553 if c.pre == nil || c.pre(n, parent) { 3554 _NewColDefinition, changedNewColDefinition := c.copyOnRewriteRefOfColumnDefinition(n.NewColDefinition, n) 3555 _After, changedAfter := c.copyOnRewriteRefOfColName(n.After, n) 3556 if changedNewColDefinition || changedAfter { 3557 res := *n 3558 res.NewColDefinition, _ = _NewColDefinition.(*ColumnDefinition) 3559 res.After, _ = _After.(*ColName) 3560 out = &res 3561 if c.cloned != nil { 3562 c.cloned(n, out) 3563 } 3564 changed = true 3565 } 3566 } 3567 if c.post != nil { 3568 out, changed = c.postVisit(out, parent, changed) 3569 } 3570 return 3571 } 3572 func (c *cow) copyOnRewriteRefOfNTHValueExpr(n *NTHValueExpr, parent SQLNode) (out SQLNode, changed bool) { 3573 if n == nil || c.cursor.stop { 3574 return n, false 3575 } 3576 out = n 3577 if c.pre == nil || c.pre(n, parent) { 3578 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 3579 _N, changedN := c.copyOnRewriteExpr(n.N, n) 3580 _OverClause, changedOverClause := c.copyOnRewriteRefOfOverClause(n.OverClause, n) 3581 _FromFirstLastClause, changedFromFirstLastClause := c.copyOnRewriteRefOfFromFirstLastClause(n.FromFirstLastClause, n) 3582 _NullTreatmentClause, changedNullTreatmentClause := c.copyOnRewriteRefOfNullTreatmentClause(n.NullTreatmentClause, n) 3583 if changedExpr || changedN || changedOverClause || changedFromFirstLastClause || changedNullTreatmentClause { 3584 res := *n 3585 res.Expr, _ = _Expr.(Expr) 3586 res.N, _ = _N.(Expr) 3587 res.OverClause, _ = _OverClause.(*OverClause) 3588 res.FromFirstLastClause, _ = _FromFirstLastClause.(*FromFirstLastClause) 3589 res.NullTreatmentClause, _ = _NullTreatmentClause.(*NullTreatmentClause) 3590 out = &res 3591 if c.cloned != nil { 3592 c.cloned(n, out) 3593 } 3594 changed = true 3595 } 3596 } 3597 if c.post != nil { 3598 out, changed = c.postVisit(out, parent, changed) 3599 } 3600 return 3601 } 3602 func (c *cow) copyOnRewriteRefOfNamedWindow(n *NamedWindow, parent SQLNode) (out SQLNode, changed bool) { 3603 if n == nil || c.cursor.stop { 3604 return n, false 3605 } 3606 out = n 3607 if c.pre == nil || c.pre(n, parent) { 3608 _Windows, changedWindows := c.copyOnRewriteWindowDefinitions(n.Windows, n) 3609 if changedWindows { 3610 res := *n 3611 res.Windows, _ = _Windows.(WindowDefinitions) 3612 out = &res 3613 if c.cloned != nil { 3614 c.cloned(n, out) 3615 } 3616 changed = true 3617 } 3618 } 3619 if c.post != nil { 3620 out, changed = c.postVisit(out, parent, changed) 3621 } 3622 return 3623 } 3624 func (c *cow) copyOnRewriteNamedWindows(n NamedWindows, parent SQLNode) (out SQLNode, changed bool) { 3625 if n == nil || c.cursor.stop { 3626 return n, false 3627 } 3628 out = n 3629 if c.pre == nil || c.pre(n, parent) { 3630 res := make(NamedWindows, len(n)) 3631 for x, el := range n { 3632 this, change := c.copyOnRewriteRefOfNamedWindow(el, n) 3633 res[x] = this.(*NamedWindow) 3634 if change { 3635 changed = true 3636 } 3637 } 3638 if changed { 3639 out = res 3640 } 3641 } 3642 if c.post != nil { 3643 out, changed = c.postVisit(out, parent, changed) 3644 } 3645 return 3646 } 3647 func (c *cow) copyOnRewriteRefOfNextval(n *Nextval, parent SQLNode) (out SQLNode, changed bool) { 3648 if n == nil || c.cursor.stop { 3649 return n, false 3650 } 3651 out = n 3652 if c.pre == nil || c.pre(n, parent) { 3653 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 3654 if changedExpr { 3655 res := *n 3656 res.Expr, _ = _Expr.(Expr) 3657 out = &res 3658 if c.cloned != nil { 3659 c.cloned(n, out) 3660 } 3661 changed = true 3662 } 3663 } 3664 if c.post != nil { 3665 out, changed = c.postVisit(out, parent, changed) 3666 } 3667 return 3668 } 3669 func (c *cow) copyOnRewriteRefOfNotExpr(n *NotExpr, parent SQLNode) (out SQLNode, changed bool) { 3670 if n == nil || c.cursor.stop { 3671 return n, false 3672 } 3673 out = n 3674 if c.pre == nil || c.pre(n, parent) { 3675 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 3676 if changedExpr { 3677 res := *n 3678 res.Expr, _ = _Expr.(Expr) 3679 out = &res 3680 if c.cloned != nil { 3681 c.cloned(n, out) 3682 } 3683 changed = true 3684 } 3685 } 3686 if c.post != nil { 3687 out, changed = c.postVisit(out, parent, changed) 3688 } 3689 return 3690 } 3691 func (c *cow) copyOnRewriteRefOfNtileExpr(n *NtileExpr, parent SQLNode) (out SQLNode, changed bool) { 3692 if n == nil || c.cursor.stop { 3693 return n, false 3694 } 3695 out = n 3696 if c.pre == nil || c.pre(n, parent) { 3697 _N, changedN := c.copyOnRewriteExpr(n.N, n) 3698 _OverClause, changedOverClause := c.copyOnRewriteRefOfOverClause(n.OverClause, n) 3699 if changedN || changedOverClause { 3700 res := *n 3701 res.N, _ = _N.(Expr) 3702 res.OverClause, _ = _OverClause.(*OverClause) 3703 out = &res 3704 if c.cloned != nil { 3705 c.cloned(n, out) 3706 } 3707 changed = true 3708 } 3709 } 3710 if c.post != nil { 3711 out, changed = c.postVisit(out, parent, changed) 3712 } 3713 return 3714 } 3715 func (c *cow) copyOnRewriteRefOfNullTreatmentClause(n *NullTreatmentClause, parent SQLNode) (out SQLNode, changed bool) { 3716 if n == nil || c.cursor.stop { 3717 return n, false 3718 } 3719 out = n 3720 if c.pre == nil || c.pre(n, parent) { 3721 } 3722 if c.post != nil { 3723 out, changed = c.postVisit(out, parent, changed) 3724 } 3725 return 3726 } 3727 func (c *cow) copyOnRewriteRefOfNullVal(n *NullVal, parent SQLNode) (out SQLNode, changed bool) { 3728 if n == nil || c.cursor.stop { 3729 return n, false 3730 } 3731 out = n 3732 if c.pre == nil || c.pre(n, parent) { 3733 } 3734 if c.post != nil { 3735 out, changed = c.postVisit(out, parent, changed) 3736 } 3737 return 3738 } 3739 func (c *cow) copyOnRewriteRefOfOffset(n *Offset, parent SQLNode) (out SQLNode, changed bool) { 3740 if n == nil || c.cursor.stop { 3741 return n, false 3742 } 3743 out = n 3744 if c.pre == nil || c.pre(n, parent) { 3745 } 3746 if c.post != nil { 3747 out, changed = c.postVisit(out, parent, changed) 3748 } 3749 return 3750 } 3751 func (c *cow) copyOnRewriteOnDup(n OnDup, parent SQLNode) (out SQLNode, changed bool) { 3752 if n == nil || c.cursor.stop { 3753 return n, false 3754 } 3755 out = n 3756 if c.pre == nil || c.pre(n, parent) { 3757 res := make(OnDup, len(n)) 3758 for x, el := range n { 3759 this, change := c.copyOnRewriteRefOfUpdateExpr(el, n) 3760 res[x] = this.(*UpdateExpr) 3761 if change { 3762 changed = true 3763 } 3764 } 3765 if changed { 3766 out = res 3767 } 3768 } 3769 if c.post != nil { 3770 out, changed = c.postVisit(out, parent, changed) 3771 } 3772 return 3773 } 3774 func (c *cow) copyOnRewriteRefOfOptLike(n *OptLike, parent SQLNode) (out SQLNode, changed bool) { 3775 if n == nil || c.cursor.stop { 3776 return n, false 3777 } 3778 out = n 3779 if c.pre == nil || c.pre(n, parent) { 3780 _LikeTable, changedLikeTable := c.copyOnRewriteTableName(n.LikeTable, n) 3781 if changedLikeTable { 3782 res := *n 3783 res.LikeTable, _ = _LikeTable.(TableName) 3784 out = &res 3785 if c.cloned != nil { 3786 c.cloned(n, out) 3787 } 3788 changed = true 3789 } 3790 } 3791 if c.post != nil { 3792 out, changed = c.postVisit(out, parent, changed) 3793 } 3794 return 3795 } 3796 func (c *cow) copyOnRewriteRefOfOrExpr(n *OrExpr, parent SQLNode) (out SQLNode, changed bool) { 3797 if n == nil || c.cursor.stop { 3798 return n, false 3799 } 3800 out = n 3801 if c.pre == nil || c.pre(n, parent) { 3802 _Left, changedLeft := c.copyOnRewriteExpr(n.Left, n) 3803 _Right, changedRight := c.copyOnRewriteExpr(n.Right, n) 3804 if changedLeft || changedRight { 3805 res := *n 3806 res.Left, _ = _Left.(Expr) 3807 res.Right, _ = _Right.(Expr) 3808 out = &res 3809 if c.cloned != nil { 3810 c.cloned(n, out) 3811 } 3812 changed = true 3813 } 3814 } 3815 if c.post != nil { 3816 out, changed = c.postVisit(out, parent, changed) 3817 } 3818 return 3819 } 3820 func (c *cow) copyOnRewriteRefOfOrder(n *Order, parent SQLNode) (out SQLNode, changed bool) { 3821 if n == nil || c.cursor.stop { 3822 return n, false 3823 } 3824 out = n 3825 if c.pre == nil || c.pre(n, parent) { 3826 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 3827 if changedExpr { 3828 res := *n 3829 res.Expr, _ = _Expr.(Expr) 3830 out = &res 3831 if c.cloned != nil { 3832 c.cloned(n, out) 3833 } 3834 changed = true 3835 } 3836 } 3837 if c.post != nil { 3838 out, changed = c.postVisit(out, parent, changed) 3839 } 3840 return 3841 } 3842 func (c *cow) copyOnRewriteOrderBy(n OrderBy, parent SQLNode) (out SQLNode, changed bool) { 3843 if n == nil || c.cursor.stop { 3844 return n, false 3845 } 3846 out = n 3847 if c.pre == nil || c.pre(n, parent) { 3848 res := make(OrderBy, len(n)) 3849 for x, el := range n { 3850 this, change := c.copyOnRewriteRefOfOrder(el, n) 3851 res[x] = this.(*Order) 3852 if change { 3853 changed = true 3854 } 3855 } 3856 if changed { 3857 out = res 3858 } 3859 } 3860 if c.post != nil { 3861 out, changed = c.postVisit(out, parent, changed) 3862 } 3863 return 3864 } 3865 func (c *cow) copyOnRewriteRefOfOrderByOption(n *OrderByOption, parent SQLNode) (out SQLNode, changed bool) { 3866 if n == nil || c.cursor.stop { 3867 return n, false 3868 } 3869 out = n 3870 if c.pre == nil || c.pre(n, parent) { 3871 _Cols, changedCols := c.copyOnRewriteColumns(n.Cols, n) 3872 if changedCols { 3873 res := *n 3874 res.Cols, _ = _Cols.(Columns) 3875 out = &res 3876 if c.cloned != nil { 3877 c.cloned(n, out) 3878 } 3879 changed = true 3880 } 3881 } 3882 if c.post != nil { 3883 out, changed = c.postVisit(out, parent, changed) 3884 } 3885 return 3886 } 3887 func (c *cow) copyOnRewriteRefOfOtherAdmin(n *OtherAdmin, parent SQLNode) (out SQLNode, changed bool) { 3888 if n == nil || c.cursor.stop { 3889 return n, false 3890 } 3891 out = n 3892 if c.pre == nil || c.pre(n, parent) { 3893 } 3894 if c.post != nil { 3895 out, changed = c.postVisit(out, parent, changed) 3896 } 3897 return 3898 } 3899 func (c *cow) copyOnRewriteRefOfOtherRead(n *OtherRead, parent SQLNode) (out SQLNode, changed bool) { 3900 if n == nil || c.cursor.stop { 3901 return n, false 3902 } 3903 out = n 3904 if c.pre == nil || c.pre(n, parent) { 3905 } 3906 if c.post != nil { 3907 out, changed = c.postVisit(out, parent, changed) 3908 } 3909 return 3910 } 3911 func (c *cow) copyOnRewriteRefOfOverClause(n *OverClause, parent SQLNode) (out SQLNode, changed bool) { 3912 if n == nil || c.cursor.stop { 3913 return n, false 3914 } 3915 out = n 3916 if c.pre == nil || c.pre(n, parent) { 3917 _WindowName, changedWindowName := c.copyOnRewriteIdentifierCI(n.WindowName, n) 3918 _WindowSpec, changedWindowSpec := c.copyOnRewriteRefOfWindowSpecification(n.WindowSpec, n) 3919 if changedWindowName || changedWindowSpec { 3920 res := *n 3921 res.WindowName, _ = _WindowName.(IdentifierCI) 3922 res.WindowSpec, _ = _WindowSpec.(*WindowSpecification) 3923 out = &res 3924 if c.cloned != nil { 3925 c.cloned(n, out) 3926 } 3927 changed = true 3928 } 3929 } 3930 if c.post != nil { 3931 out, changed = c.postVisit(out, parent, changed) 3932 } 3933 return 3934 } 3935 func (c *cow) copyOnRewriteRefOfParenTableExpr(n *ParenTableExpr, parent SQLNode) (out SQLNode, changed bool) { 3936 if n == nil || c.cursor.stop { 3937 return n, false 3938 } 3939 out = n 3940 if c.pre == nil || c.pre(n, parent) { 3941 _Exprs, changedExprs := c.copyOnRewriteTableExprs(n.Exprs, n) 3942 if changedExprs { 3943 res := *n 3944 res.Exprs, _ = _Exprs.(TableExprs) 3945 out = &res 3946 if c.cloned != nil { 3947 c.cloned(n, out) 3948 } 3949 changed = true 3950 } 3951 } 3952 if c.post != nil { 3953 out, changed = c.postVisit(out, parent, changed) 3954 } 3955 return 3956 } 3957 func (c *cow) copyOnRewriteRefOfParsedComments(n *ParsedComments, parent SQLNode) (out SQLNode, changed bool) { 3958 if n == nil || c.cursor.stop { 3959 return n, false 3960 } 3961 out = n 3962 if c.pre == nil || c.pre(n, parent) { 3963 } 3964 if c.post != nil { 3965 out, changed = c.postVisit(out, parent, changed) 3966 } 3967 return 3968 } 3969 func (c *cow) copyOnRewriteRefOfPartitionDefinition(n *PartitionDefinition, parent SQLNode) (out SQLNode, changed bool) { 3970 if n == nil || c.cursor.stop { 3971 return n, false 3972 } 3973 out = n 3974 if c.pre == nil || c.pre(n, parent) { 3975 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 3976 _Options, changedOptions := c.copyOnRewriteRefOfPartitionDefinitionOptions(n.Options, n) 3977 if changedName || changedOptions { 3978 res := *n 3979 res.Name, _ = _Name.(IdentifierCI) 3980 res.Options, _ = _Options.(*PartitionDefinitionOptions) 3981 out = &res 3982 if c.cloned != nil { 3983 c.cloned(n, out) 3984 } 3985 changed = true 3986 } 3987 } 3988 if c.post != nil { 3989 out, changed = c.postVisit(out, parent, changed) 3990 } 3991 return 3992 } 3993 func (c *cow) copyOnRewriteRefOfPartitionDefinitionOptions(n *PartitionDefinitionOptions, parent SQLNode) (out SQLNode, changed bool) { 3994 if n == nil || c.cursor.stop { 3995 return n, false 3996 } 3997 out = n 3998 if c.pre == nil || c.pre(n, parent) { 3999 _ValueRange, changedValueRange := c.copyOnRewriteRefOfPartitionValueRange(n.ValueRange, n) 4000 _Comment, changedComment := c.copyOnRewriteRefOfLiteral(n.Comment, n) 4001 _Engine, changedEngine := c.copyOnRewriteRefOfPartitionEngine(n.Engine, n) 4002 _DataDirectory, changedDataDirectory := c.copyOnRewriteRefOfLiteral(n.DataDirectory, n) 4003 _IndexDirectory, changedIndexDirectory := c.copyOnRewriteRefOfLiteral(n.IndexDirectory, n) 4004 _SubPartitionDefinitions, changedSubPartitionDefinitions := c.copyOnRewriteSubPartitionDefinitions(n.SubPartitionDefinitions, n) 4005 if changedValueRange || changedComment || changedEngine || changedDataDirectory || changedIndexDirectory || changedSubPartitionDefinitions { 4006 res := *n 4007 res.ValueRange, _ = _ValueRange.(*PartitionValueRange) 4008 res.Comment, _ = _Comment.(*Literal) 4009 res.Engine, _ = _Engine.(*PartitionEngine) 4010 res.DataDirectory, _ = _DataDirectory.(*Literal) 4011 res.IndexDirectory, _ = _IndexDirectory.(*Literal) 4012 res.SubPartitionDefinitions, _ = _SubPartitionDefinitions.(SubPartitionDefinitions) 4013 out = &res 4014 if c.cloned != nil { 4015 c.cloned(n, out) 4016 } 4017 changed = true 4018 } 4019 } 4020 if c.post != nil { 4021 out, changed = c.postVisit(out, parent, changed) 4022 } 4023 return 4024 } 4025 func (c *cow) copyOnRewriteRefOfPartitionEngine(n *PartitionEngine, parent SQLNode) (out SQLNode, changed bool) { 4026 if n == nil || c.cursor.stop { 4027 return n, false 4028 } 4029 out = n 4030 if c.pre == nil || c.pre(n, parent) { 4031 } 4032 if c.post != nil { 4033 out, changed = c.postVisit(out, parent, changed) 4034 } 4035 return 4036 } 4037 func (c *cow) copyOnRewriteRefOfPartitionOption(n *PartitionOption, parent SQLNode) (out SQLNode, changed bool) { 4038 if n == nil || c.cursor.stop { 4039 return n, false 4040 } 4041 out = n 4042 if c.pre == nil || c.pre(n, parent) { 4043 _ColList, changedColList := c.copyOnRewriteColumns(n.ColList, n) 4044 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 4045 _SubPartition, changedSubPartition := c.copyOnRewriteRefOfSubPartition(n.SubPartition, n) 4046 var changedDefinitions bool 4047 _Definitions := make([]*PartitionDefinition, len(n.Definitions)) 4048 for x, el := range n.Definitions { 4049 this, changed := c.copyOnRewriteRefOfPartitionDefinition(el, n) 4050 _Definitions[x] = this.(*PartitionDefinition) 4051 if changed { 4052 changedDefinitions = true 4053 } 4054 } 4055 if changedColList || changedExpr || changedSubPartition || changedDefinitions { 4056 res := *n 4057 res.ColList, _ = _ColList.(Columns) 4058 res.Expr, _ = _Expr.(Expr) 4059 res.SubPartition, _ = _SubPartition.(*SubPartition) 4060 res.Definitions = _Definitions 4061 out = &res 4062 if c.cloned != nil { 4063 c.cloned(n, out) 4064 } 4065 changed = true 4066 } 4067 } 4068 if c.post != nil { 4069 out, changed = c.postVisit(out, parent, changed) 4070 } 4071 return 4072 } 4073 func (c *cow) copyOnRewriteRefOfPartitionSpec(n *PartitionSpec, parent SQLNode) (out SQLNode, changed bool) { 4074 if n == nil || c.cursor.stop { 4075 return n, false 4076 } 4077 out = n 4078 if c.pre == nil || c.pre(n, parent) { 4079 _Names, changedNames := c.copyOnRewritePartitions(n.Names, n) 4080 _Number, changedNumber := c.copyOnRewriteRefOfLiteral(n.Number, n) 4081 _TableName, changedTableName := c.copyOnRewriteTableName(n.TableName, n) 4082 var changedDefinitions bool 4083 _Definitions := make([]*PartitionDefinition, len(n.Definitions)) 4084 for x, el := range n.Definitions { 4085 this, changed := c.copyOnRewriteRefOfPartitionDefinition(el, n) 4086 _Definitions[x] = this.(*PartitionDefinition) 4087 if changed { 4088 changedDefinitions = true 4089 } 4090 } 4091 if changedNames || changedNumber || changedTableName || changedDefinitions { 4092 res := *n 4093 res.Names, _ = _Names.(Partitions) 4094 res.Number, _ = _Number.(*Literal) 4095 res.TableName, _ = _TableName.(TableName) 4096 res.Definitions = _Definitions 4097 out = &res 4098 if c.cloned != nil { 4099 c.cloned(n, out) 4100 } 4101 changed = true 4102 } 4103 } 4104 if c.post != nil { 4105 out, changed = c.postVisit(out, parent, changed) 4106 } 4107 return 4108 } 4109 func (c *cow) copyOnRewriteRefOfPartitionValueRange(n *PartitionValueRange, parent SQLNode) (out SQLNode, changed bool) { 4110 if n == nil || c.cursor.stop { 4111 return n, false 4112 } 4113 out = n 4114 if c.pre == nil || c.pre(n, parent) { 4115 _Range, changedRange := c.copyOnRewriteValTuple(n.Range, n) 4116 if changedRange { 4117 res := *n 4118 res.Range, _ = _Range.(ValTuple) 4119 out = &res 4120 if c.cloned != nil { 4121 c.cloned(n, out) 4122 } 4123 changed = true 4124 } 4125 } 4126 if c.post != nil { 4127 out, changed = c.postVisit(out, parent, changed) 4128 } 4129 return 4130 } 4131 func (c *cow) copyOnRewritePartitions(n Partitions, parent SQLNode) (out SQLNode, changed bool) { 4132 if n == nil || c.cursor.stop { 4133 return n, false 4134 } 4135 out = n 4136 if c.pre == nil || c.pre(n, parent) { 4137 res := make(Partitions, len(n)) 4138 for x, el := range n { 4139 this, change := c.copyOnRewriteIdentifierCI(el, n) 4140 res[x] = this.(IdentifierCI) 4141 if change { 4142 changed = true 4143 } 4144 } 4145 if changed { 4146 out = res 4147 } 4148 } 4149 if c.post != nil { 4150 out, changed = c.postVisit(out, parent, changed) 4151 } 4152 return 4153 } 4154 func (c *cow) copyOnRewriteRefOfPerformanceSchemaFuncExpr(n *PerformanceSchemaFuncExpr, parent SQLNode) (out SQLNode, changed bool) { 4155 if n == nil || c.cursor.stop { 4156 return n, false 4157 } 4158 out = n 4159 if c.pre == nil || c.pre(n, parent) { 4160 _Argument, changedArgument := c.copyOnRewriteExpr(n.Argument, n) 4161 if changedArgument { 4162 res := *n 4163 res.Argument, _ = _Argument.(Expr) 4164 out = &res 4165 if c.cloned != nil { 4166 c.cloned(n, out) 4167 } 4168 changed = true 4169 } 4170 } 4171 if c.post != nil { 4172 out, changed = c.postVisit(out, parent, changed) 4173 } 4174 return 4175 } 4176 func (c *cow) copyOnRewriteRefOfPrepareStmt(n *PrepareStmt, parent SQLNode) (out SQLNode, changed bool) { 4177 if n == nil || c.cursor.stop { 4178 return n, false 4179 } 4180 out = n 4181 if c.pre == nil || c.pre(n, parent) { 4182 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 4183 _Statement, changedStatement := c.copyOnRewriteExpr(n.Statement, n) 4184 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 4185 if changedName || changedStatement || changedComments { 4186 res := *n 4187 res.Name, _ = _Name.(IdentifierCI) 4188 res.Statement, _ = _Statement.(Expr) 4189 res.Comments, _ = _Comments.(*ParsedComments) 4190 out = &res 4191 if c.cloned != nil { 4192 c.cloned(n, out) 4193 } 4194 changed = true 4195 } 4196 } 4197 if c.post != nil { 4198 out, changed = c.postVisit(out, parent, changed) 4199 } 4200 return 4201 } 4202 func (c *cow) copyOnRewriteRefOfReferenceDefinition(n *ReferenceDefinition, parent SQLNode) (out SQLNode, changed bool) { 4203 if n == nil || c.cursor.stop { 4204 return n, false 4205 } 4206 out = n 4207 if c.pre == nil || c.pre(n, parent) { 4208 _ReferencedTable, changedReferencedTable := c.copyOnRewriteTableName(n.ReferencedTable, n) 4209 _ReferencedColumns, changedReferencedColumns := c.copyOnRewriteColumns(n.ReferencedColumns, n) 4210 _Match, changedMatch := c.copyOnRewriteMatchAction(n.Match, n) 4211 _OnDelete, changedOnDelete := c.copyOnRewriteReferenceAction(n.OnDelete, n) 4212 _OnUpdate, changedOnUpdate := c.copyOnRewriteReferenceAction(n.OnUpdate, n) 4213 if changedReferencedTable || changedReferencedColumns || changedMatch || changedOnDelete || changedOnUpdate { 4214 res := *n 4215 res.ReferencedTable, _ = _ReferencedTable.(TableName) 4216 res.ReferencedColumns, _ = _ReferencedColumns.(Columns) 4217 res.Match, _ = _Match.(MatchAction) 4218 res.OnDelete, _ = _OnDelete.(ReferenceAction) 4219 res.OnUpdate, _ = _OnUpdate.(ReferenceAction) 4220 out = &res 4221 if c.cloned != nil { 4222 c.cloned(n, out) 4223 } 4224 changed = true 4225 } 4226 } 4227 if c.post != nil { 4228 out, changed = c.postVisit(out, parent, changed) 4229 } 4230 return 4231 } 4232 func (c *cow) copyOnRewriteRefOfRegexpInstrExpr(n *RegexpInstrExpr, parent SQLNode) (out SQLNode, changed bool) { 4233 if n == nil || c.cursor.stop { 4234 return n, false 4235 } 4236 out = n 4237 if c.pre == nil || c.pre(n, parent) { 4238 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 4239 _Pattern, changedPattern := c.copyOnRewriteExpr(n.Pattern, n) 4240 _Position, changedPosition := c.copyOnRewriteExpr(n.Position, n) 4241 _Occurrence, changedOccurrence := c.copyOnRewriteExpr(n.Occurrence, n) 4242 _ReturnOption, changedReturnOption := c.copyOnRewriteExpr(n.ReturnOption, n) 4243 _MatchType, changedMatchType := c.copyOnRewriteExpr(n.MatchType, n) 4244 if changedExpr || changedPattern || changedPosition || changedOccurrence || changedReturnOption || changedMatchType { 4245 res := *n 4246 res.Expr, _ = _Expr.(Expr) 4247 res.Pattern, _ = _Pattern.(Expr) 4248 res.Position, _ = _Position.(Expr) 4249 res.Occurrence, _ = _Occurrence.(Expr) 4250 res.ReturnOption, _ = _ReturnOption.(Expr) 4251 res.MatchType, _ = _MatchType.(Expr) 4252 out = &res 4253 if c.cloned != nil { 4254 c.cloned(n, out) 4255 } 4256 changed = true 4257 } 4258 } 4259 if c.post != nil { 4260 out, changed = c.postVisit(out, parent, changed) 4261 } 4262 return 4263 } 4264 func (c *cow) copyOnRewriteRefOfRegexpLikeExpr(n *RegexpLikeExpr, parent SQLNode) (out SQLNode, changed bool) { 4265 if n == nil || c.cursor.stop { 4266 return n, false 4267 } 4268 out = n 4269 if c.pre == nil || c.pre(n, parent) { 4270 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 4271 _Pattern, changedPattern := c.copyOnRewriteExpr(n.Pattern, n) 4272 _MatchType, changedMatchType := c.copyOnRewriteExpr(n.MatchType, n) 4273 if changedExpr || changedPattern || changedMatchType { 4274 res := *n 4275 res.Expr, _ = _Expr.(Expr) 4276 res.Pattern, _ = _Pattern.(Expr) 4277 res.MatchType, _ = _MatchType.(Expr) 4278 out = &res 4279 if c.cloned != nil { 4280 c.cloned(n, out) 4281 } 4282 changed = true 4283 } 4284 } 4285 if c.post != nil { 4286 out, changed = c.postVisit(out, parent, changed) 4287 } 4288 return 4289 } 4290 func (c *cow) copyOnRewriteRefOfRegexpReplaceExpr(n *RegexpReplaceExpr, parent SQLNode) (out SQLNode, changed bool) { 4291 if n == nil || c.cursor.stop { 4292 return n, false 4293 } 4294 out = n 4295 if c.pre == nil || c.pre(n, parent) { 4296 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 4297 _Pattern, changedPattern := c.copyOnRewriteExpr(n.Pattern, n) 4298 _Repl, changedRepl := c.copyOnRewriteExpr(n.Repl, n) 4299 _Occurrence, changedOccurrence := c.copyOnRewriteExpr(n.Occurrence, n) 4300 _Position, changedPosition := c.copyOnRewriteExpr(n.Position, n) 4301 _MatchType, changedMatchType := c.copyOnRewriteExpr(n.MatchType, n) 4302 if changedExpr || changedPattern || changedRepl || changedOccurrence || changedPosition || changedMatchType { 4303 res := *n 4304 res.Expr, _ = _Expr.(Expr) 4305 res.Pattern, _ = _Pattern.(Expr) 4306 res.Repl, _ = _Repl.(Expr) 4307 res.Occurrence, _ = _Occurrence.(Expr) 4308 res.Position, _ = _Position.(Expr) 4309 res.MatchType, _ = _MatchType.(Expr) 4310 out = &res 4311 if c.cloned != nil { 4312 c.cloned(n, out) 4313 } 4314 changed = true 4315 } 4316 } 4317 if c.post != nil { 4318 out, changed = c.postVisit(out, parent, changed) 4319 } 4320 return 4321 } 4322 func (c *cow) copyOnRewriteRefOfRegexpSubstrExpr(n *RegexpSubstrExpr, parent SQLNode) (out SQLNode, changed bool) { 4323 if n == nil || c.cursor.stop { 4324 return n, false 4325 } 4326 out = n 4327 if c.pre == nil || c.pre(n, parent) { 4328 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 4329 _Pattern, changedPattern := c.copyOnRewriteExpr(n.Pattern, n) 4330 _Occurrence, changedOccurrence := c.copyOnRewriteExpr(n.Occurrence, n) 4331 _Position, changedPosition := c.copyOnRewriteExpr(n.Position, n) 4332 _MatchType, changedMatchType := c.copyOnRewriteExpr(n.MatchType, n) 4333 if changedExpr || changedPattern || changedOccurrence || changedPosition || changedMatchType { 4334 res := *n 4335 res.Expr, _ = _Expr.(Expr) 4336 res.Pattern, _ = _Pattern.(Expr) 4337 res.Occurrence, _ = _Occurrence.(Expr) 4338 res.Position, _ = _Position.(Expr) 4339 res.MatchType, _ = _MatchType.(Expr) 4340 out = &res 4341 if c.cloned != nil { 4342 c.cloned(n, out) 4343 } 4344 changed = true 4345 } 4346 } 4347 if c.post != nil { 4348 out, changed = c.postVisit(out, parent, changed) 4349 } 4350 return 4351 } 4352 func (c *cow) copyOnRewriteRefOfRelease(n *Release, parent SQLNode) (out SQLNode, changed bool) { 4353 if n == nil || c.cursor.stop { 4354 return n, false 4355 } 4356 out = n 4357 if c.pre == nil || c.pre(n, parent) { 4358 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 4359 if changedName { 4360 res := *n 4361 res.Name, _ = _Name.(IdentifierCI) 4362 out = &res 4363 if c.cloned != nil { 4364 c.cloned(n, out) 4365 } 4366 changed = true 4367 } 4368 } 4369 if c.post != nil { 4370 out, changed = c.postVisit(out, parent, changed) 4371 } 4372 return 4373 } 4374 func (c *cow) copyOnRewriteRefOfRenameColumn(n *RenameColumn, parent SQLNode) (out SQLNode, changed bool) { 4375 if n == nil || c.cursor.stop { 4376 return n, false 4377 } 4378 out = n 4379 if c.pre == nil || c.pre(n, parent) { 4380 _OldName, changedOldName := c.copyOnRewriteRefOfColName(n.OldName, n) 4381 _NewName, changedNewName := c.copyOnRewriteRefOfColName(n.NewName, n) 4382 if changedOldName || changedNewName { 4383 res := *n 4384 res.OldName, _ = _OldName.(*ColName) 4385 res.NewName, _ = _NewName.(*ColName) 4386 out = &res 4387 if c.cloned != nil { 4388 c.cloned(n, out) 4389 } 4390 changed = true 4391 } 4392 } 4393 if c.post != nil { 4394 out, changed = c.postVisit(out, parent, changed) 4395 } 4396 return 4397 } 4398 func (c *cow) copyOnRewriteRefOfRenameIndex(n *RenameIndex, parent SQLNode) (out SQLNode, changed bool) { 4399 if n == nil || c.cursor.stop { 4400 return n, false 4401 } 4402 out = n 4403 if c.pre == nil || c.pre(n, parent) { 4404 _OldName, changedOldName := c.copyOnRewriteIdentifierCI(n.OldName, n) 4405 _NewName, changedNewName := c.copyOnRewriteIdentifierCI(n.NewName, n) 4406 if changedOldName || changedNewName { 4407 res := *n 4408 res.OldName, _ = _OldName.(IdentifierCI) 4409 res.NewName, _ = _NewName.(IdentifierCI) 4410 out = &res 4411 if c.cloned != nil { 4412 c.cloned(n, out) 4413 } 4414 changed = true 4415 } 4416 } 4417 if c.post != nil { 4418 out, changed = c.postVisit(out, parent, changed) 4419 } 4420 return 4421 } 4422 func (c *cow) copyOnRewriteRefOfRenameTable(n *RenameTable, parent SQLNode) (out SQLNode, changed bool) { 4423 if n == nil || c.cursor.stop { 4424 return n, false 4425 } 4426 out = n 4427 if c.pre == nil || c.pre(n, parent) { 4428 } 4429 if c.post != nil { 4430 out, changed = c.postVisit(out, parent, changed) 4431 } 4432 return 4433 } 4434 func (c *cow) copyOnRewriteRefOfRenameTableName(n *RenameTableName, parent SQLNode) (out SQLNode, changed bool) { 4435 if n == nil || c.cursor.stop { 4436 return n, false 4437 } 4438 out = n 4439 if c.pre == nil || c.pre(n, parent) { 4440 _Table, changedTable := c.copyOnRewriteTableName(n.Table, n) 4441 if changedTable { 4442 res := *n 4443 res.Table, _ = _Table.(TableName) 4444 out = &res 4445 if c.cloned != nil { 4446 c.cloned(n, out) 4447 } 4448 changed = true 4449 } 4450 } 4451 if c.post != nil { 4452 out, changed = c.postVisit(out, parent, changed) 4453 } 4454 return 4455 } 4456 func (c *cow) copyOnRewriteRefOfRevertMigration(n *RevertMigration, parent SQLNode) (out SQLNode, changed bool) { 4457 if n == nil || c.cursor.stop { 4458 return n, false 4459 } 4460 out = n 4461 if c.pre == nil || c.pre(n, parent) { 4462 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 4463 if changedComments { 4464 res := *n 4465 res.Comments, _ = _Comments.(*ParsedComments) 4466 out = &res 4467 if c.cloned != nil { 4468 c.cloned(n, out) 4469 } 4470 changed = true 4471 } 4472 } 4473 if c.post != nil { 4474 out, changed = c.postVisit(out, parent, changed) 4475 } 4476 return 4477 } 4478 func (c *cow) copyOnRewriteRefOfRollback(n *Rollback, parent SQLNode) (out SQLNode, changed bool) { 4479 if n == nil || c.cursor.stop { 4480 return n, false 4481 } 4482 out = n 4483 if c.pre == nil || c.pre(n, parent) { 4484 } 4485 if c.post != nil { 4486 out, changed = c.postVisit(out, parent, changed) 4487 } 4488 return 4489 } 4490 func (c *cow) copyOnRewriteRootNode(n RootNode, parent SQLNode) (out SQLNode, changed bool) { 4491 out = n 4492 if c.pre == nil || c.pre(n, parent) { 4493 _SQLNode, changedSQLNode := c.copyOnRewriteSQLNode(n.SQLNode, n) 4494 if changedSQLNode { 4495 res := n 4496 res.SQLNode, _ = _SQLNode.(SQLNode) 4497 out = &res 4498 if c.cloned != nil { 4499 c.cloned(n, out) 4500 } 4501 changed = true 4502 } 4503 } 4504 if c.post != nil { 4505 out, changed = c.postVisit(out, parent, changed) 4506 } 4507 return 4508 } 4509 func (c *cow) copyOnRewriteRefOfSRollback(n *SRollback, parent SQLNode) (out SQLNode, changed bool) { 4510 if n == nil || c.cursor.stop { 4511 return n, false 4512 } 4513 out = n 4514 if c.pre == nil || c.pre(n, parent) { 4515 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 4516 if changedName { 4517 res := *n 4518 res.Name, _ = _Name.(IdentifierCI) 4519 out = &res 4520 if c.cloned != nil { 4521 c.cloned(n, out) 4522 } 4523 changed = true 4524 } 4525 } 4526 if c.post != nil { 4527 out, changed = c.postVisit(out, parent, changed) 4528 } 4529 return 4530 } 4531 func (c *cow) copyOnRewriteRefOfSavepoint(n *Savepoint, parent SQLNode) (out SQLNode, changed bool) { 4532 if n == nil || c.cursor.stop { 4533 return n, false 4534 } 4535 out = n 4536 if c.pre == nil || c.pre(n, parent) { 4537 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 4538 if changedName { 4539 res := *n 4540 res.Name, _ = _Name.(IdentifierCI) 4541 out = &res 4542 if c.cloned != nil { 4543 c.cloned(n, out) 4544 } 4545 changed = true 4546 } 4547 } 4548 if c.post != nil { 4549 out, changed = c.postVisit(out, parent, changed) 4550 } 4551 return 4552 } 4553 func (c *cow) copyOnRewriteRefOfSelect(n *Select, parent SQLNode) (out SQLNode, changed bool) { 4554 if n == nil || c.cursor.stop { 4555 return n, false 4556 } 4557 out = n 4558 if c.pre == nil || c.pre(n, parent) { 4559 var changedFrom bool 4560 _From := make([]TableExpr, len(n.From)) 4561 for x, el := range n.From { 4562 this, changed := c.copyOnRewriteTableExpr(el, n) 4563 _From[x] = this.(TableExpr) 4564 if changed { 4565 changedFrom = true 4566 } 4567 } 4568 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 4569 _SelectExprs, changedSelectExprs := c.copyOnRewriteSelectExprs(n.SelectExprs, n) 4570 _Where, changedWhere := c.copyOnRewriteRefOfWhere(n.Where, n) 4571 _With, changedWith := c.copyOnRewriteRefOfWith(n.With, n) 4572 _GroupBy, changedGroupBy := c.copyOnRewriteGroupBy(n.GroupBy, n) 4573 _Having, changedHaving := c.copyOnRewriteRefOfWhere(n.Having, n) 4574 _Windows, changedWindows := c.copyOnRewriteNamedWindows(n.Windows, n) 4575 _OrderBy, changedOrderBy := c.copyOnRewriteOrderBy(n.OrderBy, n) 4576 _Limit, changedLimit := c.copyOnRewriteRefOfLimit(n.Limit, n) 4577 _Into, changedInto := c.copyOnRewriteRefOfSelectInto(n.Into, n) 4578 if changedFrom || changedComments || changedSelectExprs || changedWhere || changedWith || changedGroupBy || changedHaving || changedWindows || changedOrderBy || changedLimit || changedInto { 4579 res := *n 4580 res.From = _From 4581 res.Comments, _ = _Comments.(*ParsedComments) 4582 res.SelectExprs, _ = _SelectExprs.(SelectExprs) 4583 res.Where, _ = _Where.(*Where) 4584 res.With, _ = _With.(*With) 4585 res.GroupBy, _ = _GroupBy.(GroupBy) 4586 res.Having, _ = _Having.(*Where) 4587 res.Windows, _ = _Windows.(NamedWindows) 4588 res.OrderBy, _ = _OrderBy.(OrderBy) 4589 res.Limit, _ = _Limit.(*Limit) 4590 res.Into, _ = _Into.(*SelectInto) 4591 out = &res 4592 if c.cloned != nil { 4593 c.cloned(n, out) 4594 } 4595 changed = true 4596 } 4597 } 4598 if c.post != nil { 4599 out, changed = c.postVisit(out, parent, changed) 4600 } 4601 return 4602 } 4603 func (c *cow) copyOnRewriteSelectExprs(n SelectExprs, parent SQLNode) (out SQLNode, changed bool) { 4604 if n == nil || c.cursor.stop { 4605 return n, false 4606 } 4607 out = n 4608 if c.pre == nil || c.pre(n, parent) { 4609 res := make(SelectExprs, len(n)) 4610 for x, el := range n { 4611 this, change := c.copyOnRewriteSelectExpr(el, n) 4612 res[x] = this.(SelectExpr) 4613 if change { 4614 changed = true 4615 } 4616 } 4617 if changed { 4618 out = res 4619 } 4620 } 4621 if c.post != nil { 4622 out, changed = c.postVisit(out, parent, changed) 4623 } 4624 return 4625 } 4626 func (c *cow) copyOnRewriteRefOfSelectInto(n *SelectInto, parent SQLNode) (out SQLNode, changed bool) { 4627 if n == nil || c.cursor.stop { 4628 return n, false 4629 } 4630 out = n 4631 if c.pre == nil || c.pre(n, parent) { 4632 } 4633 if c.post != nil { 4634 out, changed = c.postVisit(out, parent, changed) 4635 } 4636 return 4637 } 4638 func (c *cow) copyOnRewriteRefOfSet(n *Set, parent SQLNode) (out SQLNode, changed bool) { 4639 if n == nil || c.cursor.stop { 4640 return n, false 4641 } 4642 out = n 4643 if c.pre == nil || c.pre(n, parent) { 4644 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 4645 _Exprs, changedExprs := c.copyOnRewriteSetExprs(n.Exprs, n) 4646 if changedComments || changedExprs { 4647 res := *n 4648 res.Comments, _ = _Comments.(*ParsedComments) 4649 res.Exprs, _ = _Exprs.(SetExprs) 4650 out = &res 4651 if c.cloned != nil { 4652 c.cloned(n, out) 4653 } 4654 changed = true 4655 } 4656 } 4657 if c.post != nil { 4658 out, changed = c.postVisit(out, parent, changed) 4659 } 4660 return 4661 } 4662 func (c *cow) copyOnRewriteRefOfSetExpr(n *SetExpr, parent SQLNode) (out SQLNode, changed bool) { 4663 if n == nil || c.cursor.stop { 4664 return n, false 4665 } 4666 out = n 4667 if c.pre == nil || c.pre(n, parent) { 4668 _Var, changedVar := c.copyOnRewriteRefOfVariable(n.Var, n) 4669 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 4670 if changedVar || changedExpr { 4671 res := *n 4672 res.Var, _ = _Var.(*Variable) 4673 res.Expr, _ = _Expr.(Expr) 4674 out = &res 4675 if c.cloned != nil { 4676 c.cloned(n, out) 4677 } 4678 changed = true 4679 } 4680 } 4681 if c.post != nil { 4682 out, changed = c.postVisit(out, parent, changed) 4683 } 4684 return 4685 } 4686 func (c *cow) copyOnRewriteSetExprs(n SetExprs, parent SQLNode) (out SQLNode, changed bool) { 4687 if n == nil || c.cursor.stop { 4688 return n, false 4689 } 4690 out = n 4691 if c.pre == nil || c.pre(n, parent) { 4692 res := make(SetExprs, len(n)) 4693 for x, el := range n { 4694 this, change := c.copyOnRewriteRefOfSetExpr(el, n) 4695 res[x] = this.(*SetExpr) 4696 if change { 4697 changed = true 4698 } 4699 } 4700 if changed { 4701 out = res 4702 } 4703 } 4704 if c.post != nil { 4705 out, changed = c.postVisit(out, parent, changed) 4706 } 4707 return 4708 } 4709 func (c *cow) copyOnRewriteRefOfShow(n *Show, parent SQLNode) (out SQLNode, changed bool) { 4710 if n == nil || c.cursor.stop { 4711 return n, false 4712 } 4713 out = n 4714 if c.pre == nil || c.pre(n, parent) { 4715 _Internal, changedInternal := c.copyOnRewriteShowInternal(n.Internal, n) 4716 if changedInternal { 4717 res := *n 4718 res.Internal, _ = _Internal.(ShowInternal) 4719 out = &res 4720 if c.cloned != nil { 4721 c.cloned(n, out) 4722 } 4723 changed = true 4724 } 4725 } 4726 if c.post != nil { 4727 out, changed = c.postVisit(out, parent, changed) 4728 } 4729 return 4730 } 4731 func (c *cow) copyOnRewriteRefOfShowBasic(n *ShowBasic, parent SQLNode) (out SQLNode, changed bool) { 4732 if n == nil || c.cursor.stop { 4733 return n, false 4734 } 4735 out = n 4736 if c.pre == nil || c.pre(n, parent) { 4737 _Tbl, changedTbl := c.copyOnRewriteTableName(n.Tbl, n) 4738 _DbName, changedDbName := c.copyOnRewriteIdentifierCS(n.DbName, n) 4739 _Filter, changedFilter := c.copyOnRewriteRefOfShowFilter(n.Filter, n) 4740 if changedTbl || changedDbName || changedFilter { 4741 res := *n 4742 res.Tbl, _ = _Tbl.(TableName) 4743 res.DbName, _ = _DbName.(IdentifierCS) 4744 res.Filter, _ = _Filter.(*ShowFilter) 4745 out = &res 4746 if c.cloned != nil { 4747 c.cloned(n, out) 4748 } 4749 changed = true 4750 } 4751 } 4752 if c.post != nil { 4753 out, changed = c.postVisit(out, parent, changed) 4754 } 4755 return 4756 } 4757 func (c *cow) copyOnRewriteRefOfShowCreate(n *ShowCreate, parent SQLNode) (out SQLNode, changed bool) { 4758 if n == nil || c.cursor.stop { 4759 return n, false 4760 } 4761 out = n 4762 if c.pre == nil || c.pre(n, parent) { 4763 _Op, changedOp := c.copyOnRewriteTableName(n.Op, n) 4764 if changedOp { 4765 res := *n 4766 res.Op, _ = _Op.(TableName) 4767 out = &res 4768 if c.cloned != nil { 4769 c.cloned(n, out) 4770 } 4771 changed = true 4772 } 4773 } 4774 if c.post != nil { 4775 out, changed = c.postVisit(out, parent, changed) 4776 } 4777 return 4778 } 4779 func (c *cow) copyOnRewriteRefOfShowFilter(n *ShowFilter, parent SQLNode) (out SQLNode, changed bool) { 4780 if n == nil || c.cursor.stop { 4781 return n, false 4782 } 4783 out = n 4784 if c.pre == nil || c.pre(n, parent) { 4785 _Filter, changedFilter := c.copyOnRewriteExpr(n.Filter, n) 4786 if changedFilter { 4787 res := *n 4788 res.Filter, _ = _Filter.(Expr) 4789 out = &res 4790 if c.cloned != nil { 4791 c.cloned(n, out) 4792 } 4793 changed = true 4794 } 4795 } 4796 if c.post != nil { 4797 out, changed = c.postVisit(out, parent, changed) 4798 } 4799 return 4800 } 4801 func (c *cow) copyOnRewriteRefOfShowMigrationLogs(n *ShowMigrationLogs, parent SQLNode) (out SQLNode, changed bool) { 4802 if n == nil || c.cursor.stop { 4803 return n, false 4804 } 4805 out = n 4806 if c.pre == nil || c.pre(n, parent) { 4807 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 4808 if changedComments { 4809 res := *n 4810 res.Comments, _ = _Comments.(*ParsedComments) 4811 out = &res 4812 if c.cloned != nil { 4813 c.cloned(n, out) 4814 } 4815 changed = true 4816 } 4817 } 4818 if c.post != nil { 4819 out, changed = c.postVisit(out, parent, changed) 4820 } 4821 return 4822 } 4823 func (c *cow) copyOnRewriteRefOfShowOther(n *ShowOther, parent SQLNode) (out SQLNode, changed bool) { 4824 if n == nil || c.cursor.stop { 4825 return n, false 4826 } 4827 out = n 4828 if c.pre == nil || c.pre(n, parent) { 4829 } 4830 if c.post != nil { 4831 out, changed = c.postVisit(out, parent, changed) 4832 } 4833 return 4834 } 4835 func (c *cow) copyOnRewriteRefOfShowThrottledApps(n *ShowThrottledApps, parent SQLNode) (out SQLNode, changed bool) { 4836 if n == nil || c.cursor.stop { 4837 return n, false 4838 } 4839 out = n 4840 if c.pre == nil || c.pre(n, parent) { 4841 } 4842 if c.post != nil { 4843 out, changed = c.postVisit(out, parent, changed) 4844 } 4845 return 4846 } 4847 func (c *cow) copyOnRewriteRefOfShowThrottlerStatus(n *ShowThrottlerStatus, parent SQLNode) (out SQLNode, changed bool) { 4848 if n == nil || c.cursor.stop { 4849 return n, false 4850 } 4851 out = n 4852 if c.pre == nil || c.pre(n, parent) { 4853 } 4854 if c.post != nil { 4855 out, changed = c.postVisit(out, parent, changed) 4856 } 4857 return 4858 } 4859 func (c *cow) copyOnRewriteRefOfStarExpr(n *StarExpr, parent SQLNode) (out SQLNode, changed bool) { 4860 if n == nil || c.cursor.stop { 4861 return n, false 4862 } 4863 out = n 4864 if c.pre == nil || c.pre(n, parent) { 4865 _TableName, changedTableName := c.copyOnRewriteTableName(n.TableName, n) 4866 if changedTableName { 4867 res := *n 4868 res.TableName, _ = _TableName.(TableName) 4869 out = &res 4870 if c.cloned != nil { 4871 c.cloned(n, out) 4872 } 4873 changed = true 4874 } 4875 } 4876 if c.post != nil { 4877 out, changed = c.postVisit(out, parent, changed) 4878 } 4879 return 4880 } 4881 func (c *cow) copyOnRewriteRefOfStd(n *Std, parent SQLNode) (out SQLNode, changed bool) { 4882 if n == nil || c.cursor.stop { 4883 return n, false 4884 } 4885 out = n 4886 if c.pre == nil || c.pre(n, parent) { 4887 _Arg, changedArg := c.copyOnRewriteExpr(n.Arg, n) 4888 if changedArg { 4889 res := *n 4890 res.Arg, _ = _Arg.(Expr) 4891 out = &res 4892 if c.cloned != nil { 4893 c.cloned(n, out) 4894 } 4895 changed = true 4896 } 4897 } 4898 if c.post != nil { 4899 out, changed = c.postVisit(out, parent, changed) 4900 } 4901 return 4902 } 4903 func (c *cow) copyOnRewriteRefOfStdDev(n *StdDev, parent SQLNode) (out SQLNode, changed bool) { 4904 if n == nil || c.cursor.stop { 4905 return n, false 4906 } 4907 out = n 4908 if c.pre == nil || c.pre(n, parent) { 4909 _Arg, changedArg := c.copyOnRewriteExpr(n.Arg, n) 4910 if changedArg { 4911 res := *n 4912 res.Arg, _ = _Arg.(Expr) 4913 out = &res 4914 if c.cloned != nil { 4915 c.cloned(n, out) 4916 } 4917 changed = true 4918 } 4919 } 4920 if c.post != nil { 4921 out, changed = c.postVisit(out, parent, changed) 4922 } 4923 return 4924 } 4925 func (c *cow) copyOnRewriteRefOfStdPop(n *StdPop, parent SQLNode) (out SQLNode, changed bool) { 4926 if n == nil || c.cursor.stop { 4927 return n, false 4928 } 4929 out = n 4930 if c.pre == nil || c.pre(n, parent) { 4931 _Arg, changedArg := c.copyOnRewriteExpr(n.Arg, n) 4932 if changedArg { 4933 res := *n 4934 res.Arg, _ = _Arg.(Expr) 4935 out = &res 4936 if c.cloned != nil { 4937 c.cloned(n, out) 4938 } 4939 changed = true 4940 } 4941 } 4942 if c.post != nil { 4943 out, changed = c.postVisit(out, parent, changed) 4944 } 4945 return 4946 } 4947 func (c *cow) copyOnRewriteRefOfStdSamp(n *StdSamp, parent SQLNode) (out SQLNode, changed bool) { 4948 if n == nil || c.cursor.stop { 4949 return n, false 4950 } 4951 out = n 4952 if c.pre == nil || c.pre(n, parent) { 4953 _Arg, changedArg := c.copyOnRewriteExpr(n.Arg, n) 4954 if changedArg { 4955 res := *n 4956 res.Arg, _ = _Arg.(Expr) 4957 out = &res 4958 if c.cloned != nil { 4959 c.cloned(n, out) 4960 } 4961 changed = true 4962 } 4963 } 4964 if c.post != nil { 4965 out, changed = c.postVisit(out, parent, changed) 4966 } 4967 return 4968 } 4969 func (c *cow) copyOnRewriteRefOfStream(n *Stream, parent SQLNode) (out SQLNode, changed bool) { 4970 if n == nil || c.cursor.stop { 4971 return n, false 4972 } 4973 out = n 4974 if c.pre == nil || c.pre(n, parent) { 4975 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 4976 _SelectExpr, changedSelectExpr := c.copyOnRewriteSelectExpr(n.SelectExpr, n) 4977 _Table, changedTable := c.copyOnRewriteTableName(n.Table, n) 4978 if changedComments || changedSelectExpr || changedTable { 4979 res := *n 4980 res.Comments, _ = _Comments.(*ParsedComments) 4981 res.SelectExpr, _ = _SelectExpr.(SelectExpr) 4982 res.Table, _ = _Table.(TableName) 4983 out = &res 4984 if c.cloned != nil { 4985 c.cloned(n, out) 4986 } 4987 changed = true 4988 } 4989 } 4990 if c.post != nil { 4991 out, changed = c.postVisit(out, parent, changed) 4992 } 4993 return 4994 } 4995 func (c *cow) copyOnRewriteRefOfSubPartition(n *SubPartition, parent SQLNode) (out SQLNode, changed bool) { 4996 if n == nil || c.cursor.stop { 4997 return n, false 4998 } 4999 out = n 5000 if c.pre == nil || c.pre(n, parent) { 5001 _ColList, changedColList := c.copyOnRewriteColumns(n.ColList, n) 5002 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 5003 if changedColList || changedExpr { 5004 res := *n 5005 res.ColList, _ = _ColList.(Columns) 5006 res.Expr, _ = _Expr.(Expr) 5007 out = &res 5008 if c.cloned != nil { 5009 c.cloned(n, out) 5010 } 5011 changed = true 5012 } 5013 } 5014 if c.post != nil { 5015 out, changed = c.postVisit(out, parent, changed) 5016 } 5017 return 5018 } 5019 func (c *cow) copyOnRewriteRefOfSubPartitionDefinition(n *SubPartitionDefinition, parent SQLNode) (out SQLNode, changed bool) { 5020 if n == nil || c.cursor.stop { 5021 return n, false 5022 } 5023 out = n 5024 if c.pre == nil || c.pre(n, parent) { 5025 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 5026 _Options, changedOptions := c.copyOnRewriteRefOfSubPartitionDefinitionOptions(n.Options, n) 5027 if changedName || changedOptions { 5028 res := *n 5029 res.Name, _ = _Name.(IdentifierCI) 5030 res.Options, _ = _Options.(*SubPartitionDefinitionOptions) 5031 out = &res 5032 if c.cloned != nil { 5033 c.cloned(n, out) 5034 } 5035 changed = true 5036 } 5037 } 5038 if c.post != nil { 5039 out, changed = c.postVisit(out, parent, changed) 5040 } 5041 return 5042 } 5043 func (c *cow) copyOnRewriteRefOfSubPartitionDefinitionOptions(n *SubPartitionDefinitionOptions, parent SQLNode) (out SQLNode, changed bool) { 5044 if n == nil || c.cursor.stop { 5045 return n, false 5046 } 5047 out = n 5048 if c.pre == nil || c.pre(n, parent) { 5049 _Comment, changedComment := c.copyOnRewriteRefOfLiteral(n.Comment, n) 5050 _Engine, changedEngine := c.copyOnRewriteRefOfPartitionEngine(n.Engine, n) 5051 _DataDirectory, changedDataDirectory := c.copyOnRewriteRefOfLiteral(n.DataDirectory, n) 5052 _IndexDirectory, changedIndexDirectory := c.copyOnRewriteRefOfLiteral(n.IndexDirectory, n) 5053 if changedComment || changedEngine || changedDataDirectory || changedIndexDirectory { 5054 res := *n 5055 res.Comment, _ = _Comment.(*Literal) 5056 res.Engine, _ = _Engine.(*PartitionEngine) 5057 res.DataDirectory, _ = _DataDirectory.(*Literal) 5058 res.IndexDirectory, _ = _IndexDirectory.(*Literal) 5059 out = &res 5060 if c.cloned != nil { 5061 c.cloned(n, out) 5062 } 5063 changed = true 5064 } 5065 } 5066 if c.post != nil { 5067 out, changed = c.postVisit(out, parent, changed) 5068 } 5069 return 5070 } 5071 func (c *cow) copyOnRewriteSubPartitionDefinitions(n SubPartitionDefinitions, parent SQLNode) (out SQLNode, changed bool) { 5072 if n == nil || c.cursor.stop { 5073 return n, false 5074 } 5075 out = n 5076 if c.pre == nil || c.pre(n, parent) { 5077 res := make(SubPartitionDefinitions, len(n)) 5078 for x, el := range n { 5079 this, change := c.copyOnRewriteRefOfSubPartitionDefinition(el, n) 5080 res[x] = this.(*SubPartitionDefinition) 5081 if change { 5082 changed = true 5083 } 5084 } 5085 if changed { 5086 out = res 5087 } 5088 } 5089 if c.post != nil { 5090 out, changed = c.postVisit(out, parent, changed) 5091 } 5092 return 5093 } 5094 func (c *cow) copyOnRewriteRefOfSubquery(n *Subquery, parent SQLNode) (out SQLNode, changed bool) { 5095 if n == nil || c.cursor.stop { 5096 return n, false 5097 } 5098 out = n 5099 if c.pre == nil || c.pre(n, parent) { 5100 _Select, changedSelect := c.copyOnRewriteSelectStatement(n.Select, n) 5101 if changedSelect { 5102 res := *n 5103 res.Select, _ = _Select.(SelectStatement) 5104 out = &res 5105 if c.cloned != nil { 5106 c.cloned(n, out) 5107 } 5108 changed = true 5109 } 5110 } 5111 if c.post != nil { 5112 out, changed = c.postVisit(out, parent, changed) 5113 } 5114 return 5115 } 5116 func (c *cow) copyOnRewriteRefOfSubstrExpr(n *SubstrExpr, parent SQLNode) (out SQLNode, changed bool) { 5117 if n == nil || c.cursor.stop { 5118 return n, false 5119 } 5120 out = n 5121 if c.pre == nil || c.pre(n, parent) { 5122 _Name, changedName := c.copyOnRewriteExpr(n.Name, n) 5123 _From, changedFrom := c.copyOnRewriteExpr(n.From, n) 5124 _To, changedTo := c.copyOnRewriteExpr(n.To, n) 5125 if changedName || changedFrom || changedTo { 5126 res := *n 5127 res.Name, _ = _Name.(Expr) 5128 res.From, _ = _From.(Expr) 5129 res.To, _ = _To.(Expr) 5130 out = &res 5131 if c.cloned != nil { 5132 c.cloned(n, out) 5133 } 5134 changed = true 5135 } 5136 } 5137 if c.post != nil { 5138 out, changed = c.postVisit(out, parent, changed) 5139 } 5140 return 5141 } 5142 func (c *cow) copyOnRewriteRefOfSum(n *Sum, parent SQLNode) (out SQLNode, changed bool) { 5143 if n == nil || c.cursor.stop { 5144 return n, false 5145 } 5146 out = n 5147 if c.pre == nil || c.pre(n, parent) { 5148 _Arg, changedArg := c.copyOnRewriteExpr(n.Arg, n) 5149 if changedArg { 5150 res := *n 5151 res.Arg, _ = _Arg.(Expr) 5152 out = &res 5153 if c.cloned != nil { 5154 c.cloned(n, out) 5155 } 5156 changed = true 5157 } 5158 } 5159 if c.post != nil { 5160 out, changed = c.postVisit(out, parent, changed) 5161 } 5162 return 5163 } 5164 func (c *cow) copyOnRewriteTableExprs(n TableExprs, parent SQLNode) (out SQLNode, changed bool) { 5165 if n == nil || c.cursor.stop { 5166 return n, false 5167 } 5168 out = n 5169 if c.pre == nil || c.pre(n, parent) { 5170 res := make(TableExprs, len(n)) 5171 for x, el := range n { 5172 this, change := c.copyOnRewriteTableExpr(el, n) 5173 res[x] = this.(TableExpr) 5174 if change { 5175 changed = true 5176 } 5177 } 5178 if changed { 5179 out = res 5180 } 5181 } 5182 if c.post != nil { 5183 out, changed = c.postVisit(out, parent, changed) 5184 } 5185 return 5186 } 5187 func (c *cow) copyOnRewriteTableName(n TableName, parent SQLNode) (out SQLNode, changed bool) { 5188 out = n 5189 if c.pre == nil || c.pre(n, parent) { 5190 _Name, changedName := c.copyOnRewriteIdentifierCS(n.Name, n) 5191 _Qualifier, changedQualifier := c.copyOnRewriteIdentifierCS(n.Qualifier, n) 5192 if changedName || changedQualifier { 5193 res := n 5194 res.Name, _ = _Name.(IdentifierCS) 5195 res.Qualifier, _ = _Qualifier.(IdentifierCS) 5196 out = &res 5197 if c.cloned != nil { 5198 c.cloned(n, out) 5199 } 5200 changed = true 5201 } 5202 } 5203 if c.post != nil { 5204 out, changed = c.postVisit(out, parent, changed) 5205 } 5206 return 5207 } 5208 func (c *cow) copyOnRewriteTableNames(n TableNames, parent SQLNode) (out SQLNode, changed bool) { 5209 if n == nil || c.cursor.stop { 5210 return n, false 5211 } 5212 out = n 5213 if c.pre == nil || c.pre(n, parent) { 5214 res := make(TableNames, len(n)) 5215 for x, el := range n { 5216 this, change := c.copyOnRewriteTableName(el, n) 5217 res[x] = this.(TableName) 5218 if change { 5219 changed = true 5220 } 5221 } 5222 if changed { 5223 out = res 5224 } 5225 } 5226 if c.post != nil { 5227 out, changed = c.postVisit(out, parent, changed) 5228 } 5229 return 5230 } 5231 func (c *cow) copyOnRewriteTableOptions(n TableOptions, parent SQLNode) (out SQLNode, changed bool) { 5232 if n == nil || c.cursor.stop { 5233 return n, false 5234 } 5235 out = n 5236 if c.pre != nil { 5237 c.pre(n, parent) 5238 } 5239 if c.post != nil { 5240 out, changed = c.postVisit(out, parent, changed) 5241 } 5242 return 5243 } 5244 func (c *cow) copyOnRewriteRefOfTableSpec(n *TableSpec, parent SQLNode) (out SQLNode, changed bool) { 5245 if n == nil || c.cursor.stop { 5246 return n, false 5247 } 5248 out = n 5249 if c.pre == nil || c.pre(n, parent) { 5250 var changedColumns bool 5251 _Columns := make([]*ColumnDefinition, len(n.Columns)) 5252 for x, el := range n.Columns { 5253 this, changed := c.copyOnRewriteRefOfColumnDefinition(el, n) 5254 _Columns[x] = this.(*ColumnDefinition) 5255 if changed { 5256 changedColumns = true 5257 } 5258 } 5259 var changedIndexes bool 5260 _Indexes := make([]*IndexDefinition, len(n.Indexes)) 5261 for x, el := range n.Indexes { 5262 this, changed := c.copyOnRewriteRefOfIndexDefinition(el, n) 5263 _Indexes[x] = this.(*IndexDefinition) 5264 if changed { 5265 changedIndexes = true 5266 } 5267 } 5268 var changedConstraints bool 5269 _Constraints := make([]*ConstraintDefinition, len(n.Constraints)) 5270 for x, el := range n.Constraints { 5271 this, changed := c.copyOnRewriteRefOfConstraintDefinition(el, n) 5272 _Constraints[x] = this.(*ConstraintDefinition) 5273 if changed { 5274 changedConstraints = true 5275 } 5276 } 5277 _Options, changedOptions := c.copyOnRewriteTableOptions(n.Options, n) 5278 _PartitionOption, changedPartitionOption := c.copyOnRewriteRefOfPartitionOption(n.PartitionOption, n) 5279 if changedColumns || changedIndexes || changedConstraints || changedOptions || changedPartitionOption { 5280 res := *n 5281 res.Columns = _Columns 5282 res.Indexes = _Indexes 5283 res.Constraints = _Constraints 5284 res.Options, _ = _Options.(TableOptions) 5285 res.PartitionOption, _ = _PartitionOption.(*PartitionOption) 5286 out = &res 5287 if c.cloned != nil { 5288 c.cloned(n, out) 5289 } 5290 changed = true 5291 } 5292 } 5293 if c.post != nil { 5294 out, changed = c.postVisit(out, parent, changed) 5295 } 5296 return 5297 } 5298 func (c *cow) copyOnRewriteRefOfTablespaceOperation(n *TablespaceOperation, parent SQLNode) (out SQLNode, changed bool) { 5299 if n == nil || c.cursor.stop { 5300 return n, false 5301 } 5302 out = n 5303 if c.pre == nil || c.pre(n, parent) { 5304 } 5305 if c.post != nil { 5306 out, changed = c.postVisit(out, parent, changed) 5307 } 5308 return 5309 } 5310 func (c *cow) copyOnRewriteRefOfTimestampFuncExpr(n *TimestampFuncExpr, parent SQLNode) (out SQLNode, changed bool) { 5311 if n == nil || c.cursor.stop { 5312 return n, false 5313 } 5314 out = n 5315 if c.pre == nil || c.pre(n, parent) { 5316 _Expr1, changedExpr1 := c.copyOnRewriteExpr(n.Expr1, n) 5317 _Expr2, changedExpr2 := c.copyOnRewriteExpr(n.Expr2, n) 5318 if changedExpr1 || changedExpr2 { 5319 res := *n 5320 res.Expr1, _ = _Expr1.(Expr) 5321 res.Expr2, _ = _Expr2.(Expr) 5322 out = &res 5323 if c.cloned != nil { 5324 c.cloned(n, out) 5325 } 5326 changed = true 5327 } 5328 } 5329 if c.post != nil { 5330 out, changed = c.postVisit(out, parent, changed) 5331 } 5332 return 5333 } 5334 func (c *cow) copyOnRewriteRefOfTrimFuncExpr(n *TrimFuncExpr, parent SQLNode) (out SQLNode, changed bool) { 5335 if n == nil || c.cursor.stop { 5336 return n, false 5337 } 5338 out = n 5339 if c.pre == nil || c.pre(n, parent) { 5340 _TrimArg, changedTrimArg := c.copyOnRewriteExpr(n.TrimArg, n) 5341 _StringArg, changedStringArg := c.copyOnRewriteExpr(n.StringArg, n) 5342 if changedTrimArg || changedStringArg { 5343 res := *n 5344 res.TrimArg, _ = _TrimArg.(Expr) 5345 res.StringArg, _ = _StringArg.(Expr) 5346 out = &res 5347 if c.cloned != nil { 5348 c.cloned(n, out) 5349 } 5350 changed = true 5351 } 5352 } 5353 if c.post != nil { 5354 out, changed = c.postVisit(out, parent, changed) 5355 } 5356 return 5357 } 5358 func (c *cow) copyOnRewriteRefOfTruncateTable(n *TruncateTable, parent SQLNode) (out SQLNode, changed bool) { 5359 if n == nil || c.cursor.stop { 5360 return n, false 5361 } 5362 out = n 5363 if c.pre == nil || c.pre(n, parent) { 5364 _Table, changedTable := c.copyOnRewriteTableName(n.Table, n) 5365 if changedTable { 5366 res := *n 5367 res.Table, _ = _Table.(TableName) 5368 out = &res 5369 if c.cloned != nil { 5370 c.cloned(n, out) 5371 } 5372 changed = true 5373 } 5374 } 5375 if c.post != nil { 5376 out, changed = c.postVisit(out, parent, changed) 5377 } 5378 return 5379 } 5380 func (c *cow) copyOnRewriteRefOfUnaryExpr(n *UnaryExpr, parent SQLNode) (out SQLNode, changed bool) { 5381 if n == nil || c.cursor.stop { 5382 return n, false 5383 } 5384 out = n 5385 if c.pre == nil || c.pre(n, parent) { 5386 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 5387 if changedExpr { 5388 res := *n 5389 res.Expr, _ = _Expr.(Expr) 5390 out = &res 5391 if c.cloned != nil { 5392 c.cloned(n, out) 5393 } 5394 changed = true 5395 } 5396 } 5397 if c.post != nil { 5398 out, changed = c.postVisit(out, parent, changed) 5399 } 5400 return 5401 } 5402 func (c *cow) copyOnRewriteRefOfUnion(n *Union, parent SQLNode) (out SQLNode, changed bool) { 5403 if n == nil || c.cursor.stop { 5404 return n, false 5405 } 5406 out = n 5407 if c.pre == nil || c.pre(n, parent) { 5408 _Left, changedLeft := c.copyOnRewriteSelectStatement(n.Left, n) 5409 _Right, changedRight := c.copyOnRewriteSelectStatement(n.Right, n) 5410 _OrderBy, changedOrderBy := c.copyOnRewriteOrderBy(n.OrderBy, n) 5411 _With, changedWith := c.copyOnRewriteRefOfWith(n.With, n) 5412 _Limit, changedLimit := c.copyOnRewriteRefOfLimit(n.Limit, n) 5413 _Into, changedInto := c.copyOnRewriteRefOfSelectInto(n.Into, n) 5414 if changedLeft || changedRight || changedOrderBy || changedWith || changedLimit || changedInto { 5415 res := *n 5416 res.Left, _ = _Left.(SelectStatement) 5417 res.Right, _ = _Right.(SelectStatement) 5418 res.OrderBy, _ = _OrderBy.(OrderBy) 5419 res.With, _ = _With.(*With) 5420 res.Limit, _ = _Limit.(*Limit) 5421 res.Into, _ = _Into.(*SelectInto) 5422 out = &res 5423 if c.cloned != nil { 5424 c.cloned(n, out) 5425 } 5426 changed = true 5427 } 5428 } 5429 if c.post != nil { 5430 out, changed = c.postVisit(out, parent, changed) 5431 } 5432 return 5433 } 5434 func (c *cow) copyOnRewriteRefOfUnlockTables(n *UnlockTables, parent SQLNode) (out SQLNode, changed bool) { 5435 if n == nil || c.cursor.stop { 5436 return n, false 5437 } 5438 out = n 5439 if c.pre == nil || c.pre(n, parent) { 5440 } 5441 if c.post != nil { 5442 out, changed = c.postVisit(out, parent, changed) 5443 } 5444 return 5445 } 5446 func (c *cow) copyOnRewriteRefOfUpdate(n *Update, parent SQLNode) (out SQLNode, changed bool) { 5447 if n == nil || c.cursor.stop { 5448 return n, false 5449 } 5450 out = n 5451 if c.pre == nil || c.pre(n, parent) { 5452 _With, changedWith := c.copyOnRewriteRefOfWith(n.With, n) 5453 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 5454 _TableExprs, changedTableExprs := c.copyOnRewriteTableExprs(n.TableExprs, n) 5455 _Exprs, changedExprs := c.copyOnRewriteUpdateExprs(n.Exprs, n) 5456 _Where, changedWhere := c.copyOnRewriteRefOfWhere(n.Where, n) 5457 _OrderBy, changedOrderBy := c.copyOnRewriteOrderBy(n.OrderBy, n) 5458 _Limit, changedLimit := c.copyOnRewriteRefOfLimit(n.Limit, n) 5459 if changedWith || changedComments || changedTableExprs || changedExprs || changedWhere || changedOrderBy || changedLimit { 5460 res := *n 5461 res.With, _ = _With.(*With) 5462 res.Comments, _ = _Comments.(*ParsedComments) 5463 res.TableExprs, _ = _TableExprs.(TableExprs) 5464 res.Exprs, _ = _Exprs.(UpdateExprs) 5465 res.Where, _ = _Where.(*Where) 5466 res.OrderBy, _ = _OrderBy.(OrderBy) 5467 res.Limit, _ = _Limit.(*Limit) 5468 out = &res 5469 if c.cloned != nil { 5470 c.cloned(n, out) 5471 } 5472 changed = true 5473 } 5474 } 5475 if c.post != nil { 5476 out, changed = c.postVisit(out, parent, changed) 5477 } 5478 return 5479 } 5480 func (c *cow) copyOnRewriteRefOfUpdateExpr(n *UpdateExpr, parent SQLNode) (out SQLNode, changed bool) { 5481 if n == nil || c.cursor.stop { 5482 return n, false 5483 } 5484 out = n 5485 if c.pre == nil || c.pre(n, parent) { 5486 _Name, changedName := c.copyOnRewriteRefOfColName(n.Name, n) 5487 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 5488 if changedName || changedExpr { 5489 res := *n 5490 res.Name, _ = _Name.(*ColName) 5491 res.Expr, _ = _Expr.(Expr) 5492 out = &res 5493 if c.cloned != nil { 5494 c.cloned(n, out) 5495 } 5496 changed = true 5497 } 5498 } 5499 if c.post != nil { 5500 out, changed = c.postVisit(out, parent, changed) 5501 } 5502 return 5503 } 5504 func (c *cow) copyOnRewriteUpdateExprs(n UpdateExprs, parent SQLNode) (out SQLNode, changed bool) { 5505 if n == nil || c.cursor.stop { 5506 return n, false 5507 } 5508 out = n 5509 if c.pre == nil || c.pre(n, parent) { 5510 res := make(UpdateExprs, len(n)) 5511 for x, el := range n { 5512 this, change := c.copyOnRewriteRefOfUpdateExpr(el, n) 5513 res[x] = this.(*UpdateExpr) 5514 if change { 5515 changed = true 5516 } 5517 } 5518 if changed { 5519 out = res 5520 } 5521 } 5522 if c.post != nil { 5523 out, changed = c.postVisit(out, parent, changed) 5524 } 5525 return 5526 } 5527 func (c *cow) copyOnRewriteRefOfUpdateXMLExpr(n *UpdateXMLExpr, parent SQLNode) (out SQLNode, changed bool) { 5528 if n == nil || c.cursor.stop { 5529 return n, false 5530 } 5531 out = n 5532 if c.pre == nil || c.pre(n, parent) { 5533 _Target, changedTarget := c.copyOnRewriteExpr(n.Target, n) 5534 _XPathExpr, changedXPathExpr := c.copyOnRewriteExpr(n.XPathExpr, n) 5535 _NewXML, changedNewXML := c.copyOnRewriteExpr(n.NewXML, n) 5536 if changedTarget || changedXPathExpr || changedNewXML { 5537 res := *n 5538 res.Target, _ = _Target.(Expr) 5539 res.XPathExpr, _ = _XPathExpr.(Expr) 5540 res.NewXML, _ = _NewXML.(Expr) 5541 out = &res 5542 if c.cloned != nil { 5543 c.cloned(n, out) 5544 } 5545 changed = true 5546 } 5547 } 5548 if c.post != nil { 5549 out, changed = c.postVisit(out, parent, changed) 5550 } 5551 return 5552 } 5553 func (c *cow) copyOnRewriteRefOfUse(n *Use, parent SQLNode) (out SQLNode, changed bool) { 5554 if n == nil || c.cursor.stop { 5555 return n, false 5556 } 5557 out = n 5558 if c.pre == nil || c.pre(n, parent) { 5559 _DBName, changedDBName := c.copyOnRewriteIdentifierCS(n.DBName, n) 5560 if changedDBName { 5561 res := *n 5562 res.DBName, _ = _DBName.(IdentifierCS) 5563 out = &res 5564 if c.cloned != nil { 5565 c.cloned(n, out) 5566 } 5567 changed = true 5568 } 5569 } 5570 if c.post != nil { 5571 out, changed = c.postVisit(out, parent, changed) 5572 } 5573 return 5574 } 5575 func (c *cow) copyOnRewriteRefOfVExplainStmt(n *VExplainStmt, parent SQLNode) (out SQLNode, changed bool) { 5576 if n == nil || c.cursor.stop { 5577 return n, false 5578 } 5579 out = n 5580 if c.pre == nil || c.pre(n, parent) { 5581 _Statement, changedStatement := c.copyOnRewriteStatement(n.Statement, n) 5582 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 5583 if changedStatement || changedComments { 5584 res := *n 5585 res.Statement, _ = _Statement.(Statement) 5586 res.Comments, _ = _Comments.(*ParsedComments) 5587 out = &res 5588 if c.cloned != nil { 5589 c.cloned(n, out) 5590 } 5591 changed = true 5592 } 5593 } 5594 if c.post != nil { 5595 out, changed = c.postVisit(out, parent, changed) 5596 } 5597 return 5598 } 5599 func (c *cow) copyOnRewriteRefOfVStream(n *VStream, parent SQLNode) (out SQLNode, changed bool) { 5600 if n == nil || c.cursor.stop { 5601 return n, false 5602 } 5603 out = n 5604 if c.pre == nil || c.pre(n, parent) { 5605 _Comments, changedComments := c.copyOnRewriteRefOfParsedComments(n.Comments, n) 5606 _SelectExpr, changedSelectExpr := c.copyOnRewriteSelectExpr(n.SelectExpr, n) 5607 _Table, changedTable := c.copyOnRewriteTableName(n.Table, n) 5608 _Where, changedWhere := c.copyOnRewriteRefOfWhere(n.Where, n) 5609 _Limit, changedLimit := c.copyOnRewriteRefOfLimit(n.Limit, n) 5610 if changedComments || changedSelectExpr || changedTable || changedWhere || changedLimit { 5611 res := *n 5612 res.Comments, _ = _Comments.(*ParsedComments) 5613 res.SelectExpr, _ = _SelectExpr.(SelectExpr) 5614 res.Table, _ = _Table.(TableName) 5615 res.Where, _ = _Where.(*Where) 5616 res.Limit, _ = _Limit.(*Limit) 5617 out = &res 5618 if c.cloned != nil { 5619 c.cloned(n, out) 5620 } 5621 changed = true 5622 } 5623 } 5624 if c.post != nil { 5625 out, changed = c.postVisit(out, parent, changed) 5626 } 5627 return 5628 } 5629 func (c *cow) copyOnRewriteValTuple(n ValTuple, parent SQLNode) (out SQLNode, changed bool) { 5630 if n == nil || c.cursor.stop { 5631 return n, false 5632 } 5633 out = n 5634 if c.pre == nil || c.pre(n, parent) { 5635 res := make(ValTuple, len(n)) 5636 for x, el := range n { 5637 this, change := c.copyOnRewriteExpr(el, n) 5638 res[x] = this.(Expr) 5639 if change { 5640 changed = true 5641 } 5642 } 5643 if changed { 5644 out = res 5645 } 5646 } 5647 if c.post != nil { 5648 out, changed = c.postVisit(out, parent, changed) 5649 } 5650 return 5651 } 5652 func (c *cow) copyOnRewriteRefOfValidation(n *Validation, parent SQLNode) (out SQLNode, changed bool) { 5653 if n == nil || c.cursor.stop { 5654 return n, false 5655 } 5656 out = n 5657 if c.pre == nil || c.pre(n, parent) { 5658 } 5659 if c.post != nil { 5660 out, changed = c.postVisit(out, parent, changed) 5661 } 5662 return 5663 } 5664 func (c *cow) copyOnRewriteValues(n Values, parent SQLNode) (out SQLNode, changed bool) { 5665 if n == nil || c.cursor.stop { 5666 return n, false 5667 } 5668 out = n 5669 if c.pre == nil || c.pre(n, parent) { 5670 res := make(Values, len(n)) 5671 for x, el := range n { 5672 this, change := c.copyOnRewriteValTuple(el, n) 5673 res[x] = this.(ValTuple) 5674 if change { 5675 changed = true 5676 } 5677 } 5678 if changed { 5679 out = res 5680 } 5681 } 5682 if c.post != nil { 5683 out, changed = c.postVisit(out, parent, changed) 5684 } 5685 return 5686 } 5687 func (c *cow) copyOnRewriteRefOfValuesFuncExpr(n *ValuesFuncExpr, parent SQLNode) (out SQLNode, changed bool) { 5688 if n == nil || c.cursor.stop { 5689 return n, false 5690 } 5691 out = n 5692 if c.pre == nil || c.pre(n, parent) { 5693 _Name, changedName := c.copyOnRewriteRefOfColName(n.Name, n) 5694 if changedName { 5695 res := *n 5696 res.Name, _ = _Name.(*ColName) 5697 out = &res 5698 if c.cloned != nil { 5699 c.cloned(n, out) 5700 } 5701 changed = true 5702 } 5703 } 5704 if c.post != nil { 5705 out, changed = c.postVisit(out, parent, changed) 5706 } 5707 return 5708 } 5709 func (c *cow) copyOnRewriteRefOfVarPop(n *VarPop, parent SQLNode) (out SQLNode, changed bool) { 5710 if n == nil || c.cursor.stop { 5711 return n, false 5712 } 5713 out = n 5714 if c.pre == nil || c.pre(n, parent) { 5715 _Arg, changedArg := c.copyOnRewriteExpr(n.Arg, n) 5716 if changedArg { 5717 res := *n 5718 res.Arg, _ = _Arg.(Expr) 5719 out = &res 5720 if c.cloned != nil { 5721 c.cloned(n, out) 5722 } 5723 changed = true 5724 } 5725 } 5726 if c.post != nil { 5727 out, changed = c.postVisit(out, parent, changed) 5728 } 5729 return 5730 } 5731 func (c *cow) copyOnRewriteRefOfVarSamp(n *VarSamp, parent SQLNode) (out SQLNode, changed bool) { 5732 if n == nil || c.cursor.stop { 5733 return n, false 5734 } 5735 out = n 5736 if c.pre == nil || c.pre(n, parent) { 5737 _Arg, changedArg := c.copyOnRewriteExpr(n.Arg, n) 5738 if changedArg { 5739 res := *n 5740 res.Arg, _ = _Arg.(Expr) 5741 out = &res 5742 if c.cloned != nil { 5743 c.cloned(n, out) 5744 } 5745 changed = true 5746 } 5747 } 5748 if c.post != nil { 5749 out, changed = c.postVisit(out, parent, changed) 5750 } 5751 return 5752 } 5753 func (c *cow) copyOnRewriteRefOfVariable(n *Variable, parent SQLNode) (out SQLNode, changed bool) { 5754 if n == nil || c.cursor.stop { 5755 return n, false 5756 } 5757 out = n 5758 if c.pre == nil || c.pre(n, parent) { 5759 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 5760 if changedName { 5761 res := *n 5762 res.Name, _ = _Name.(IdentifierCI) 5763 out = &res 5764 if c.cloned != nil { 5765 c.cloned(n, out) 5766 } 5767 changed = true 5768 } 5769 } 5770 if c.post != nil { 5771 out, changed = c.postVisit(out, parent, changed) 5772 } 5773 return 5774 } 5775 func (c *cow) copyOnRewriteRefOfVariance(n *Variance, parent SQLNode) (out SQLNode, changed bool) { 5776 if n == nil || c.cursor.stop { 5777 return n, false 5778 } 5779 out = n 5780 if c.pre == nil || c.pre(n, parent) { 5781 _Arg, changedArg := c.copyOnRewriteExpr(n.Arg, n) 5782 if changedArg { 5783 res := *n 5784 res.Arg, _ = _Arg.(Expr) 5785 out = &res 5786 if c.cloned != nil { 5787 c.cloned(n, out) 5788 } 5789 changed = true 5790 } 5791 } 5792 if c.post != nil { 5793 out, changed = c.postVisit(out, parent, changed) 5794 } 5795 return 5796 } 5797 func (c *cow) copyOnRewriteVindexParam(n VindexParam, parent SQLNode) (out SQLNode, changed bool) { 5798 out = n 5799 if c.pre == nil || c.pre(n, parent) { 5800 _Key, changedKey := c.copyOnRewriteIdentifierCI(n.Key, n) 5801 if changedKey { 5802 res := n 5803 res.Key, _ = _Key.(IdentifierCI) 5804 out = &res 5805 if c.cloned != nil { 5806 c.cloned(n, out) 5807 } 5808 changed = true 5809 } 5810 } 5811 if c.post != nil { 5812 out, changed = c.postVisit(out, parent, changed) 5813 } 5814 return 5815 } 5816 func (c *cow) copyOnRewriteRefOfVindexSpec(n *VindexSpec, parent SQLNode) (out SQLNode, changed bool) { 5817 if n == nil || c.cursor.stop { 5818 return n, false 5819 } 5820 out = n 5821 if c.pre == nil || c.pre(n, parent) { 5822 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 5823 _Type, changedType := c.copyOnRewriteIdentifierCI(n.Type, n) 5824 var changedParams bool 5825 _Params := make([]VindexParam, len(n.Params)) 5826 for x, el := range n.Params { 5827 this, changed := c.copyOnRewriteVindexParam(el, n) 5828 _Params[x] = this.(VindexParam) 5829 if changed { 5830 changedParams = true 5831 } 5832 } 5833 if changedName || changedType || changedParams { 5834 res := *n 5835 res.Name, _ = _Name.(IdentifierCI) 5836 res.Type, _ = _Type.(IdentifierCI) 5837 res.Params = _Params 5838 out = &res 5839 if c.cloned != nil { 5840 c.cloned(n, out) 5841 } 5842 changed = true 5843 } 5844 } 5845 if c.post != nil { 5846 out, changed = c.postVisit(out, parent, changed) 5847 } 5848 return 5849 } 5850 func (c *cow) copyOnRewriteRefOfWeightStringFuncExpr(n *WeightStringFuncExpr, parent SQLNode) (out SQLNode, changed bool) { 5851 if n == nil || c.cursor.stop { 5852 return n, false 5853 } 5854 out = n 5855 if c.pre == nil || c.pre(n, parent) { 5856 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 5857 _As, changedAs := c.copyOnRewriteRefOfConvertType(n.As, n) 5858 if changedExpr || changedAs { 5859 res := *n 5860 res.Expr, _ = _Expr.(Expr) 5861 res.As, _ = _As.(*ConvertType) 5862 out = &res 5863 if c.cloned != nil { 5864 c.cloned(n, out) 5865 } 5866 changed = true 5867 } 5868 } 5869 if c.post != nil { 5870 out, changed = c.postVisit(out, parent, changed) 5871 } 5872 return 5873 } 5874 func (c *cow) copyOnRewriteRefOfWhen(n *When, parent SQLNode) (out SQLNode, changed bool) { 5875 if n == nil || c.cursor.stop { 5876 return n, false 5877 } 5878 out = n 5879 if c.pre == nil || c.pre(n, parent) { 5880 _Cond, changedCond := c.copyOnRewriteExpr(n.Cond, n) 5881 _Val, changedVal := c.copyOnRewriteExpr(n.Val, n) 5882 if changedCond || changedVal { 5883 res := *n 5884 res.Cond, _ = _Cond.(Expr) 5885 res.Val, _ = _Val.(Expr) 5886 out = &res 5887 if c.cloned != nil { 5888 c.cloned(n, out) 5889 } 5890 changed = true 5891 } 5892 } 5893 if c.post != nil { 5894 out, changed = c.postVisit(out, parent, changed) 5895 } 5896 return 5897 } 5898 func (c *cow) copyOnRewriteRefOfWhere(n *Where, parent SQLNode) (out SQLNode, changed bool) { 5899 if n == nil || c.cursor.stop { 5900 return n, false 5901 } 5902 out = n 5903 if c.pre == nil || c.pre(n, parent) { 5904 _Expr, changedExpr := c.copyOnRewriteExpr(n.Expr, n) 5905 if changedExpr { 5906 res := *n 5907 res.Expr, _ = _Expr.(Expr) 5908 out = &res 5909 if c.cloned != nil { 5910 c.cloned(n, out) 5911 } 5912 changed = true 5913 } 5914 } 5915 if c.post != nil { 5916 out, changed = c.postVisit(out, parent, changed) 5917 } 5918 return 5919 } 5920 func (c *cow) copyOnRewriteRefOfWindowDefinition(n *WindowDefinition, parent SQLNode) (out SQLNode, changed bool) { 5921 if n == nil || c.cursor.stop { 5922 return n, false 5923 } 5924 out = n 5925 if c.pre == nil || c.pre(n, parent) { 5926 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 5927 _WindowSpec, changedWindowSpec := c.copyOnRewriteRefOfWindowSpecification(n.WindowSpec, n) 5928 if changedName || changedWindowSpec { 5929 res := *n 5930 res.Name, _ = _Name.(IdentifierCI) 5931 res.WindowSpec, _ = _WindowSpec.(*WindowSpecification) 5932 out = &res 5933 if c.cloned != nil { 5934 c.cloned(n, out) 5935 } 5936 changed = true 5937 } 5938 } 5939 if c.post != nil { 5940 out, changed = c.postVisit(out, parent, changed) 5941 } 5942 return 5943 } 5944 func (c *cow) copyOnRewriteWindowDefinitions(n WindowDefinitions, parent SQLNode) (out SQLNode, changed bool) { 5945 if n == nil || c.cursor.stop { 5946 return n, false 5947 } 5948 out = n 5949 if c.pre == nil || c.pre(n, parent) { 5950 res := make(WindowDefinitions, len(n)) 5951 for x, el := range n { 5952 this, change := c.copyOnRewriteRefOfWindowDefinition(el, n) 5953 res[x] = this.(*WindowDefinition) 5954 if change { 5955 changed = true 5956 } 5957 } 5958 if changed { 5959 out = res 5960 } 5961 } 5962 if c.post != nil { 5963 out, changed = c.postVisit(out, parent, changed) 5964 } 5965 return 5966 } 5967 func (c *cow) copyOnRewriteRefOfWindowSpecification(n *WindowSpecification, parent SQLNode) (out SQLNode, changed bool) { 5968 if n == nil || c.cursor.stop { 5969 return n, false 5970 } 5971 out = n 5972 if c.pre == nil || c.pre(n, parent) { 5973 _Name, changedName := c.copyOnRewriteIdentifierCI(n.Name, n) 5974 _PartitionClause, changedPartitionClause := c.copyOnRewriteExprs(n.PartitionClause, n) 5975 _OrderClause, changedOrderClause := c.copyOnRewriteOrderBy(n.OrderClause, n) 5976 _FrameClause, changedFrameClause := c.copyOnRewriteRefOfFrameClause(n.FrameClause, n) 5977 if changedName || changedPartitionClause || changedOrderClause || changedFrameClause { 5978 res := *n 5979 res.Name, _ = _Name.(IdentifierCI) 5980 res.PartitionClause, _ = _PartitionClause.(Exprs) 5981 res.OrderClause, _ = _OrderClause.(OrderBy) 5982 res.FrameClause, _ = _FrameClause.(*FrameClause) 5983 out = &res 5984 if c.cloned != nil { 5985 c.cloned(n, out) 5986 } 5987 changed = true 5988 } 5989 } 5990 if c.post != nil { 5991 out, changed = c.postVisit(out, parent, changed) 5992 } 5993 return 5994 } 5995 func (c *cow) copyOnRewriteRefOfWith(n *With, parent SQLNode) (out SQLNode, changed bool) { 5996 if n == nil || c.cursor.stop { 5997 return n, false 5998 } 5999 out = n 6000 if c.pre == nil || c.pre(n, parent) { 6001 var changedctes bool 6002 _ctes := make([]*CommonTableExpr, len(n.ctes)) 6003 for x, el := range n.ctes { 6004 this, changed := c.copyOnRewriteRefOfCommonTableExpr(el, n) 6005 _ctes[x] = this.(*CommonTableExpr) 6006 if changed { 6007 changedctes = true 6008 } 6009 } 6010 if changedctes { 6011 res := *n 6012 res.ctes = _ctes 6013 out = &res 6014 if c.cloned != nil { 6015 c.cloned(n, out) 6016 } 6017 changed = true 6018 } 6019 } 6020 if c.post != nil { 6021 out, changed = c.postVisit(out, parent, changed) 6022 } 6023 return 6024 } 6025 func (c *cow) copyOnRewriteRefOfXorExpr(n *XorExpr, parent SQLNode) (out SQLNode, changed bool) { 6026 if n == nil || c.cursor.stop { 6027 return n, false 6028 } 6029 out = n 6030 if c.pre == nil || c.pre(n, parent) { 6031 _Left, changedLeft := c.copyOnRewriteExpr(n.Left, n) 6032 _Right, changedRight := c.copyOnRewriteExpr(n.Right, n) 6033 if changedLeft || changedRight { 6034 res := *n 6035 res.Left, _ = _Left.(Expr) 6036 res.Right, _ = _Right.(Expr) 6037 out = &res 6038 if c.cloned != nil { 6039 c.cloned(n, out) 6040 } 6041 changed = true 6042 } 6043 } 6044 if c.post != nil { 6045 out, changed = c.postVisit(out, parent, changed) 6046 } 6047 return 6048 } 6049 func (c *cow) copyOnRewriteAggrFunc(n AggrFunc, parent SQLNode) (out SQLNode, changed bool) { 6050 if n == nil || c.cursor.stop { 6051 return n, false 6052 } 6053 switch n := n.(type) { 6054 case *Avg: 6055 return c.copyOnRewriteRefOfAvg(n, parent) 6056 case *BitAnd: 6057 return c.copyOnRewriteRefOfBitAnd(n, parent) 6058 case *BitOr: 6059 return c.copyOnRewriteRefOfBitOr(n, parent) 6060 case *BitXor: 6061 return c.copyOnRewriteRefOfBitXor(n, parent) 6062 case *Count: 6063 return c.copyOnRewriteRefOfCount(n, parent) 6064 case *CountStar: 6065 return c.copyOnRewriteRefOfCountStar(n, parent) 6066 case *GroupConcatExpr: 6067 return c.copyOnRewriteRefOfGroupConcatExpr(n, parent) 6068 case *Max: 6069 return c.copyOnRewriteRefOfMax(n, parent) 6070 case *Min: 6071 return c.copyOnRewriteRefOfMin(n, parent) 6072 case *Std: 6073 return c.copyOnRewriteRefOfStd(n, parent) 6074 case *StdDev: 6075 return c.copyOnRewriteRefOfStdDev(n, parent) 6076 case *StdPop: 6077 return c.copyOnRewriteRefOfStdPop(n, parent) 6078 case *StdSamp: 6079 return c.copyOnRewriteRefOfStdSamp(n, parent) 6080 case *Sum: 6081 return c.copyOnRewriteRefOfSum(n, parent) 6082 case *VarPop: 6083 return c.copyOnRewriteRefOfVarPop(n, parent) 6084 case *VarSamp: 6085 return c.copyOnRewriteRefOfVarSamp(n, parent) 6086 case *Variance: 6087 return c.copyOnRewriteRefOfVariance(n, parent) 6088 default: 6089 // this should never happen 6090 return nil, false 6091 } 6092 } 6093 func (c *cow) copyOnRewriteAlterOption(n AlterOption, parent SQLNode) (out SQLNode, changed bool) { 6094 if n == nil || c.cursor.stop { 6095 return n, false 6096 } 6097 switch n := n.(type) { 6098 case *AddColumns: 6099 return c.copyOnRewriteRefOfAddColumns(n, parent) 6100 case *AddConstraintDefinition: 6101 return c.copyOnRewriteRefOfAddConstraintDefinition(n, parent) 6102 case *AddIndexDefinition: 6103 return c.copyOnRewriteRefOfAddIndexDefinition(n, parent) 6104 case AlgorithmValue: 6105 return c.copyOnRewriteAlgorithmValue(n, parent) 6106 case *AlterCharset: 6107 return c.copyOnRewriteRefOfAlterCharset(n, parent) 6108 case *AlterCheck: 6109 return c.copyOnRewriteRefOfAlterCheck(n, parent) 6110 case *AlterColumn: 6111 return c.copyOnRewriteRefOfAlterColumn(n, parent) 6112 case *AlterIndex: 6113 return c.copyOnRewriteRefOfAlterIndex(n, parent) 6114 case *ChangeColumn: 6115 return c.copyOnRewriteRefOfChangeColumn(n, parent) 6116 case *DropColumn: 6117 return c.copyOnRewriteRefOfDropColumn(n, parent) 6118 case *DropKey: 6119 return c.copyOnRewriteRefOfDropKey(n, parent) 6120 case *Force: 6121 return c.copyOnRewriteRefOfForce(n, parent) 6122 case *KeyState: 6123 return c.copyOnRewriteRefOfKeyState(n, parent) 6124 case *LockOption: 6125 return c.copyOnRewriteRefOfLockOption(n, parent) 6126 case *ModifyColumn: 6127 return c.copyOnRewriteRefOfModifyColumn(n, parent) 6128 case *OrderByOption: 6129 return c.copyOnRewriteRefOfOrderByOption(n, parent) 6130 case *RenameColumn: 6131 return c.copyOnRewriteRefOfRenameColumn(n, parent) 6132 case *RenameIndex: 6133 return c.copyOnRewriteRefOfRenameIndex(n, parent) 6134 case *RenameTableName: 6135 return c.copyOnRewriteRefOfRenameTableName(n, parent) 6136 case TableOptions: 6137 return c.copyOnRewriteTableOptions(n, parent) 6138 case *TablespaceOperation: 6139 return c.copyOnRewriteRefOfTablespaceOperation(n, parent) 6140 case *Validation: 6141 return c.copyOnRewriteRefOfValidation(n, parent) 6142 default: 6143 // this should never happen 6144 return nil, false 6145 } 6146 } 6147 func (c *cow) copyOnRewriteCallable(n Callable, parent SQLNode) (out SQLNode, changed bool) { 6148 if n == nil || c.cursor.stop { 6149 return n, false 6150 } 6151 switch n := n.(type) { 6152 case *ArgumentLessWindowExpr: 6153 return c.copyOnRewriteRefOfArgumentLessWindowExpr(n, parent) 6154 case *Avg: 6155 return c.copyOnRewriteRefOfAvg(n, parent) 6156 case *CharExpr: 6157 return c.copyOnRewriteRefOfCharExpr(n, parent) 6158 case *ConvertExpr: 6159 return c.copyOnRewriteRefOfConvertExpr(n, parent) 6160 case *ConvertUsingExpr: 6161 return c.copyOnRewriteRefOfConvertUsingExpr(n, parent) 6162 case *Count: 6163 return c.copyOnRewriteRefOfCount(n, parent) 6164 case *CountStar: 6165 return c.copyOnRewriteRefOfCountStar(n, parent) 6166 case *CurTimeFuncExpr: 6167 return c.copyOnRewriteRefOfCurTimeFuncExpr(n, parent) 6168 case *ExtractFuncExpr: 6169 return c.copyOnRewriteRefOfExtractFuncExpr(n, parent) 6170 case *ExtractValueExpr: 6171 return c.copyOnRewriteRefOfExtractValueExpr(n, parent) 6172 case *FirstOrLastValueExpr: 6173 return c.copyOnRewriteRefOfFirstOrLastValueExpr(n, parent) 6174 case *FuncExpr: 6175 return c.copyOnRewriteRefOfFuncExpr(n, parent) 6176 case *GTIDFuncExpr: 6177 return c.copyOnRewriteRefOfGTIDFuncExpr(n, parent) 6178 case *GroupConcatExpr: 6179 return c.copyOnRewriteRefOfGroupConcatExpr(n, parent) 6180 case *InsertExpr: 6181 return c.copyOnRewriteRefOfInsertExpr(n, parent) 6182 case *IntervalFuncExpr: 6183 return c.copyOnRewriteRefOfIntervalFuncExpr(n, parent) 6184 case *JSONArrayExpr: 6185 return c.copyOnRewriteRefOfJSONArrayExpr(n, parent) 6186 case *JSONAttributesExpr: 6187 return c.copyOnRewriteRefOfJSONAttributesExpr(n, parent) 6188 case *JSONContainsExpr: 6189 return c.copyOnRewriteRefOfJSONContainsExpr(n, parent) 6190 case *JSONContainsPathExpr: 6191 return c.copyOnRewriteRefOfJSONContainsPathExpr(n, parent) 6192 case *JSONExtractExpr: 6193 return c.copyOnRewriteRefOfJSONExtractExpr(n, parent) 6194 case *JSONKeysExpr: 6195 return c.copyOnRewriteRefOfJSONKeysExpr(n, parent) 6196 case *JSONObjectExpr: 6197 return c.copyOnRewriteRefOfJSONObjectExpr(n, parent) 6198 case *JSONOverlapsExpr: 6199 return c.copyOnRewriteRefOfJSONOverlapsExpr(n, parent) 6200 case *JSONPrettyExpr: 6201 return c.copyOnRewriteRefOfJSONPrettyExpr(n, parent) 6202 case *JSONQuoteExpr: 6203 return c.copyOnRewriteRefOfJSONQuoteExpr(n, parent) 6204 case *JSONRemoveExpr: 6205 return c.copyOnRewriteRefOfJSONRemoveExpr(n, parent) 6206 case *JSONSchemaValidFuncExpr: 6207 return c.copyOnRewriteRefOfJSONSchemaValidFuncExpr(n, parent) 6208 case *JSONSchemaValidationReportFuncExpr: 6209 return c.copyOnRewriteRefOfJSONSchemaValidationReportFuncExpr(n, parent) 6210 case *JSONSearchExpr: 6211 return c.copyOnRewriteRefOfJSONSearchExpr(n, parent) 6212 case *JSONStorageFreeExpr: 6213 return c.copyOnRewriteRefOfJSONStorageFreeExpr(n, parent) 6214 case *JSONStorageSizeExpr: 6215 return c.copyOnRewriteRefOfJSONStorageSizeExpr(n, parent) 6216 case *JSONUnquoteExpr: 6217 return c.copyOnRewriteRefOfJSONUnquoteExpr(n, parent) 6218 case *JSONValueExpr: 6219 return c.copyOnRewriteRefOfJSONValueExpr(n, parent) 6220 case *JSONValueMergeExpr: 6221 return c.copyOnRewriteRefOfJSONValueMergeExpr(n, parent) 6222 case *JSONValueModifierExpr: 6223 return c.copyOnRewriteRefOfJSONValueModifierExpr(n, parent) 6224 case *LagLeadExpr: 6225 return c.copyOnRewriteRefOfLagLeadExpr(n, parent) 6226 case *LocateExpr: 6227 return c.copyOnRewriteRefOfLocateExpr(n, parent) 6228 case *MatchExpr: 6229 return c.copyOnRewriteRefOfMatchExpr(n, parent) 6230 case *Max: 6231 return c.copyOnRewriteRefOfMax(n, parent) 6232 case *MemberOfExpr: 6233 return c.copyOnRewriteRefOfMemberOfExpr(n, parent) 6234 case *Min: 6235 return c.copyOnRewriteRefOfMin(n, parent) 6236 case *NTHValueExpr: 6237 return c.copyOnRewriteRefOfNTHValueExpr(n, parent) 6238 case *NamedWindow: 6239 return c.copyOnRewriteRefOfNamedWindow(n, parent) 6240 case *NtileExpr: 6241 return c.copyOnRewriteRefOfNtileExpr(n, parent) 6242 case *PerformanceSchemaFuncExpr: 6243 return c.copyOnRewriteRefOfPerformanceSchemaFuncExpr(n, parent) 6244 case *RegexpInstrExpr: 6245 return c.copyOnRewriteRefOfRegexpInstrExpr(n, parent) 6246 case *RegexpLikeExpr: 6247 return c.copyOnRewriteRefOfRegexpLikeExpr(n, parent) 6248 case *RegexpReplaceExpr: 6249 return c.copyOnRewriteRefOfRegexpReplaceExpr(n, parent) 6250 case *RegexpSubstrExpr: 6251 return c.copyOnRewriteRefOfRegexpSubstrExpr(n, parent) 6252 case *SubstrExpr: 6253 return c.copyOnRewriteRefOfSubstrExpr(n, parent) 6254 case *Sum: 6255 return c.copyOnRewriteRefOfSum(n, parent) 6256 case *TimestampFuncExpr: 6257 return c.copyOnRewriteRefOfTimestampFuncExpr(n, parent) 6258 case *TrimFuncExpr: 6259 return c.copyOnRewriteRefOfTrimFuncExpr(n, parent) 6260 case *UpdateXMLExpr: 6261 return c.copyOnRewriteRefOfUpdateXMLExpr(n, parent) 6262 case *ValuesFuncExpr: 6263 return c.copyOnRewriteRefOfValuesFuncExpr(n, parent) 6264 case *WeightStringFuncExpr: 6265 return c.copyOnRewriteRefOfWeightStringFuncExpr(n, parent) 6266 default: 6267 // this should never happen 6268 return nil, false 6269 } 6270 } 6271 func (c *cow) copyOnRewriteColTuple(n ColTuple, parent SQLNode) (out SQLNode, changed bool) { 6272 if n == nil || c.cursor.stop { 6273 return n, false 6274 } 6275 switch n := n.(type) { 6276 case ListArg: 6277 return c.copyOnRewriteListArg(n, parent) 6278 case *Subquery: 6279 return c.copyOnRewriteRefOfSubquery(n, parent) 6280 case ValTuple: 6281 return c.copyOnRewriteValTuple(n, parent) 6282 default: 6283 // this should never happen 6284 return nil, false 6285 } 6286 } 6287 func (c *cow) copyOnRewriteConstraintInfo(n ConstraintInfo, parent SQLNode) (out SQLNode, changed bool) { 6288 if n == nil || c.cursor.stop { 6289 return n, false 6290 } 6291 switch n := n.(type) { 6292 case *CheckConstraintDefinition: 6293 return c.copyOnRewriteRefOfCheckConstraintDefinition(n, parent) 6294 case *ForeignKeyDefinition: 6295 return c.copyOnRewriteRefOfForeignKeyDefinition(n, parent) 6296 default: 6297 // this should never happen 6298 return nil, false 6299 } 6300 } 6301 func (c *cow) copyOnRewriteDBDDLStatement(n DBDDLStatement, parent SQLNode) (out SQLNode, changed bool) { 6302 if n == nil || c.cursor.stop { 6303 return n, false 6304 } 6305 switch n := n.(type) { 6306 case *AlterDatabase: 6307 return c.copyOnRewriteRefOfAlterDatabase(n, parent) 6308 case *CreateDatabase: 6309 return c.copyOnRewriteRefOfCreateDatabase(n, parent) 6310 case *DropDatabase: 6311 return c.copyOnRewriteRefOfDropDatabase(n, parent) 6312 default: 6313 // this should never happen 6314 return nil, false 6315 } 6316 } 6317 func (c *cow) copyOnRewriteDDLStatement(n DDLStatement, parent SQLNode) (out SQLNode, changed bool) { 6318 if n == nil || c.cursor.stop { 6319 return n, false 6320 } 6321 switch n := n.(type) { 6322 case *AlterTable: 6323 return c.copyOnRewriteRefOfAlterTable(n, parent) 6324 case *AlterView: 6325 return c.copyOnRewriteRefOfAlterView(n, parent) 6326 case *CreateTable: 6327 return c.copyOnRewriteRefOfCreateTable(n, parent) 6328 case *CreateView: 6329 return c.copyOnRewriteRefOfCreateView(n, parent) 6330 case *DropTable: 6331 return c.copyOnRewriteRefOfDropTable(n, parent) 6332 case *DropView: 6333 return c.copyOnRewriteRefOfDropView(n, parent) 6334 case *RenameTable: 6335 return c.copyOnRewriteRefOfRenameTable(n, parent) 6336 case *TruncateTable: 6337 return c.copyOnRewriteRefOfTruncateTable(n, parent) 6338 default: 6339 // this should never happen 6340 return nil, false 6341 } 6342 } 6343 func (c *cow) copyOnRewriteExplain(n Explain, parent SQLNode) (out SQLNode, changed bool) { 6344 if n == nil || c.cursor.stop { 6345 return n, false 6346 } 6347 switch n := n.(type) { 6348 case *ExplainStmt: 6349 return c.copyOnRewriteRefOfExplainStmt(n, parent) 6350 case *ExplainTab: 6351 return c.copyOnRewriteRefOfExplainTab(n, parent) 6352 default: 6353 // this should never happen 6354 return nil, false 6355 } 6356 } 6357 func (c *cow) copyOnRewriteExpr(n Expr, parent SQLNode) (out SQLNode, changed bool) { 6358 if n == nil || c.cursor.stop { 6359 return n, false 6360 } 6361 switch n := n.(type) { 6362 case *AndExpr: 6363 return c.copyOnRewriteRefOfAndExpr(n, parent) 6364 case Argument: 6365 return c.copyOnRewriteArgument(n, parent) 6366 case *ArgumentLessWindowExpr: 6367 return c.copyOnRewriteRefOfArgumentLessWindowExpr(n, parent) 6368 case *Avg: 6369 return c.copyOnRewriteRefOfAvg(n, parent) 6370 case *BetweenExpr: 6371 return c.copyOnRewriteRefOfBetweenExpr(n, parent) 6372 case *BinaryExpr: 6373 return c.copyOnRewriteRefOfBinaryExpr(n, parent) 6374 case *BitAnd: 6375 return c.copyOnRewriteRefOfBitAnd(n, parent) 6376 case *BitOr: 6377 return c.copyOnRewriteRefOfBitOr(n, parent) 6378 case *BitXor: 6379 return c.copyOnRewriteRefOfBitXor(n, parent) 6380 case BoolVal: 6381 return c.copyOnRewriteBoolVal(n, parent) 6382 case *CaseExpr: 6383 return c.copyOnRewriteRefOfCaseExpr(n, parent) 6384 case *CastExpr: 6385 return c.copyOnRewriteRefOfCastExpr(n, parent) 6386 case *CharExpr: 6387 return c.copyOnRewriteRefOfCharExpr(n, parent) 6388 case *ColName: 6389 return c.copyOnRewriteRefOfColName(n, parent) 6390 case *CollateExpr: 6391 return c.copyOnRewriteRefOfCollateExpr(n, parent) 6392 case *ComparisonExpr: 6393 return c.copyOnRewriteRefOfComparisonExpr(n, parent) 6394 case *ConvertExpr: 6395 return c.copyOnRewriteRefOfConvertExpr(n, parent) 6396 case *ConvertUsingExpr: 6397 return c.copyOnRewriteRefOfConvertUsingExpr(n, parent) 6398 case *Count: 6399 return c.copyOnRewriteRefOfCount(n, parent) 6400 case *CountStar: 6401 return c.copyOnRewriteRefOfCountStar(n, parent) 6402 case *CurTimeFuncExpr: 6403 return c.copyOnRewriteRefOfCurTimeFuncExpr(n, parent) 6404 case *Default: 6405 return c.copyOnRewriteRefOfDefault(n, parent) 6406 case *ExistsExpr: 6407 return c.copyOnRewriteRefOfExistsExpr(n, parent) 6408 case *ExtractFuncExpr: 6409 return c.copyOnRewriteRefOfExtractFuncExpr(n, parent) 6410 case *ExtractValueExpr: 6411 return c.copyOnRewriteRefOfExtractValueExpr(n, parent) 6412 case *ExtractedSubquery: 6413 return c.copyOnRewriteRefOfExtractedSubquery(n, parent) 6414 case *FirstOrLastValueExpr: 6415 return c.copyOnRewriteRefOfFirstOrLastValueExpr(n, parent) 6416 case *FuncExpr: 6417 return c.copyOnRewriteRefOfFuncExpr(n, parent) 6418 case *GTIDFuncExpr: 6419 return c.copyOnRewriteRefOfGTIDFuncExpr(n, parent) 6420 case *GroupConcatExpr: 6421 return c.copyOnRewriteRefOfGroupConcatExpr(n, parent) 6422 case *InsertExpr: 6423 return c.copyOnRewriteRefOfInsertExpr(n, parent) 6424 case *IntervalExpr: 6425 return c.copyOnRewriteRefOfIntervalExpr(n, parent) 6426 case *IntervalFuncExpr: 6427 return c.copyOnRewriteRefOfIntervalFuncExpr(n, parent) 6428 case *IntroducerExpr: 6429 return c.copyOnRewriteRefOfIntroducerExpr(n, parent) 6430 case *IsExpr: 6431 return c.copyOnRewriteRefOfIsExpr(n, parent) 6432 case *JSONArrayExpr: 6433 return c.copyOnRewriteRefOfJSONArrayExpr(n, parent) 6434 case *JSONAttributesExpr: 6435 return c.copyOnRewriteRefOfJSONAttributesExpr(n, parent) 6436 case *JSONContainsExpr: 6437 return c.copyOnRewriteRefOfJSONContainsExpr(n, parent) 6438 case *JSONContainsPathExpr: 6439 return c.copyOnRewriteRefOfJSONContainsPathExpr(n, parent) 6440 case *JSONExtractExpr: 6441 return c.copyOnRewriteRefOfJSONExtractExpr(n, parent) 6442 case *JSONKeysExpr: 6443 return c.copyOnRewriteRefOfJSONKeysExpr(n, parent) 6444 case *JSONObjectExpr: 6445 return c.copyOnRewriteRefOfJSONObjectExpr(n, parent) 6446 case *JSONOverlapsExpr: 6447 return c.copyOnRewriteRefOfJSONOverlapsExpr(n, parent) 6448 case *JSONPrettyExpr: 6449 return c.copyOnRewriteRefOfJSONPrettyExpr(n, parent) 6450 case *JSONQuoteExpr: 6451 return c.copyOnRewriteRefOfJSONQuoteExpr(n, parent) 6452 case *JSONRemoveExpr: 6453 return c.copyOnRewriteRefOfJSONRemoveExpr(n, parent) 6454 case *JSONSchemaValidFuncExpr: 6455 return c.copyOnRewriteRefOfJSONSchemaValidFuncExpr(n, parent) 6456 case *JSONSchemaValidationReportFuncExpr: 6457 return c.copyOnRewriteRefOfJSONSchemaValidationReportFuncExpr(n, parent) 6458 case *JSONSearchExpr: 6459 return c.copyOnRewriteRefOfJSONSearchExpr(n, parent) 6460 case *JSONStorageFreeExpr: 6461 return c.copyOnRewriteRefOfJSONStorageFreeExpr(n, parent) 6462 case *JSONStorageSizeExpr: 6463 return c.copyOnRewriteRefOfJSONStorageSizeExpr(n, parent) 6464 case *JSONUnquoteExpr: 6465 return c.copyOnRewriteRefOfJSONUnquoteExpr(n, parent) 6466 case *JSONValueExpr: 6467 return c.copyOnRewriteRefOfJSONValueExpr(n, parent) 6468 case *JSONValueMergeExpr: 6469 return c.copyOnRewriteRefOfJSONValueMergeExpr(n, parent) 6470 case *JSONValueModifierExpr: 6471 return c.copyOnRewriteRefOfJSONValueModifierExpr(n, parent) 6472 case *LagLeadExpr: 6473 return c.copyOnRewriteRefOfLagLeadExpr(n, parent) 6474 case ListArg: 6475 return c.copyOnRewriteListArg(n, parent) 6476 case *Literal: 6477 return c.copyOnRewriteRefOfLiteral(n, parent) 6478 case *LocateExpr: 6479 return c.copyOnRewriteRefOfLocateExpr(n, parent) 6480 case *LockingFunc: 6481 return c.copyOnRewriteRefOfLockingFunc(n, parent) 6482 case *MatchExpr: 6483 return c.copyOnRewriteRefOfMatchExpr(n, parent) 6484 case *Max: 6485 return c.copyOnRewriteRefOfMax(n, parent) 6486 case *MemberOfExpr: 6487 return c.copyOnRewriteRefOfMemberOfExpr(n, parent) 6488 case *Min: 6489 return c.copyOnRewriteRefOfMin(n, parent) 6490 case *NTHValueExpr: 6491 return c.copyOnRewriteRefOfNTHValueExpr(n, parent) 6492 case *NamedWindow: 6493 return c.copyOnRewriteRefOfNamedWindow(n, parent) 6494 case *NotExpr: 6495 return c.copyOnRewriteRefOfNotExpr(n, parent) 6496 case *NtileExpr: 6497 return c.copyOnRewriteRefOfNtileExpr(n, parent) 6498 case *NullVal: 6499 return c.copyOnRewriteRefOfNullVal(n, parent) 6500 case *Offset: 6501 return c.copyOnRewriteRefOfOffset(n, parent) 6502 case *OrExpr: 6503 return c.copyOnRewriteRefOfOrExpr(n, parent) 6504 case *PerformanceSchemaFuncExpr: 6505 return c.copyOnRewriteRefOfPerformanceSchemaFuncExpr(n, parent) 6506 case *RegexpInstrExpr: 6507 return c.copyOnRewriteRefOfRegexpInstrExpr(n, parent) 6508 case *RegexpLikeExpr: 6509 return c.copyOnRewriteRefOfRegexpLikeExpr(n, parent) 6510 case *RegexpReplaceExpr: 6511 return c.copyOnRewriteRefOfRegexpReplaceExpr(n, parent) 6512 case *RegexpSubstrExpr: 6513 return c.copyOnRewriteRefOfRegexpSubstrExpr(n, parent) 6514 case *Std: 6515 return c.copyOnRewriteRefOfStd(n, parent) 6516 case *StdDev: 6517 return c.copyOnRewriteRefOfStdDev(n, parent) 6518 case *StdPop: 6519 return c.copyOnRewriteRefOfStdPop(n, parent) 6520 case *StdSamp: 6521 return c.copyOnRewriteRefOfStdSamp(n, parent) 6522 case *Subquery: 6523 return c.copyOnRewriteRefOfSubquery(n, parent) 6524 case *SubstrExpr: 6525 return c.copyOnRewriteRefOfSubstrExpr(n, parent) 6526 case *Sum: 6527 return c.copyOnRewriteRefOfSum(n, parent) 6528 case *TimestampFuncExpr: 6529 return c.copyOnRewriteRefOfTimestampFuncExpr(n, parent) 6530 case *TrimFuncExpr: 6531 return c.copyOnRewriteRefOfTrimFuncExpr(n, parent) 6532 case *UnaryExpr: 6533 return c.copyOnRewriteRefOfUnaryExpr(n, parent) 6534 case *UpdateXMLExpr: 6535 return c.copyOnRewriteRefOfUpdateXMLExpr(n, parent) 6536 case ValTuple: 6537 return c.copyOnRewriteValTuple(n, parent) 6538 case *ValuesFuncExpr: 6539 return c.copyOnRewriteRefOfValuesFuncExpr(n, parent) 6540 case *VarPop: 6541 return c.copyOnRewriteRefOfVarPop(n, parent) 6542 case *VarSamp: 6543 return c.copyOnRewriteRefOfVarSamp(n, parent) 6544 case *Variable: 6545 return c.copyOnRewriteRefOfVariable(n, parent) 6546 case *Variance: 6547 return c.copyOnRewriteRefOfVariance(n, parent) 6548 case *WeightStringFuncExpr: 6549 return c.copyOnRewriteRefOfWeightStringFuncExpr(n, parent) 6550 case *XorExpr: 6551 return c.copyOnRewriteRefOfXorExpr(n, parent) 6552 default: 6553 // this should never happen 6554 return nil, false 6555 } 6556 } 6557 func (c *cow) copyOnRewriteInsertRows(n InsertRows, parent SQLNode) (out SQLNode, changed bool) { 6558 if n == nil || c.cursor.stop { 6559 return n, false 6560 } 6561 switch n := n.(type) { 6562 case *Select: 6563 return c.copyOnRewriteRefOfSelect(n, parent) 6564 case *Union: 6565 return c.copyOnRewriteRefOfUnion(n, parent) 6566 case Values: 6567 return c.copyOnRewriteValues(n, parent) 6568 default: 6569 // this should never happen 6570 return nil, false 6571 } 6572 } 6573 func (c *cow) copyOnRewriteSelectExpr(n SelectExpr, parent SQLNode) (out SQLNode, changed bool) { 6574 if n == nil || c.cursor.stop { 6575 return n, false 6576 } 6577 switch n := n.(type) { 6578 case *AliasedExpr: 6579 return c.copyOnRewriteRefOfAliasedExpr(n, parent) 6580 case *Nextval: 6581 return c.copyOnRewriteRefOfNextval(n, parent) 6582 case *StarExpr: 6583 return c.copyOnRewriteRefOfStarExpr(n, parent) 6584 default: 6585 // this should never happen 6586 return nil, false 6587 } 6588 } 6589 func (c *cow) copyOnRewriteSelectStatement(n SelectStatement, parent SQLNode) (out SQLNode, changed bool) { 6590 if n == nil || c.cursor.stop { 6591 return n, false 6592 } 6593 switch n := n.(type) { 6594 case *Select: 6595 return c.copyOnRewriteRefOfSelect(n, parent) 6596 case *Union: 6597 return c.copyOnRewriteRefOfUnion(n, parent) 6598 default: 6599 // this should never happen 6600 return nil, false 6601 } 6602 } 6603 func (c *cow) copyOnRewriteShowInternal(n ShowInternal, parent SQLNode) (out SQLNode, changed bool) { 6604 if n == nil || c.cursor.stop { 6605 return n, false 6606 } 6607 switch n := n.(type) { 6608 case *ShowBasic: 6609 return c.copyOnRewriteRefOfShowBasic(n, parent) 6610 case *ShowCreate: 6611 return c.copyOnRewriteRefOfShowCreate(n, parent) 6612 case *ShowOther: 6613 return c.copyOnRewriteRefOfShowOther(n, parent) 6614 default: 6615 // this should never happen 6616 return nil, false 6617 } 6618 } 6619 func (c *cow) copyOnRewriteSimpleTableExpr(n SimpleTableExpr, parent SQLNode) (out SQLNode, changed bool) { 6620 if n == nil || c.cursor.stop { 6621 return n, false 6622 } 6623 switch n := n.(type) { 6624 case *DerivedTable: 6625 return c.copyOnRewriteRefOfDerivedTable(n, parent) 6626 case TableName: 6627 return c.copyOnRewriteTableName(n, parent) 6628 default: 6629 // this should never happen 6630 return nil, false 6631 } 6632 } 6633 func (c *cow) copyOnRewriteStatement(n Statement, parent SQLNode) (out SQLNode, changed bool) { 6634 if n == nil || c.cursor.stop { 6635 return n, false 6636 } 6637 switch n := n.(type) { 6638 case *AlterDatabase: 6639 return c.copyOnRewriteRefOfAlterDatabase(n, parent) 6640 case *AlterMigration: 6641 return c.copyOnRewriteRefOfAlterMigration(n, parent) 6642 case *AlterTable: 6643 return c.copyOnRewriteRefOfAlterTable(n, parent) 6644 case *AlterView: 6645 return c.copyOnRewriteRefOfAlterView(n, parent) 6646 case *AlterVschema: 6647 return c.copyOnRewriteRefOfAlterVschema(n, parent) 6648 case *Begin: 6649 return c.copyOnRewriteRefOfBegin(n, parent) 6650 case *CallProc: 6651 return c.copyOnRewriteRefOfCallProc(n, parent) 6652 case *CommentOnly: 6653 return c.copyOnRewriteRefOfCommentOnly(n, parent) 6654 case *Commit: 6655 return c.copyOnRewriteRefOfCommit(n, parent) 6656 case *CreateDatabase: 6657 return c.copyOnRewriteRefOfCreateDatabase(n, parent) 6658 case *CreateTable: 6659 return c.copyOnRewriteRefOfCreateTable(n, parent) 6660 case *CreateView: 6661 return c.copyOnRewriteRefOfCreateView(n, parent) 6662 case *DeallocateStmt: 6663 return c.copyOnRewriteRefOfDeallocateStmt(n, parent) 6664 case *Delete: 6665 return c.copyOnRewriteRefOfDelete(n, parent) 6666 case *DropDatabase: 6667 return c.copyOnRewriteRefOfDropDatabase(n, parent) 6668 case *DropTable: 6669 return c.copyOnRewriteRefOfDropTable(n, parent) 6670 case *DropView: 6671 return c.copyOnRewriteRefOfDropView(n, parent) 6672 case *ExecuteStmt: 6673 return c.copyOnRewriteRefOfExecuteStmt(n, parent) 6674 case *ExplainStmt: 6675 return c.copyOnRewriteRefOfExplainStmt(n, parent) 6676 case *ExplainTab: 6677 return c.copyOnRewriteRefOfExplainTab(n, parent) 6678 case *Flush: 6679 return c.copyOnRewriteRefOfFlush(n, parent) 6680 case *Insert: 6681 return c.copyOnRewriteRefOfInsert(n, parent) 6682 case *Load: 6683 return c.copyOnRewriteRefOfLoad(n, parent) 6684 case *LockTables: 6685 return c.copyOnRewriteRefOfLockTables(n, parent) 6686 case *OtherAdmin: 6687 return c.copyOnRewriteRefOfOtherAdmin(n, parent) 6688 case *OtherRead: 6689 return c.copyOnRewriteRefOfOtherRead(n, parent) 6690 case *PrepareStmt: 6691 return c.copyOnRewriteRefOfPrepareStmt(n, parent) 6692 case *Release: 6693 return c.copyOnRewriteRefOfRelease(n, parent) 6694 case *RenameTable: 6695 return c.copyOnRewriteRefOfRenameTable(n, parent) 6696 case *RevertMigration: 6697 return c.copyOnRewriteRefOfRevertMigration(n, parent) 6698 case *Rollback: 6699 return c.copyOnRewriteRefOfRollback(n, parent) 6700 case *SRollback: 6701 return c.copyOnRewriteRefOfSRollback(n, parent) 6702 case *Savepoint: 6703 return c.copyOnRewriteRefOfSavepoint(n, parent) 6704 case *Select: 6705 return c.copyOnRewriteRefOfSelect(n, parent) 6706 case *Set: 6707 return c.copyOnRewriteRefOfSet(n, parent) 6708 case *Show: 6709 return c.copyOnRewriteRefOfShow(n, parent) 6710 case *ShowMigrationLogs: 6711 return c.copyOnRewriteRefOfShowMigrationLogs(n, parent) 6712 case *ShowThrottledApps: 6713 return c.copyOnRewriteRefOfShowThrottledApps(n, parent) 6714 case *ShowThrottlerStatus: 6715 return c.copyOnRewriteRefOfShowThrottlerStatus(n, parent) 6716 case *Stream: 6717 return c.copyOnRewriteRefOfStream(n, parent) 6718 case *TruncateTable: 6719 return c.copyOnRewriteRefOfTruncateTable(n, parent) 6720 case *Union: 6721 return c.copyOnRewriteRefOfUnion(n, parent) 6722 case *UnlockTables: 6723 return c.copyOnRewriteRefOfUnlockTables(n, parent) 6724 case *Update: 6725 return c.copyOnRewriteRefOfUpdate(n, parent) 6726 case *Use: 6727 return c.copyOnRewriteRefOfUse(n, parent) 6728 case *VExplainStmt: 6729 return c.copyOnRewriteRefOfVExplainStmt(n, parent) 6730 case *VStream: 6731 return c.copyOnRewriteRefOfVStream(n, parent) 6732 default: 6733 // this should never happen 6734 return nil, false 6735 } 6736 } 6737 func (c *cow) copyOnRewriteTableExpr(n TableExpr, parent SQLNode) (out SQLNode, changed bool) { 6738 if n == nil || c.cursor.stop { 6739 return n, false 6740 } 6741 switch n := n.(type) { 6742 case *AliasedTableExpr: 6743 return c.copyOnRewriteRefOfAliasedTableExpr(n, parent) 6744 case *JSONTableExpr: 6745 return c.copyOnRewriteRefOfJSONTableExpr(n, parent) 6746 case *JoinTableExpr: 6747 return c.copyOnRewriteRefOfJoinTableExpr(n, parent) 6748 case *ParenTableExpr: 6749 return c.copyOnRewriteRefOfParenTableExpr(n, parent) 6750 default: 6751 // this should never happen 6752 return nil, false 6753 } 6754 } 6755 func (c *cow) copyOnRewriteAlgorithmValue(n AlgorithmValue, parent SQLNode) (out SQLNode, changed bool) { 6756 if c.cursor.stop { 6757 return n, false 6758 } 6759 if c.pre != nil { 6760 c.pre(n, parent) 6761 } 6762 if c.post != nil { 6763 out, changed = c.postVisit(n, parent, changed) 6764 } else { 6765 out = n 6766 } 6767 return 6768 } 6769 func (c *cow) copyOnRewriteArgument(n Argument, parent SQLNode) (out SQLNode, changed bool) { 6770 if c.cursor.stop { 6771 return n, false 6772 } 6773 if c.pre != nil { 6774 c.pre(n, parent) 6775 } 6776 if c.post != nil { 6777 out, changed = c.postVisit(n, parent, changed) 6778 } else { 6779 out = n 6780 } 6781 return 6782 } 6783 func (c *cow) copyOnRewriteBoolVal(n BoolVal, parent SQLNode) (out SQLNode, changed bool) { 6784 if c.cursor.stop { 6785 return n, false 6786 } 6787 if c.pre != nil { 6788 c.pre(n, parent) 6789 } 6790 if c.post != nil { 6791 out, changed = c.postVisit(n, parent, changed) 6792 } else { 6793 out = n 6794 } 6795 return 6796 } 6797 func (c *cow) copyOnRewriteListArg(n ListArg, parent SQLNode) (out SQLNode, changed bool) { 6798 if c.cursor.stop { 6799 return n, false 6800 } 6801 if c.pre != nil { 6802 c.pre(n, parent) 6803 } 6804 if c.post != nil { 6805 out, changed = c.postVisit(n, parent, changed) 6806 } else { 6807 out = n 6808 } 6809 return 6810 } 6811 func (c *cow) copyOnRewriteMatchAction(n MatchAction, parent SQLNode) (out SQLNode, changed bool) { 6812 if c.cursor.stop { 6813 return n, false 6814 } 6815 if c.pre != nil { 6816 c.pre(n, parent) 6817 } 6818 if c.post != nil { 6819 out, changed = c.postVisit(n, parent, changed) 6820 } else { 6821 out = n 6822 } 6823 return 6824 } 6825 func (c *cow) copyOnRewriteReferenceAction(n ReferenceAction, parent SQLNode) (out SQLNode, changed bool) { 6826 if c.cursor.stop { 6827 return n, false 6828 } 6829 if c.pre != nil { 6830 c.pre(n, parent) 6831 } 6832 if c.post != nil { 6833 out, changed = c.postVisit(n, parent, changed) 6834 } else { 6835 out = n 6836 } 6837 return 6838 } 6839 func (c *cow) copyOnRewriteRefOfIdentifierCI(n *IdentifierCI, parent SQLNode) (out SQLNode, changed bool) { 6840 if n == nil || c.cursor.stop { 6841 return n, false 6842 } 6843 out = n 6844 if c.pre == nil || c.pre(n, parent) { 6845 } 6846 if c.post != nil { 6847 out, changed = c.postVisit(out, parent, changed) 6848 } 6849 return 6850 } 6851 func (c *cow) copyOnRewriteRefOfIdentifierCS(n *IdentifierCS, parent SQLNode) (out SQLNode, changed bool) { 6852 if n == nil || c.cursor.stop { 6853 return n, false 6854 } 6855 out = n 6856 if c.pre == nil || c.pre(n, parent) { 6857 } 6858 if c.post != nil { 6859 out, changed = c.postVisit(out, parent, changed) 6860 } 6861 return 6862 } 6863 func (c *cow) copyOnRewriteRefOfRootNode(n *RootNode, parent SQLNode) (out SQLNode, changed bool) { 6864 if n == nil || c.cursor.stop { 6865 return n, false 6866 } 6867 out = n 6868 if c.pre == nil || c.pre(n, parent) { 6869 _SQLNode, changedSQLNode := c.copyOnRewriteSQLNode(n.SQLNode, n) 6870 if changedSQLNode { 6871 res := *n 6872 res.SQLNode, _ = _SQLNode.(SQLNode) 6873 out = &res 6874 if c.cloned != nil { 6875 c.cloned(n, out) 6876 } 6877 changed = true 6878 } 6879 } 6880 if c.post != nil { 6881 out, changed = c.postVisit(out, parent, changed) 6882 } 6883 return 6884 } 6885 func (c *cow) copyOnRewriteRefOfTableName(n *TableName, parent SQLNode) (out SQLNode, changed bool) { 6886 if n == nil || c.cursor.stop { 6887 return n, false 6888 } 6889 out = n 6890 if c.pre == nil || c.pre(n, parent) { 6891 _Name, changedName := c.copyOnRewriteIdentifierCS(n.Name, n) 6892 _Qualifier, changedQualifier := c.copyOnRewriteIdentifierCS(n.Qualifier, n) 6893 if changedName || changedQualifier { 6894 res := *n 6895 res.Name, _ = _Name.(IdentifierCS) 6896 res.Qualifier, _ = _Qualifier.(IdentifierCS) 6897 out = &res 6898 if c.cloned != nil { 6899 c.cloned(n, out) 6900 } 6901 changed = true 6902 } 6903 } 6904 if c.post != nil { 6905 out, changed = c.postVisit(out, parent, changed) 6906 } 6907 return 6908 } 6909 func (c *cow) copyOnRewriteRefOfVindexParam(n *VindexParam, parent SQLNode) (out SQLNode, changed bool) { 6910 if n == nil || c.cursor.stop { 6911 return n, false 6912 } 6913 out = n 6914 if c.pre == nil || c.pre(n, parent) { 6915 _Key, changedKey := c.copyOnRewriteIdentifierCI(n.Key, n) 6916 if changedKey { 6917 res := *n 6918 res.Key, _ = _Key.(IdentifierCI) 6919 out = &res 6920 if c.cloned != nil { 6921 c.cloned(n, out) 6922 } 6923 changed = true 6924 } 6925 } 6926 if c.post != nil { 6927 out, changed = c.postVisit(out, parent, changed) 6928 } 6929 return 6930 }