vitess.io/vitess@v0.16.2/go/vt/sqlparser/ast_visit.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 VisitSQLNode(in SQLNode, f Visit) error {
    21  	if in == nil {
    22  		return nil
    23  	}
    24  	switch in := in.(type) {
    25  	case *AddColumns:
    26  		return VisitRefOfAddColumns(in, f)
    27  	case *AddConstraintDefinition:
    28  		return VisitRefOfAddConstraintDefinition(in, f)
    29  	case *AddIndexDefinition:
    30  		return VisitRefOfAddIndexDefinition(in, f)
    31  	case AlgorithmValue:
    32  		return VisitAlgorithmValue(in, f)
    33  	case *AliasedExpr:
    34  		return VisitRefOfAliasedExpr(in, f)
    35  	case *AliasedTableExpr:
    36  		return VisitRefOfAliasedTableExpr(in, f)
    37  	case *AlterCharset:
    38  		return VisitRefOfAlterCharset(in, f)
    39  	case *AlterCheck:
    40  		return VisitRefOfAlterCheck(in, f)
    41  	case *AlterColumn:
    42  		return VisitRefOfAlterColumn(in, f)
    43  	case *AlterDatabase:
    44  		return VisitRefOfAlterDatabase(in, f)
    45  	case *AlterIndex:
    46  		return VisitRefOfAlterIndex(in, f)
    47  	case *AlterMigration:
    48  		return VisitRefOfAlterMigration(in, f)
    49  	case *AlterTable:
    50  		return VisitRefOfAlterTable(in, f)
    51  	case *AlterView:
    52  		return VisitRefOfAlterView(in, f)
    53  	case *AlterVschema:
    54  		return VisitRefOfAlterVschema(in, f)
    55  	case *AndExpr:
    56  		return VisitRefOfAndExpr(in, f)
    57  	case Argument:
    58  		return VisitArgument(in, f)
    59  	case *ArgumentLessWindowExpr:
    60  		return VisitRefOfArgumentLessWindowExpr(in, f)
    61  	case *AutoIncSpec:
    62  		return VisitRefOfAutoIncSpec(in, f)
    63  	case *Avg:
    64  		return VisitRefOfAvg(in, f)
    65  	case *Begin:
    66  		return VisitRefOfBegin(in, f)
    67  	case *BetweenExpr:
    68  		return VisitRefOfBetweenExpr(in, f)
    69  	case *BinaryExpr:
    70  		return VisitRefOfBinaryExpr(in, f)
    71  	case *BitAnd:
    72  		return VisitRefOfBitAnd(in, f)
    73  	case *BitOr:
    74  		return VisitRefOfBitOr(in, f)
    75  	case *BitXor:
    76  		return VisitRefOfBitXor(in, f)
    77  	case BoolVal:
    78  		return VisitBoolVal(in, f)
    79  	case *CallProc:
    80  		return VisitRefOfCallProc(in, f)
    81  	case *CaseExpr:
    82  		return VisitRefOfCaseExpr(in, f)
    83  	case *CastExpr:
    84  		return VisitRefOfCastExpr(in, f)
    85  	case *ChangeColumn:
    86  		return VisitRefOfChangeColumn(in, f)
    87  	case *CharExpr:
    88  		return VisitRefOfCharExpr(in, f)
    89  	case *CheckConstraintDefinition:
    90  		return VisitRefOfCheckConstraintDefinition(in, f)
    91  	case *ColName:
    92  		return VisitRefOfColName(in, f)
    93  	case *CollateExpr:
    94  		return VisitRefOfCollateExpr(in, f)
    95  	case *ColumnDefinition:
    96  		return VisitRefOfColumnDefinition(in, f)
    97  	case *ColumnType:
    98  		return VisitRefOfColumnType(in, f)
    99  	case Columns:
   100  		return VisitColumns(in, f)
   101  	case *CommentOnly:
   102  		return VisitRefOfCommentOnly(in, f)
   103  	case *Commit:
   104  		return VisitRefOfCommit(in, f)
   105  	case *CommonTableExpr:
   106  		return VisitRefOfCommonTableExpr(in, f)
   107  	case *ComparisonExpr:
   108  		return VisitRefOfComparisonExpr(in, f)
   109  	case *ConstraintDefinition:
   110  		return VisitRefOfConstraintDefinition(in, f)
   111  	case *ConvertExpr:
   112  		return VisitRefOfConvertExpr(in, f)
   113  	case *ConvertType:
   114  		return VisitRefOfConvertType(in, f)
   115  	case *ConvertUsingExpr:
   116  		return VisitRefOfConvertUsingExpr(in, f)
   117  	case *Count:
   118  		return VisitRefOfCount(in, f)
   119  	case *CountStar:
   120  		return VisitRefOfCountStar(in, f)
   121  	case *CreateDatabase:
   122  		return VisitRefOfCreateDatabase(in, f)
   123  	case *CreateTable:
   124  		return VisitRefOfCreateTable(in, f)
   125  	case *CreateView:
   126  		return VisitRefOfCreateView(in, f)
   127  	case *CurTimeFuncExpr:
   128  		return VisitRefOfCurTimeFuncExpr(in, f)
   129  	case *DeallocateStmt:
   130  		return VisitRefOfDeallocateStmt(in, f)
   131  	case *Default:
   132  		return VisitRefOfDefault(in, f)
   133  	case *Definer:
   134  		return VisitRefOfDefiner(in, f)
   135  	case *Delete:
   136  		return VisitRefOfDelete(in, f)
   137  	case *DerivedTable:
   138  		return VisitRefOfDerivedTable(in, f)
   139  	case *DropColumn:
   140  		return VisitRefOfDropColumn(in, f)
   141  	case *DropDatabase:
   142  		return VisitRefOfDropDatabase(in, f)
   143  	case *DropKey:
   144  		return VisitRefOfDropKey(in, f)
   145  	case *DropTable:
   146  		return VisitRefOfDropTable(in, f)
   147  	case *DropView:
   148  		return VisitRefOfDropView(in, f)
   149  	case *ExecuteStmt:
   150  		return VisitRefOfExecuteStmt(in, f)
   151  	case *ExistsExpr:
   152  		return VisitRefOfExistsExpr(in, f)
   153  	case *ExplainStmt:
   154  		return VisitRefOfExplainStmt(in, f)
   155  	case *ExplainTab:
   156  		return VisitRefOfExplainTab(in, f)
   157  	case Exprs:
   158  		return VisitExprs(in, f)
   159  	case *ExtractFuncExpr:
   160  		return VisitRefOfExtractFuncExpr(in, f)
   161  	case *ExtractValueExpr:
   162  		return VisitRefOfExtractValueExpr(in, f)
   163  	case *ExtractedSubquery:
   164  		return VisitRefOfExtractedSubquery(in, f)
   165  	case *FirstOrLastValueExpr:
   166  		return VisitRefOfFirstOrLastValueExpr(in, f)
   167  	case *Flush:
   168  		return VisitRefOfFlush(in, f)
   169  	case *Force:
   170  		return VisitRefOfForce(in, f)
   171  	case *ForeignKeyDefinition:
   172  		return VisitRefOfForeignKeyDefinition(in, f)
   173  	case *FrameClause:
   174  		return VisitRefOfFrameClause(in, f)
   175  	case *FramePoint:
   176  		return VisitRefOfFramePoint(in, f)
   177  	case *FromFirstLastClause:
   178  		return VisitRefOfFromFirstLastClause(in, f)
   179  	case *FuncExpr:
   180  		return VisitRefOfFuncExpr(in, f)
   181  	case *GTIDFuncExpr:
   182  		return VisitRefOfGTIDFuncExpr(in, f)
   183  	case GroupBy:
   184  		return VisitGroupBy(in, f)
   185  	case *GroupConcatExpr:
   186  		return VisitRefOfGroupConcatExpr(in, f)
   187  	case IdentifierCI:
   188  		return VisitIdentifierCI(in, f)
   189  	case IdentifierCS:
   190  		return VisitIdentifierCS(in, f)
   191  	case *IndexDefinition:
   192  		return VisitRefOfIndexDefinition(in, f)
   193  	case *IndexHint:
   194  		return VisitRefOfIndexHint(in, f)
   195  	case IndexHints:
   196  		return VisitIndexHints(in, f)
   197  	case *IndexInfo:
   198  		return VisitRefOfIndexInfo(in, f)
   199  	case *Insert:
   200  		return VisitRefOfInsert(in, f)
   201  	case *InsertExpr:
   202  		return VisitRefOfInsertExpr(in, f)
   203  	case *IntervalExpr:
   204  		return VisitRefOfIntervalExpr(in, f)
   205  	case *IntervalFuncExpr:
   206  		return VisitRefOfIntervalFuncExpr(in, f)
   207  	case *IntroducerExpr:
   208  		return VisitRefOfIntroducerExpr(in, f)
   209  	case *IsExpr:
   210  		return VisitRefOfIsExpr(in, f)
   211  	case *JSONArrayExpr:
   212  		return VisitRefOfJSONArrayExpr(in, f)
   213  	case *JSONAttributesExpr:
   214  		return VisitRefOfJSONAttributesExpr(in, f)
   215  	case *JSONContainsExpr:
   216  		return VisitRefOfJSONContainsExpr(in, f)
   217  	case *JSONContainsPathExpr:
   218  		return VisitRefOfJSONContainsPathExpr(in, f)
   219  	case *JSONExtractExpr:
   220  		return VisitRefOfJSONExtractExpr(in, f)
   221  	case *JSONKeysExpr:
   222  		return VisitRefOfJSONKeysExpr(in, f)
   223  	case *JSONObjectExpr:
   224  		return VisitRefOfJSONObjectExpr(in, f)
   225  	case *JSONObjectParam:
   226  		return VisitRefOfJSONObjectParam(in, f)
   227  	case *JSONOverlapsExpr:
   228  		return VisitRefOfJSONOverlapsExpr(in, f)
   229  	case *JSONPrettyExpr:
   230  		return VisitRefOfJSONPrettyExpr(in, f)
   231  	case *JSONQuoteExpr:
   232  		return VisitRefOfJSONQuoteExpr(in, f)
   233  	case *JSONRemoveExpr:
   234  		return VisitRefOfJSONRemoveExpr(in, f)
   235  	case *JSONSchemaValidFuncExpr:
   236  		return VisitRefOfJSONSchemaValidFuncExpr(in, f)
   237  	case *JSONSchemaValidationReportFuncExpr:
   238  		return VisitRefOfJSONSchemaValidationReportFuncExpr(in, f)
   239  	case *JSONSearchExpr:
   240  		return VisitRefOfJSONSearchExpr(in, f)
   241  	case *JSONStorageFreeExpr:
   242  		return VisitRefOfJSONStorageFreeExpr(in, f)
   243  	case *JSONStorageSizeExpr:
   244  		return VisitRefOfJSONStorageSizeExpr(in, f)
   245  	case *JSONTableExpr:
   246  		return VisitRefOfJSONTableExpr(in, f)
   247  	case *JSONUnquoteExpr:
   248  		return VisitRefOfJSONUnquoteExpr(in, f)
   249  	case *JSONValueExpr:
   250  		return VisitRefOfJSONValueExpr(in, f)
   251  	case *JSONValueMergeExpr:
   252  		return VisitRefOfJSONValueMergeExpr(in, f)
   253  	case *JSONValueModifierExpr:
   254  		return VisitRefOfJSONValueModifierExpr(in, f)
   255  	case *JoinCondition:
   256  		return VisitRefOfJoinCondition(in, f)
   257  	case *JoinTableExpr:
   258  		return VisitRefOfJoinTableExpr(in, f)
   259  	case *JtColumnDefinition:
   260  		return VisitRefOfJtColumnDefinition(in, f)
   261  	case *JtOnResponse:
   262  		return VisitRefOfJtOnResponse(in, f)
   263  	case *KeyState:
   264  		return VisitRefOfKeyState(in, f)
   265  	case *LagLeadExpr:
   266  		return VisitRefOfLagLeadExpr(in, f)
   267  	case *Limit:
   268  		return VisitRefOfLimit(in, f)
   269  	case ListArg:
   270  		return VisitListArg(in, f)
   271  	case *Literal:
   272  		return VisitRefOfLiteral(in, f)
   273  	case *Load:
   274  		return VisitRefOfLoad(in, f)
   275  	case *LocateExpr:
   276  		return VisitRefOfLocateExpr(in, f)
   277  	case *LockOption:
   278  		return VisitRefOfLockOption(in, f)
   279  	case *LockTables:
   280  		return VisitRefOfLockTables(in, f)
   281  	case *LockingFunc:
   282  		return VisitRefOfLockingFunc(in, f)
   283  	case MatchAction:
   284  		return VisitMatchAction(in, f)
   285  	case *MatchExpr:
   286  		return VisitRefOfMatchExpr(in, f)
   287  	case *Max:
   288  		return VisitRefOfMax(in, f)
   289  	case *MemberOfExpr:
   290  		return VisitRefOfMemberOfExpr(in, f)
   291  	case *Min:
   292  		return VisitRefOfMin(in, f)
   293  	case *ModifyColumn:
   294  		return VisitRefOfModifyColumn(in, f)
   295  	case *NTHValueExpr:
   296  		return VisitRefOfNTHValueExpr(in, f)
   297  	case *NamedWindow:
   298  		return VisitRefOfNamedWindow(in, f)
   299  	case NamedWindows:
   300  		return VisitNamedWindows(in, f)
   301  	case *Nextval:
   302  		return VisitRefOfNextval(in, f)
   303  	case *NotExpr:
   304  		return VisitRefOfNotExpr(in, f)
   305  	case *NtileExpr:
   306  		return VisitRefOfNtileExpr(in, f)
   307  	case *NullTreatmentClause:
   308  		return VisitRefOfNullTreatmentClause(in, f)
   309  	case *NullVal:
   310  		return VisitRefOfNullVal(in, f)
   311  	case *Offset:
   312  		return VisitRefOfOffset(in, f)
   313  	case OnDup:
   314  		return VisitOnDup(in, f)
   315  	case *OptLike:
   316  		return VisitRefOfOptLike(in, f)
   317  	case *OrExpr:
   318  		return VisitRefOfOrExpr(in, f)
   319  	case *Order:
   320  		return VisitRefOfOrder(in, f)
   321  	case OrderBy:
   322  		return VisitOrderBy(in, f)
   323  	case *OrderByOption:
   324  		return VisitRefOfOrderByOption(in, f)
   325  	case *OtherAdmin:
   326  		return VisitRefOfOtherAdmin(in, f)
   327  	case *OtherRead:
   328  		return VisitRefOfOtherRead(in, f)
   329  	case *OverClause:
   330  		return VisitRefOfOverClause(in, f)
   331  	case *ParenTableExpr:
   332  		return VisitRefOfParenTableExpr(in, f)
   333  	case *ParsedComments:
   334  		return VisitRefOfParsedComments(in, f)
   335  	case *PartitionDefinition:
   336  		return VisitRefOfPartitionDefinition(in, f)
   337  	case *PartitionDefinitionOptions:
   338  		return VisitRefOfPartitionDefinitionOptions(in, f)
   339  	case *PartitionEngine:
   340  		return VisitRefOfPartitionEngine(in, f)
   341  	case *PartitionOption:
   342  		return VisitRefOfPartitionOption(in, f)
   343  	case *PartitionSpec:
   344  		return VisitRefOfPartitionSpec(in, f)
   345  	case *PartitionValueRange:
   346  		return VisitRefOfPartitionValueRange(in, f)
   347  	case Partitions:
   348  		return VisitPartitions(in, f)
   349  	case *PerformanceSchemaFuncExpr:
   350  		return VisitRefOfPerformanceSchemaFuncExpr(in, f)
   351  	case *PrepareStmt:
   352  		return VisitRefOfPrepareStmt(in, f)
   353  	case ReferenceAction:
   354  		return VisitReferenceAction(in, f)
   355  	case *ReferenceDefinition:
   356  		return VisitRefOfReferenceDefinition(in, f)
   357  	case *RegexpInstrExpr:
   358  		return VisitRefOfRegexpInstrExpr(in, f)
   359  	case *RegexpLikeExpr:
   360  		return VisitRefOfRegexpLikeExpr(in, f)
   361  	case *RegexpReplaceExpr:
   362  		return VisitRefOfRegexpReplaceExpr(in, f)
   363  	case *RegexpSubstrExpr:
   364  		return VisitRefOfRegexpSubstrExpr(in, f)
   365  	case *Release:
   366  		return VisitRefOfRelease(in, f)
   367  	case *RenameColumn:
   368  		return VisitRefOfRenameColumn(in, f)
   369  	case *RenameIndex:
   370  		return VisitRefOfRenameIndex(in, f)
   371  	case *RenameTable:
   372  		return VisitRefOfRenameTable(in, f)
   373  	case *RenameTableName:
   374  		return VisitRefOfRenameTableName(in, f)
   375  	case *RevertMigration:
   376  		return VisitRefOfRevertMigration(in, f)
   377  	case *Rollback:
   378  		return VisitRefOfRollback(in, f)
   379  	case RootNode:
   380  		return VisitRootNode(in, f)
   381  	case *SRollback:
   382  		return VisitRefOfSRollback(in, f)
   383  	case *Savepoint:
   384  		return VisitRefOfSavepoint(in, f)
   385  	case *Select:
   386  		return VisitRefOfSelect(in, f)
   387  	case SelectExprs:
   388  		return VisitSelectExprs(in, f)
   389  	case *SelectInto:
   390  		return VisitRefOfSelectInto(in, f)
   391  	case *Set:
   392  		return VisitRefOfSet(in, f)
   393  	case *SetExpr:
   394  		return VisitRefOfSetExpr(in, f)
   395  	case SetExprs:
   396  		return VisitSetExprs(in, f)
   397  	case *Show:
   398  		return VisitRefOfShow(in, f)
   399  	case *ShowBasic:
   400  		return VisitRefOfShowBasic(in, f)
   401  	case *ShowCreate:
   402  		return VisitRefOfShowCreate(in, f)
   403  	case *ShowFilter:
   404  		return VisitRefOfShowFilter(in, f)
   405  	case *ShowMigrationLogs:
   406  		return VisitRefOfShowMigrationLogs(in, f)
   407  	case *ShowOther:
   408  		return VisitRefOfShowOther(in, f)
   409  	case *ShowThrottledApps:
   410  		return VisitRefOfShowThrottledApps(in, f)
   411  	case *ShowThrottlerStatus:
   412  		return VisitRefOfShowThrottlerStatus(in, f)
   413  	case *StarExpr:
   414  		return VisitRefOfStarExpr(in, f)
   415  	case *Std:
   416  		return VisitRefOfStd(in, f)
   417  	case *StdDev:
   418  		return VisitRefOfStdDev(in, f)
   419  	case *StdPop:
   420  		return VisitRefOfStdPop(in, f)
   421  	case *StdSamp:
   422  		return VisitRefOfStdSamp(in, f)
   423  	case *Stream:
   424  		return VisitRefOfStream(in, f)
   425  	case *SubPartition:
   426  		return VisitRefOfSubPartition(in, f)
   427  	case *SubPartitionDefinition:
   428  		return VisitRefOfSubPartitionDefinition(in, f)
   429  	case *SubPartitionDefinitionOptions:
   430  		return VisitRefOfSubPartitionDefinitionOptions(in, f)
   431  	case SubPartitionDefinitions:
   432  		return VisitSubPartitionDefinitions(in, f)
   433  	case *Subquery:
   434  		return VisitRefOfSubquery(in, f)
   435  	case *SubstrExpr:
   436  		return VisitRefOfSubstrExpr(in, f)
   437  	case *Sum:
   438  		return VisitRefOfSum(in, f)
   439  	case TableExprs:
   440  		return VisitTableExprs(in, f)
   441  	case TableName:
   442  		return VisitTableName(in, f)
   443  	case TableNames:
   444  		return VisitTableNames(in, f)
   445  	case TableOptions:
   446  		return VisitTableOptions(in, f)
   447  	case *TableSpec:
   448  		return VisitRefOfTableSpec(in, f)
   449  	case *TablespaceOperation:
   450  		return VisitRefOfTablespaceOperation(in, f)
   451  	case *TimestampFuncExpr:
   452  		return VisitRefOfTimestampFuncExpr(in, f)
   453  	case *TrimFuncExpr:
   454  		return VisitRefOfTrimFuncExpr(in, f)
   455  	case *TruncateTable:
   456  		return VisitRefOfTruncateTable(in, f)
   457  	case *UnaryExpr:
   458  		return VisitRefOfUnaryExpr(in, f)
   459  	case *Union:
   460  		return VisitRefOfUnion(in, f)
   461  	case *UnlockTables:
   462  		return VisitRefOfUnlockTables(in, f)
   463  	case *Update:
   464  		return VisitRefOfUpdate(in, f)
   465  	case *UpdateExpr:
   466  		return VisitRefOfUpdateExpr(in, f)
   467  	case UpdateExprs:
   468  		return VisitUpdateExprs(in, f)
   469  	case *UpdateXMLExpr:
   470  		return VisitRefOfUpdateXMLExpr(in, f)
   471  	case *Use:
   472  		return VisitRefOfUse(in, f)
   473  	case *VExplainStmt:
   474  		return VisitRefOfVExplainStmt(in, f)
   475  	case *VStream:
   476  		return VisitRefOfVStream(in, f)
   477  	case ValTuple:
   478  		return VisitValTuple(in, f)
   479  	case *Validation:
   480  		return VisitRefOfValidation(in, f)
   481  	case Values:
   482  		return VisitValues(in, f)
   483  	case *ValuesFuncExpr:
   484  		return VisitRefOfValuesFuncExpr(in, f)
   485  	case *VarPop:
   486  		return VisitRefOfVarPop(in, f)
   487  	case *VarSamp:
   488  		return VisitRefOfVarSamp(in, f)
   489  	case *Variable:
   490  		return VisitRefOfVariable(in, f)
   491  	case *Variance:
   492  		return VisitRefOfVariance(in, f)
   493  	case VindexParam:
   494  		return VisitVindexParam(in, f)
   495  	case *VindexSpec:
   496  		return VisitRefOfVindexSpec(in, f)
   497  	case *WeightStringFuncExpr:
   498  		return VisitRefOfWeightStringFuncExpr(in, f)
   499  	case *When:
   500  		return VisitRefOfWhen(in, f)
   501  	case *Where:
   502  		return VisitRefOfWhere(in, f)
   503  	case *WindowDefinition:
   504  		return VisitRefOfWindowDefinition(in, f)
   505  	case WindowDefinitions:
   506  		return VisitWindowDefinitions(in, f)
   507  	case *WindowSpecification:
   508  		return VisitRefOfWindowSpecification(in, f)
   509  	case *With:
   510  		return VisitRefOfWith(in, f)
   511  	case *XorExpr:
   512  		return VisitRefOfXorExpr(in, f)
   513  	default:
   514  		// this should never happen
   515  		return nil
   516  	}
   517  }
   518  func VisitRefOfAddColumns(in *AddColumns, f Visit) error {
   519  	if in == nil {
   520  		return nil
   521  	}
   522  	if cont, err := f(in); err != nil || !cont {
   523  		return err
   524  	}
   525  	for _, el := range in.Columns {
   526  		if err := VisitRefOfColumnDefinition(el, f); err != nil {
   527  			return err
   528  		}
   529  	}
   530  	if err := VisitRefOfColName(in.After, f); err != nil {
   531  		return err
   532  	}
   533  	return nil
   534  }
   535  func VisitRefOfAddConstraintDefinition(in *AddConstraintDefinition, f Visit) error {
   536  	if in == nil {
   537  		return nil
   538  	}
   539  	if cont, err := f(in); err != nil || !cont {
   540  		return err
   541  	}
   542  	if err := VisitRefOfConstraintDefinition(in.ConstraintDefinition, f); err != nil {
   543  		return err
   544  	}
   545  	return nil
   546  }
   547  func VisitRefOfAddIndexDefinition(in *AddIndexDefinition, f Visit) error {
   548  	if in == nil {
   549  		return nil
   550  	}
   551  	if cont, err := f(in); err != nil || !cont {
   552  		return err
   553  	}
   554  	if err := VisitRefOfIndexDefinition(in.IndexDefinition, f); err != nil {
   555  		return err
   556  	}
   557  	return nil
   558  }
   559  func VisitRefOfAliasedExpr(in *AliasedExpr, f Visit) error {
   560  	if in == nil {
   561  		return nil
   562  	}
   563  	if cont, err := f(in); err != nil || !cont {
   564  		return err
   565  	}
   566  	if err := VisitExpr(in.Expr, f); err != nil {
   567  		return err
   568  	}
   569  	if err := VisitIdentifierCI(in.As, f); err != nil {
   570  		return err
   571  	}
   572  	return nil
   573  }
   574  func VisitRefOfAliasedTableExpr(in *AliasedTableExpr, f Visit) error {
   575  	if in == nil {
   576  		return nil
   577  	}
   578  	if cont, err := f(in); err != nil || !cont {
   579  		return err
   580  	}
   581  	if err := VisitSimpleTableExpr(in.Expr, f); err != nil {
   582  		return err
   583  	}
   584  	if err := VisitPartitions(in.Partitions, f); err != nil {
   585  		return err
   586  	}
   587  	if err := VisitIdentifierCS(in.As, f); err != nil {
   588  		return err
   589  	}
   590  	if err := VisitIndexHints(in.Hints, f); err != nil {
   591  		return err
   592  	}
   593  	if err := VisitColumns(in.Columns, f); err != nil {
   594  		return err
   595  	}
   596  	return nil
   597  }
   598  func VisitRefOfAlterCharset(in *AlterCharset, f Visit) error {
   599  	if in == nil {
   600  		return nil
   601  	}
   602  	if cont, err := f(in); err != nil || !cont {
   603  		return err
   604  	}
   605  	return nil
   606  }
   607  func VisitRefOfAlterCheck(in *AlterCheck, f Visit) error {
   608  	if in == nil {
   609  		return nil
   610  	}
   611  	if cont, err := f(in); err != nil || !cont {
   612  		return err
   613  	}
   614  	if err := VisitIdentifierCI(in.Name, f); err != nil {
   615  		return err
   616  	}
   617  	return nil
   618  }
   619  func VisitRefOfAlterColumn(in *AlterColumn, f Visit) error {
   620  	if in == nil {
   621  		return nil
   622  	}
   623  	if cont, err := f(in); err != nil || !cont {
   624  		return err
   625  	}
   626  	if err := VisitRefOfColName(in.Column, f); err != nil {
   627  		return err
   628  	}
   629  	if err := VisitExpr(in.DefaultVal, f); err != nil {
   630  		return err
   631  	}
   632  	return nil
   633  }
   634  func VisitRefOfAlterDatabase(in *AlterDatabase, f Visit) error {
   635  	if in == nil {
   636  		return nil
   637  	}
   638  	if cont, err := f(in); err != nil || !cont {
   639  		return err
   640  	}
   641  	if err := VisitIdentifierCS(in.DBName, f); err != nil {
   642  		return err
   643  	}
   644  	return nil
   645  }
   646  func VisitRefOfAlterIndex(in *AlterIndex, f Visit) error {
   647  	if in == nil {
   648  		return nil
   649  	}
   650  	if cont, err := f(in); err != nil || !cont {
   651  		return err
   652  	}
   653  	if err := VisitIdentifierCI(in.Name, f); err != nil {
   654  		return err
   655  	}
   656  	return nil
   657  }
   658  func VisitRefOfAlterMigration(in *AlterMigration, f Visit) error {
   659  	if in == nil {
   660  		return nil
   661  	}
   662  	if cont, err := f(in); err != nil || !cont {
   663  		return err
   664  	}
   665  	if err := VisitRefOfLiteral(in.Ratio, f); err != nil {
   666  		return err
   667  	}
   668  	return nil
   669  }
   670  func VisitRefOfAlterTable(in *AlterTable, f Visit) error {
   671  	if in == nil {
   672  		return nil
   673  	}
   674  	if cont, err := f(in); err != nil || !cont {
   675  		return err
   676  	}
   677  	if err := VisitTableName(in.Table, f); err != nil {
   678  		return err
   679  	}
   680  	for _, el := range in.AlterOptions {
   681  		if err := VisitAlterOption(el, f); err != nil {
   682  			return err
   683  		}
   684  	}
   685  	if err := VisitRefOfPartitionSpec(in.PartitionSpec, f); err != nil {
   686  		return err
   687  	}
   688  	if err := VisitRefOfPartitionOption(in.PartitionOption, f); err != nil {
   689  		return err
   690  	}
   691  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
   692  		return err
   693  	}
   694  	return nil
   695  }
   696  func VisitRefOfAlterView(in *AlterView, f Visit) error {
   697  	if in == nil {
   698  		return nil
   699  	}
   700  	if cont, err := f(in); err != nil || !cont {
   701  		return err
   702  	}
   703  	if err := VisitTableName(in.ViewName, f); err != nil {
   704  		return err
   705  	}
   706  	if err := VisitRefOfDefiner(in.Definer, f); err != nil {
   707  		return err
   708  	}
   709  	if err := VisitColumns(in.Columns, f); err != nil {
   710  		return err
   711  	}
   712  	if err := VisitSelectStatement(in.Select, f); err != nil {
   713  		return err
   714  	}
   715  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
   716  		return err
   717  	}
   718  	return nil
   719  }
   720  func VisitRefOfAlterVschema(in *AlterVschema, f Visit) error {
   721  	if in == nil {
   722  		return nil
   723  	}
   724  	if cont, err := f(in); err != nil || !cont {
   725  		return err
   726  	}
   727  	if err := VisitTableName(in.Table, f); err != nil {
   728  		return err
   729  	}
   730  	if err := VisitRefOfVindexSpec(in.VindexSpec, f); err != nil {
   731  		return err
   732  	}
   733  	for _, el := range in.VindexCols {
   734  		if err := VisitIdentifierCI(el, f); err != nil {
   735  			return err
   736  		}
   737  	}
   738  	if err := VisitRefOfAutoIncSpec(in.AutoIncSpec, f); err != nil {
   739  		return err
   740  	}
   741  	return nil
   742  }
   743  func VisitRefOfAndExpr(in *AndExpr, f Visit) error {
   744  	if in == nil {
   745  		return nil
   746  	}
   747  	if cont, err := f(in); err != nil || !cont {
   748  		return err
   749  	}
   750  	if err := VisitExpr(in.Left, f); err != nil {
   751  		return err
   752  	}
   753  	if err := VisitExpr(in.Right, f); err != nil {
   754  		return err
   755  	}
   756  	return nil
   757  }
   758  func VisitRefOfArgumentLessWindowExpr(in *ArgumentLessWindowExpr, f Visit) error {
   759  	if in == nil {
   760  		return nil
   761  	}
   762  	if cont, err := f(in); err != nil || !cont {
   763  		return err
   764  	}
   765  	if err := VisitRefOfOverClause(in.OverClause, f); err != nil {
   766  		return err
   767  	}
   768  	return nil
   769  }
   770  func VisitRefOfAutoIncSpec(in *AutoIncSpec, f Visit) error {
   771  	if in == nil {
   772  		return nil
   773  	}
   774  	if cont, err := f(in); err != nil || !cont {
   775  		return err
   776  	}
   777  	if err := VisitIdentifierCI(in.Column, f); err != nil {
   778  		return err
   779  	}
   780  	if err := VisitTableName(in.Sequence, f); err != nil {
   781  		return err
   782  	}
   783  	return nil
   784  }
   785  func VisitRefOfAvg(in *Avg, f Visit) error {
   786  	if in == nil {
   787  		return nil
   788  	}
   789  	if cont, err := f(in); err != nil || !cont {
   790  		return err
   791  	}
   792  	if err := VisitExpr(in.Arg, f); err != nil {
   793  		return err
   794  	}
   795  	return nil
   796  }
   797  func VisitRefOfBegin(in *Begin, f Visit) error {
   798  	if in == nil {
   799  		return nil
   800  	}
   801  	if cont, err := f(in); err != nil || !cont {
   802  		return err
   803  	}
   804  	return nil
   805  }
   806  func VisitRefOfBetweenExpr(in *BetweenExpr, f Visit) error {
   807  	if in == nil {
   808  		return nil
   809  	}
   810  	if cont, err := f(in); err != nil || !cont {
   811  		return err
   812  	}
   813  	if err := VisitExpr(in.Left, f); err != nil {
   814  		return err
   815  	}
   816  	if err := VisitExpr(in.From, f); err != nil {
   817  		return err
   818  	}
   819  	if err := VisitExpr(in.To, f); err != nil {
   820  		return err
   821  	}
   822  	return nil
   823  }
   824  func VisitRefOfBinaryExpr(in *BinaryExpr, f Visit) error {
   825  	if in == nil {
   826  		return nil
   827  	}
   828  	if cont, err := f(in); err != nil || !cont {
   829  		return err
   830  	}
   831  	if err := VisitExpr(in.Left, f); err != nil {
   832  		return err
   833  	}
   834  	if err := VisitExpr(in.Right, f); err != nil {
   835  		return err
   836  	}
   837  	return nil
   838  }
   839  func VisitRefOfBitAnd(in *BitAnd, f Visit) error {
   840  	if in == nil {
   841  		return nil
   842  	}
   843  	if cont, err := f(in); err != nil || !cont {
   844  		return err
   845  	}
   846  	if err := VisitExpr(in.Arg, f); err != nil {
   847  		return err
   848  	}
   849  	return nil
   850  }
   851  func VisitRefOfBitOr(in *BitOr, f Visit) error {
   852  	if in == nil {
   853  		return nil
   854  	}
   855  	if cont, err := f(in); err != nil || !cont {
   856  		return err
   857  	}
   858  	if err := VisitExpr(in.Arg, f); err != nil {
   859  		return err
   860  	}
   861  	return nil
   862  }
   863  func VisitRefOfBitXor(in *BitXor, f Visit) error {
   864  	if in == nil {
   865  		return nil
   866  	}
   867  	if cont, err := f(in); err != nil || !cont {
   868  		return err
   869  	}
   870  	if err := VisitExpr(in.Arg, f); err != nil {
   871  		return err
   872  	}
   873  	return nil
   874  }
   875  func VisitRefOfCallProc(in *CallProc, f Visit) error {
   876  	if in == nil {
   877  		return nil
   878  	}
   879  	if cont, err := f(in); err != nil || !cont {
   880  		return err
   881  	}
   882  	if err := VisitTableName(in.Name, f); err != nil {
   883  		return err
   884  	}
   885  	if err := VisitExprs(in.Params, f); err != nil {
   886  		return err
   887  	}
   888  	return nil
   889  }
   890  func VisitRefOfCaseExpr(in *CaseExpr, f Visit) error {
   891  	if in == nil {
   892  		return nil
   893  	}
   894  	if cont, err := f(in); err != nil || !cont {
   895  		return err
   896  	}
   897  	if err := VisitExpr(in.Expr, f); err != nil {
   898  		return err
   899  	}
   900  	for _, el := range in.Whens {
   901  		if err := VisitRefOfWhen(el, f); err != nil {
   902  			return err
   903  		}
   904  	}
   905  	if err := VisitExpr(in.Else, f); err != nil {
   906  		return err
   907  	}
   908  	return nil
   909  }
   910  func VisitRefOfCastExpr(in *CastExpr, f Visit) error {
   911  	if in == nil {
   912  		return nil
   913  	}
   914  	if cont, err := f(in); err != nil || !cont {
   915  		return err
   916  	}
   917  	if err := VisitExpr(in.Expr, f); err != nil {
   918  		return err
   919  	}
   920  	if err := VisitRefOfConvertType(in.Type, f); err != nil {
   921  		return err
   922  	}
   923  	return nil
   924  }
   925  func VisitRefOfChangeColumn(in *ChangeColumn, f Visit) error {
   926  	if in == nil {
   927  		return nil
   928  	}
   929  	if cont, err := f(in); err != nil || !cont {
   930  		return err
   931  	}
   932  	if err := VisitRefOfColName(in.OldColumn, f); err != nil {
   933  		return err
   934  	}
   935  	if err := VisitRefOfColumnDefinition(in.NewColDefinition, f); err != nil {
   936  		return err
   937  	}
   938  	if err := VisitRefOfColName(in.After, f); err != nil {
   939  		return err
   940  	}
   941  	return nil
   942  }
   943  func VisitRefOfCharExpr(in *CharExpr, f Visit) error {
   944  	if in == nil {
   945  		return nil
   946  	}
   947  	if cont, err := f(in); err != nil || !cont {
   948  		return err
   949  	}
   950  	if err := VisitExprs(in.Exprs, f); err != nil {
   951  		return err
   952  	}
   953  	return nil
   954  }
   955  func VisitRefOfCheckConstraintDefinition(in *CheckConstraintDefinition, f Visit) error {
   956  	if in == nil {
   957  		return nil
   958  	}
   959  	if cont, err := f(in); err != nil || !cont {
   960  		return err
   961  	}
   962  	if err := VisitExpr(in.Expr, f); err != nil {
   963  		return err
   964  	}
   965  	return nil
   966  }
   967  func VisitRefOfColName(in *ColName, f Visit) error {
   968  	if in == nil {
   969  		return nil
   970  	}
   971  	if cont, err := f(in); err != nil || !cont {
   972  		return err
   973  	}
   974  	if err := VisitIdentifierCI(in.Name, f); err != nil {
   975  		return err
   976  	}
   977  	if err := VisitTableName(in.Qualifier, f); err != nil {
   978  		return err
   979  	}
   980  	return nil
   981  }
   982  func VisitRefOfCollateExpr(in *CollateExpr, f Visit) error {
   983  	if in == nil {
   984  		return nil
   985  	}
   986  	if cont, err := f(in); err != nil || !cont {
   987  		return err
   988  	}
   989  	if err := VisitExpr(in.Expr, f); err != nil {
   990  		return err
   991  	}
   992  	return nil
   993  }
   994  func VisitRefOfColumnDefinition(in *ColumnDefinition, f Visit) error {
   995  	if in == nil {
   996  		return nil
   997  	}
   998  	if cont, err := f(in); err != nil || !cont {
   999  		return err
  1000  	}
  1001  	if err := VisitIdentifierCI(in.Name, f); err != nil {
  1002  		return err
  1003  	}
  1004  	if err := VisitRefOfColumnType(in.Type, f); err != nil {
  1005  		return err
  1006  	}
  1007  	return nil
  1008  }
  1009  func VisitRefOfColumnType(in *ColumnType, f Visit) error {
  1010  	if in == nil {
  1011  		return nil
  1012  	}
  1013  	if cont, err := f(in); err != nil || !cont {
  1014  		return err
  1015  	}
  1016  	if err := VisitRefOfLiteral(in.Length, f); err != nil {
  1017  		return err
  1018  	}
  1019  	if err := VisitRefOfLiteral(in.Scale, f); err != nil {
  1020  		return err
  1021  	}
  1022  	return nil
  1023  }
  1024  func VisitColumns(in Columns, f Visit) error {
  1025  	if in == nil {
  1026  		return nil
  1027  	}
  1028  	if cont, err := f(in); err != nil || !cont {
  1029  		return err
  1030  	}
  1031  	for _, el := range in {
  1032  		if err := VisitIdentifierCI(el, f); err != nil {
  1033  			return err
  1034  		}
  1035  	}
  1036  	return nil
  1037  }
  1038  func VisitRefOfCommentOnly(in *CommentOnly, f Visit) error {
  1039  	if in == nil {
  1040  		return nil
  1041  	}
  1042  	if cont, err := f(in); err != nil || !cont {
  1043  		return err
  1044  	}
  1045  	return nil
  1046  }
  1047  func VisitRefOfCommit(in *Commit, f Visit) error {
  1048  	if in == nil {
  1049  		return nil
  1050  	}
  1051  	if cont, err := f(in); err != nil || !cont {
  1052  		return err
  1053  	}
  1054  	return nil
  1055  }
  1056  func VisitRefOfCommonTableExpr(in *CommonTableExpr, f Visit) error {
  1057  	if in == nil {
  1058  		return nil
  1059  	}
  1060  	if cont, err := f(in); err != nil || !cont {
  1061  		return err
  1062  	}
  1063  	if err := VisitIdentifierCS(in.ID, f); err != nil {
  1064  		return err
  1065  	}
  1066  	if err := VisitColumns(in.Columns, f); err != nil {
  1067  		return err
  1068  	}
  1069  	if err := VisitRefOfSubquery(in.Subquery, f); err != nil {
  1070  		return err
  1071  	}
  1072  	return nil
  1073  }
  1074  func VisitRefOfComparisonExpr(in *ComparisonExpr, f Visit) error {
  1075  	if in == nil {
  1076  		return nil
  1077  	}
  1078  	if cont, err := f(in); err != nil || !cont {
  1079  		return err
  1080  	}
  1081  	if err := VisitExpr(in.Left, f); err != nil {
  1082  		return err
  1083  	}
  1084  	if err := VisitExpr(in.Right, f); err != nil {
  1085  		return err
  1086  	}
  1087  	if err := VisitExpr(in.Escape, f); err != nil {
  1088  		return err
  1089  	}
  1090  	return nil
  1091  }
  1092  func VisitRefOfConstraintDefinition(in *ConstraintDefinition, f Visit) error {
  1093  	if in == nil {
  1094  		return nil
  1095  	}
  1096  	if cont, err := f(in); err != nil || !cont {
  1097  		return err
  1098  	}
  1099  	if err := VisitIdentifierCI(in.Name, f); err != nil {
  1100  		return err
  1101  	}
  1102  	if err := VisitConstraintInfo(in.Details, f); err != nil {
  1103  		return err
  1104  	}
  1105  	return nil
  1106  }
  1107  func VisitRefOfConvertExpr(in *ConvertExpr, f Visit) error {
  1108  	if in == nil {
  1109  		return nil
  1110  	}
  1111  	if cont, err := f(in); err != nil || !cont {
  1112  		return err
  1113  	}
  1114  	if err := VisitExpr(in.Expr, f); err != nil {
  1115  		return err
  1116  	}
  1117  	if err := VisitRefOfConvertType(in.Type, f); err != nil {
  1118  		return err
  1119  	}
  1120  	return nil
  1121  }
  1122  func VisitRefOfConvertType(in *ConvertType, f Visit) error {
  1123  	if in == nil {
  1124  		return nil
  1125  	}
  1126  	if cont, err := f(in); err != nil || !cont {
  1127  		return err
  1128  	}
  1129  	if err := VisitRefOfLiteral(in.Length, f); err != nil {
  1130  		return err
  1131  	}
  1132  	if err := VisitRefOfLiteral(in.Scale, f); err != nil {
  1133  		return err
  1134  	}
  1135  	return nil
  1136  }
  1137  func VisitRefOfConvertUsingExpr(in *ConvertUsingExpr, f Visit) error {
  1138  	if in == nil {
  1139  		return nil
  1140  	}
  1141  	if cont, err := f(in); err != nil || !cont {
  1142  		return err
  1143  	}
  1144  	if err := VisitExpr(in.Expr, f); err != nil {
  1145  		return err
  1146  	}
  1147  	return nil
  1148  }
  1149  func VisitRefOfCount(in *Count, f Visit) error {
  1150  	if in == nil {
  1151  		return nil
  1152  	}
  1153  	if cont, err := f(in); err != nil || !cont {
  1154  		return err
  1155  	}
  1156  	if err := VisitExprs(in.Args, f); err != nil {
  1157  		return err
  1158  	}
  1159  	return nil
  1160  }
  1161  func VisitRefOfCountStar(in *CountStar, f Visit) error {
  1162  	if in == nil {
  1163  		return nil
  1164  	}
  1165  	if cont, err := f(in); err != nil || !cont {
  1166  		return err
  1167  	}
  1168  	return nil
  1169  }
  1170  func VisitRefOfCreateDatabase(in *CreateDatabase, f Visit) error {
  1171  	if in == nil {
  1172  		return nil
  1173  	}
  1174  	if cont, err := f(in); err != nil || !cont {
  1175  		return err
  1176  	}
  1177  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  1178  		return err
  1179  	}
  1180  	if err := VisitIdentifierCS(in.DBName, f); err != nil {
  1181  		return err
  1182  	}
  1183  	return nil
  1184  }
  1185  func VisitRefOfCreateTable(in *CreateTable, f Visit) error {
  1186  	if in == nil {
  1187  		return nil
  1188  	}
  1189  	if cont, err := f(in); err != nil || !cont {
  1190  		return err
  1191  	}
  1192  	if err := VisitTableName(in.Table, f); err != nil {
  1193  		return err
  1194  	}
  1195  	if err := VisitRefOfTableSpec(in.TableSpec, f); err != nil {
  1196  		return err
  1197  	}
  1198  	if err := VisitRefOfOptLike(in.OptLike, f); err != nil {
  1199  		return err
  1200  	}
  1201  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  1202  		return err
  1203  	}
  1204  	return nil
  1205  }
  1206  func VisitRefOfCreateView(in *CreateView, f Visit) error {
  1207  	if in == nil {
  1208  		return nil
  1209  	}
  1210  	if cont, err := f(in); err != nil || !cont {
  1211  		return err
  1212  	}
  1213  	if err := VisitTableName(in.ViewName, f); err != nil {
  1214  		return err
  1215  	}
  1216  	if err := VisitRefOfDefiner(in.Definer, f); err != nil {
  1217  		return err
  1218  	}
  1219  	if err := VisitColumns(in.Columns, f); err != nil {
  1220  		return err
  1221  	}
  1222  	if err := VisitSelectStatement(in.Select, f); err != nil {
  1223  		return err
  1224  	}
  1225  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  1226  		return err
  1227  	}
  1228  	return nil
  1229  }
  1230  func VisitRefOfCurTimeFuncExpr(in *CurTimeFuncExpr, f Visit) error {
  1231  	if in == nil {
  1232  		return nil
  1233  	}
  1234  	if cont, err := f(in); err != nil || !cont {
  1235  		return err
  1236  	}
  1237  	if err := VisitIdentifierCI(in.Name, f); err != nil {
  1238  		return err
  1239  	}
  1240  	if err := VisitExpr(in.Fsp, f); err != nil {
  1241  		return err
  1242  	}
  1243  	return nil
  1244  }
  1245  func VisitRefOfDeallocateStmt(in *DeallocateStmt, f Visit) error {
  1246  	if in == nil {
  1247  		return nil
  1248  	}
  1249  	if cont, err := f(in); err != nil || !cont {
  1250  		return err
  1251  	}
  1252  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  1253  		return err
  1254  	}
  1255  	if err := VisitIdentifierCI(in.Name, f); err != nil {
  1256  		return err
  1257  	}
  1258  	return nil
  1259  }
  1260  func VisitRefOfDefault(in *Default, f Visit) error {
  1261  	if in == nil {
  1262  		return nil
  1263  	}
  1264  	if cont, err := f(in); err != nil || !cont {
  1265  		return err
  1266  	}
  1267  	return nil
  1268  }
  1269  func VisitRefOfDefiner(in *Definer, f Visit) error {
  1270  	if in == nil {
  1271  		return nil
  1272  	}
  1273  	if cont, err := f(in); err != nil || !cont {
  1274  		return err
  1275  	}
  1276  	return nil
  1277  }
  1278  func VisitRefOfDelete(in *Delete, f Visit) error {
  1279  	if in == nil {
  1280  		return nil
  1281  	}
  1282  	if cont, err := f(in); err != nil || !cont {
  1283  		return err
  1284  	}
  1285  	if err := VisitRefOfWith(in.With, f); err != nil {
  1286  		return err
  1287  	}
  1288  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  1289  		return err
  1290  	}
  1291  	if err := VisitTableNames(in.Targets, f); err != nil {
  1292  		return err
  1293  	}
  1294  	if err := VisitTableExprs(in.TableExprs, f); err != nil {
  1295  		return err
  1296  	}
  1297  	if err := VisitPartitions(in.Partitions, f); err != nil {
  1298  		return err
  1299  	}
  1300  	if err := VisitRefOfWhere(in.Where, f); err != nil {
  1301  		return err
  1302  	}
  1303  	if err := VisitOrderBy(in.OrderBy, f); err != nil {
  1304  		return err
  1305  	}
  1306  	if err := VisitRefOfLimit(in.Limit, f); err != nil {
  1307  		return err
  1308  	}
  1309  	return nil
  1310  }
  1311  func VisitRefOfDerivedTable(in *DerivedTable, f Visit) error {
  1312  	if in == nil {
  1313  		return nil
  1314  	}
  1315  	if cont, err := f(in); err != nil || !cont {
  1316  		return err
  1317  	}
  1318  	if err := VisitSelectStatement(in.Select, f); err != nil {
  1319  		return err
  1320  	}
  1321  	return nil
  1322  }
  1323  func VisitRefOfDropColumn(in *DropColumn, f Visit) error {
  1324  	if in == nil {
  1325  		return nil
  1326  	}
  1327  	if cont, err := f(in); err != nil || !cont {
  1328  		return err
  1329  	}
  1330  	if err := VisitRefOfColName(in.Name, f); err != nil {
  1331  		return err
  1332  	}
  1333  	return nil
  1334  }
  1335  func VisitRefOfDropDatabase(in *DropDatabase, f Visit) error {
  1336  	if in == nil {
  1337  		return nil
  1338  	}
  1339  	if cont, err := f(in); err != nil || !cont {
  1340  		return err
  1341  	}
  1342  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  1343  		return err
  1344  	}
  1345  	if err := VisitIdentifierCS(in.DBName, f); err != nil {
  1346  		return err
  1347  	}
  1348  	return nil
  1349  }
  1350  func VisitRefOfDropKey(in *DropKey, f Visit) error {
  1351  	if in == nil {
  1352  		return nil
  1353  	}
  1354  	if cont, err := f(in); err != nil || !cont {
  1355  		return err
  1356  	}
  1357  	if err := VisitIdentifierCI(in.Name, f); err != nil {
  1358  		return err
  1359  	}
  1360  	return nil
  1361  }
  1362  func VisitRefOfDropTable(in *DropTable, f Visit) error {
  1363  	if in == nil {
  1364  		return nil
  1365  	}
  1366  	if cont, err := f(in); err != nil || !cont {
  1367  		return err
  1368  	}
  1369  	if err := VisitTableNames(in.FromTables, f); err != nil {
  1370  		return err
  1371  	}
  1372  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  1373  		return err
  1374  	}
  1375  	return nil
  1376  }
  1377  func VisitRefOfDropView(in *DropView, f Visit) error {
  1378  	if in == nil {
  1379  		return nil
  1380  	}
  1381  	if cont, err := f(in); err != nil || !cont {
  1382  		return err
  1383  	}
  1384  	if err := VisitTableNames(in.FromTables, f); err != nil {
  1385  		return err
  1386  	}
  1387  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  1388  		return err
  1389  	}
  1390  	return nil
  1391  }
  1392  func VisitRefOfExecuteStmt(in *ExecuteStmt, f Visit) error {
  1393  	if in == nil {
  1394  		return nil
  1395  	}
  1396  	if cont, err := f(in); err != nil || !cont {
  1397  		return err
  1398  	}
  1399  	if err := VisitIdentifierCI(in.Name, f); err != nil {
  1400  		return err
  1401  	}
  1402  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  1403  		return err
  1404  	}
  1405  	for _, el := range in.Arguments {
  1406  		if err := VisitRefOfVariable(el, f); err != nil {
  1407  			return err
  1408  		}
  1409  	}
  1410  	return nil
  1411  }
  1412  func VisitRefOfExistsExpr(in *ExistsExpr, f Visit) error {
  1413  	if in == nil {
  1414  		return nil
  1415  	}
  1416  	if cont, err := f(in); err != nil || !cont {
  1417  		return err
  1418  	}
  1419  	if err := VisitRefOfSubquery(in.Subquery, f); err != nil {
  1420  		return err
  1421  	}
  1422  	return nil
  1423  }
  1424  func VisitRefOfExplainStmt(in *ExplainStmt, f Visit) error {
  1425  	if in == nil {
  1426  		return nil
  1427  	}
  1428  	if cont, err := f(in); err != nil || !cont {
  1429  		return err
  1430  	}
  1431  	if err := VisitStatement(in.Statement, f); err != nil {
  1432  		return err
  1433  	}
  1434  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  1435  		return err
  1436  	}
  1437  	return nil
  1438  }
  1439  func VisitRefOfExplainTab(in *ExplainTab, f Visit) error {
  1440  	if in == nil {
  1441  		return nil
  1442  	}
  1443  	if cont, err := f(in); err != nil || !cont {
  1444  		return err
  1445  	}
  1446  	if err := VisitTableName(in.Table, f); err != nil {
  1447  		return err
  1448  	}
  1449  	return nil
  1450  }
  1451  func VisitExprs(in Exprs, f Visit) error {
  1452  	if in == nil {
  1453  		return nil
  1454  	}
  1455  	if cont, err := f(in); err != nil || !cont {
  1456  		return err
  1457  	}
  1458  	for _, el := range in {
  1459  		if err := VisitExpr(el, f); err != nil {
  1460  			return err
  1461  		}
  1462  	}
  1463  	return nil
  1464  }
  1465  func VisitRefOfExtractFuncExpr(in *ExtractFuncExpr, f Visit) error {
  1466  	if in == nil {
  1467  		return nil
  1468  	}
  1469  	if cont, err := f(in); err != nil || !cont {
  1470  		return err
  1471  	}
  1472  	if err := VisitExpr(in.Expr, f); err != nil {
  1473  		return err
  1474  	}
  1475  	return nil
  1476  }
  1477  func VisitRefOfExtractValueExpr(in *ExtractValueExpr, f Visit) error {
  1478  	if in == nil {
  1479  		return nil
  1480  	}
  1481  	if cont, err := f(in); err != nil || !cont {
  1482  		return err
  1483  	}
  1484  	if err := VisitExpr(in.Fragment, f); err != nil {
  1485  		return err
  1486  	}
  1487  	if err := VisitExpr(in.XPathExpr, f); err != nil {
  1488  		return err
  1489  	}
  1490  	return nil
  1491  }
  1492  func VisitRefOfExtractedSubquery(in *ExtractedSubquery, f Visit) error {
  1493  	if in == nil {
  1494  		return nil
  1495  	}
  1496  	if cont, err := f(in); err != nil || !cont {
  1497  		return err
  1498  	}
  1499  	if err := VisitExpr(in.Original, f); err != nil {
  1500  		return err
  1501  	}
  1502  	if err := VisitRefOfSubquery(in.Subquery, f); err != nil {
  1503  		return err
  1504  	}
  1505  	if err := VisitExpr(in.OtherSide, f); err != nil {
  1506  		return err
  1507  	}
  1508  	if err := VisitExpr(in.alternative, f); err != nil {
  1509  		return err
  1510  	}
  1511  	return nil
  1512  }
  1513  func VisitRefOfFirstOrLastValueExpr(in *FirstOrLastValueExpr, f Visit) error {
  1514  	if in == nil {
  1515  		return nil
  1516  	}
  1517  	if cont, err := f(in); err != nil || !cont {
  1518  		return err
  1519  	}
  1520  	if err := VisitExpr(in.Expr, f); err != nil {
  1521  		return err
  1522  	}
  1523  	if err := VisitRefOfNullTreatmentClause(in.NullTreatmentClause, f); err != nil {
  1524  		return err
  1525  	}
  1526  	if err := VisitRefOfOverClause(in.OverClause, f); err != nil {
  1527  		return err
  1528  	}
  1529  	return nil
  1530  }
  1531  func VisitRefOfFlush(in *Flush, f Visit) error {
  1532  	if in == nil {
  1533  		return nil
  1534  	}
  1535  	if cont, err := f(in); err != nil || !cont {
  1536  		return err
  1537  	}
  1538  	if err := VisitTableNames(in.TableNames, f); err != nil {
  1539  		return err
  1540  	}
  1541  	return nil
  1542  }
  1543  func VisitRefOfForce(in *Force, f Visit) error {
  1544  	if in == nil {
  1545  		return nil
  1546  	}
  1547  	if cont, err := f(in); err != nil || !cont {
  1548  		return err
  1549  	}
  1550  	return nil
  1551  }
  1552  func VisitRefOfForeignKeyDefinition(in *ForeignKeyDefinition, f Visit) error {
  1553  	if in == nil {
  1554  		return nil
  1555  	}
  1556  	if cont, err := f(in); err != nil || !cont {
  1557  		return err
  1558  	}
  1559  	if err := VisitColumns(in.Source, f); err != nil {
  1560  		return err
  1561  	}
  1562  	if err := VisitIdentifierCI(in.IndexName, f); err != nil {
  1563  		return err
  1564  	}
  1565  	if err := VisitRefOfReferenceDefinition(in.ReferenceDefinition, f); err != nil {
  1566  		return err
  1567  	}
  1568  	return nil
  1569  }
  1570  func VisitRefOfFrameClause(in *FrameClause, f Visit) error {
  1571  	if in == nil {
  1572  		return nil
  1573  	}
  1574  	if cont, err := f(in); err != nil || !cont {
  1575  		return err
  1576  	}
  1577  	if err := VisitRefOfFramePoint(in.Start, f); err != nil {
  1578  		return err
  1579  	}
  1580  	if err := VisitRefOfFramePoint(in.End, f); err != nil {
  1581  		return err
  1582  	}
  1583  	return nil
  1584  }
  1585  func VisitRefOfFramePoint(in *FramePoint, f Visit) error {
  1586  	if in == nil {
  1587  		return nil
  1588  	}
  1589  	if cont, err := f(in); err != nil || !cont {
  1590  		return err
  1591  	}
  1592  	if err := VisitExpr(in.Expr, f); err != nil {
  1593  		return err
  1594  	}
  1595  	return nil
  1596  }
  1597  func VisitRefOfFromFirstLastClause(in *FromFirstLastClause, f Visit) error {
  1598  	if in == nil {
  1599  		return nil
  1600  	}
  1601  	if cont, err := f(in); err != nil || !cont {
  1602  		return err
  1603  	}
  1604  	return nil
  1605  }
  1606  func VisitRefOfFuncExpr(in *FuncExpr, f Visit) error {
  1607  	if in == nil {
  1608  		return nil
  1609  	}
  1610  	if cont, err := f(in); err != nil || !cont {
  1611  		return err
  1612  	}
  1613  	if err := VisitIdentifierCS(in.Qualifier, f); err != nil {
  1614  		return err
  1615  	}
  1616  	if err := VisitIdentifierCI(in.Name, f); err != nil {
  1617  		return err
  1618  	}
  1619  	if err := VisitSelectExprs(in.Exprs, f); err != nil {
  1620  		return err
  1621  	}
  1622  	return nil
  1623  }
  1624  func VisitRefOfGTIDFuncExpr(in *GTIDFuncExpr, f Visit) error {
  1625  	if in == nil {
  1626  		return nil
  1627  	}
  1628  	if cont, err := f(in); err != nil || !cont {
  1629  		return err
  1630  	}
  1631  	if err := VisitExpr(in.Set1, f); err != nil {
  1632  		return err
  1633  	}
  1634  	if err := VisitExpr(in.Set2, f); err != nil {
  1635  		return err
  1636  	}
  1637  	if err := VisitExpr(in.Timeout, f); err != nil {
  1638  		return err
  1639  	}
  1640  	if err := VisitExpr(in.Channel, f); err != nil {
  1641  		return err
  1642  	}
  1643  	return nil
  1644  }
  1645  func VisitGroupBy(in GroupBy, f Visit) error {
  1646  	if in == nil {
  1647  		return nil
  1648  	}
  1649  	if cont, err := f(in); err != nil || !cont {
  1650  		return err
  1651  	}
  1652  	for _, el := range in {
  1653  		if err := VisitExpr(el, f); err != nil {
  1654  			return err
  1655  		}
  1656  	}
  1657  	return nil
  1658  }
  1659  func VisitRefOfGroupConcatExpr(in *GroupConcatExpr, f Visit) error {
  1660  	if in == nil {
  1661  		return nil
  1662  	}
  1663  	if cont, err := f(in); err != nil || !cont {
  1664  		return err
  1665  	}
  1666  	if err := VisitExprs(in.Exprs, f); err != nil {
  1667  		return err
  1668  	}
  1669  	if err := VisitOrderBy(in.OrderBy, f); err != nil {
  1670  		return err
  1671  	}
  1672  	if err := VisitRefOfLimit(in.Limit, f); err != nil {
  1673  		return err
  1674  	}
  1675  	return nil
  1676  }
  1677  func VisitIdentifierCI(in IdentifierCI, f Visit) error {
  1678  	if cont, err := f(in); err != nil || !cont {
  1679  		return err
  1680  	}
  1681  	return nil
  1682  }
  1683  func VisitIdentifierCS(in IdentifierCS, f Visit) error {
  1684  	if cont, err := f(in); err != nil || !cont {
  1685  		return err
  1686  	}
  1687  	return nil
  1688  }
  1689  func VisitRefOfIndexDefinition(in *IndexDefinition, f Visit) error {
  1690  	if in == nil {
  1691  		return nil
  1692  	}
  1693  	if cont, err := f(in); err != nil || !cont {
  1694  		return err
  1695  	}
  1696  	if err := VisitRefOfIndexInfo(in.Info, f); err != nil {
  1697  		return err
  1698  	}
  1699  	return nil
  1700  }
  1701  func VisitRefOfIndexHint(in *IndexHint, f Visit) error {
  1702  	if in == nil {
  1703  		return nil
  1704  	}
  1705  	if cont, err := f(in); err != nil || !cont {
  1706  		return err
  1707  	}
  1708  	for _, el := range in.Indexes {
  1709  		if err := VisitIdentifierCI(el, f); err != nil {
  1710  			return err
  1711  		}
  1712  	}
  1713  	return nil
  1714  }
  1715  func VisitIndexHints(in IndexHints, f Visit) error {
  1716  	if in == nil {
  1717  		return nil
  1718  	}
  1719  	if cont, err := f(in); err != nil || !cont {
  1720  		return err
  1721  	}
  1722  	for _, el := range in {
  1723  		if err := VisitRefOfIndexHint(el, f); err != nil {
  1724  			return err
  1725  		}
  1726  	}
  1727  	return nil
  1728  }
  1729  func VisitRefOfIndexInfo(in *IndexInfo, f Visit) error {
  1730  	if in == nil {
  1731  		return nil
  1732  	}
  1733  	if cont, err := f(in); err != nil || !cont {
  1734  		return err
  1735  	}
  1736  	if err := VisitIdentifierCI(in.Name, f); err != nil {
  1737  		return err
  1738  	}
  1739  	if err := VisitIdentifierCI(in.ConstraintName, f); err != nil {
  1740  		return err
  1741  	}
  1742  	return nil
  1743  }
  1744  func VisitRefOfInsert(in *Insert, f Visit) error {
  1745  	if in == nil {
  1746  		return nil
  1747  	}
  1748  	if cont, err := f(in); err != nil || !cont {
  1749  		return err
  1750  	}
  1751  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  1752  		return err
  1753  	}
  1754  	if err := VisitTableName(in.Table, f); err != nil {
  1755  		return err
  1756  	}
  1757  	if err := VisitPartitions(in.Partitions, f); err != nil {
  1758  		return err
  1759  	}
  1760  	if err := VisitColumns(in.Columns, f); err != nil {
  1761  		return err
  1762  	}
  1763  	if err := VisitInsertRows(in.Rows, f); err != nil {
  1764  		return err
  1765  	}
  1766  	if err := VisitOnDup(in.OnDup, f); err != nil {
  1767  		return err
  1768  	}
  1769  	return nil
  1770  }
  1771  func VisitRefOfInsertExpr(in *InsertExpr, f Visit) error {
  1772  	if in == nil {
  1773  		return nil
  1774  	}
  1775  	if cont, err := f(in); err != nil || !cont {
  1776  		return err
  1777  	}
  1778  	if err := VisitExpr(in.Str, f); err != nil {
  1779  		return err
  1780  	}
  1781  	if err := VisitExpr(in.Pos, f); err != nil {
  1782  		return err
  1783  	}
  1784  	if err := VisitExpr(in.Len, f); err != nil {
  1785  		return err
  1786  	}
  1787  	if err := VisitExpr(in.NewStr, f); err != nil {
  1788  		return err
  1789  	}
  1790  	return nil
  1791  }
  1792  func VisitRefOfIntervalExpr(in *IntervalExpr, f Visit) error {
  1793  	if in == nil {
  1794  		return nil
  1795  	}
  1796  	if cont, err := f(in); err != nil || !cont {
  1797  		return err
  1798  	}
  1799  	if err := VisitExpr(in.Expr, f); err != nil {
  1800  		return err
  1801  	}
  1802  	return nil
  1803  }
  1804  func VisitRefOfIntervalFuncExpr(in *IntervalFuncExpr, f Visit) error {
  1805  	if in == nil {
  1806  		return nil
  1807  	}
  1808  	if cont, err := f(in); err != nil || !cont {
  1809  		return err
  1810  	}
  1811  	if err := VisitExpr(in.Expr, f); err != nil {
  1812  		return err
  1813  	}
  1814  	if err := VisitExprs(in.Exprs, f); err != nil {
  1815  		return err
  1816  	}
  1817  	return nil
  1818  }
  1819  func VisitRefOfIntroducerExpr(in *IntroducerExpr, f Visit) error {
  1820  	if in == nil {
  1821  		return nil
  1822  	}
  1823  	if cont, err := f(in); err != nil || !cont {
  1824  		return err
  1825  	}
  1826  	if err := VisitExpr(in.Expr, f); err != nil {
  1827  		return err
  1828  	}
  1829  	return nil
  1830  }
  1831  func VisitRefOfIsExpr(in *IsExpr, f Visit) error {
  1832  	if in == nil {
  1833  		return nil
  1834  	}
  1835  	if cont, err := f(in); err != nil || !cont {
  1836  		return err
  1837  	}
  1838  	if err := VisitExpr(in.Left, f); err != nil {
  1839  		return err
  1840  	}
  1841  	return nil
  1842  }
  1843  func VisitRefOfJSONArrayExpr(in *JSONArrayExpr, f Visit) error {
  1844  	if in == nil {
  1845  		return nil
  1846  	}
  1847  	if cont, err := f(in); err != nil || !cont {
  1848  		return err
  1849  	}
  1850  	if err := VisitExprs(in.Params, f); err != nil {
  1851  		return err
  1852  	}
  1853  	return nil
  1854  }
  1855  func VisitRefOfJSONAttributesExpr(in *JSONAttributesExpr, f Visit) error {
  1856  	if in == nil {
  1857  		return nil
  1858  	}
  1859  	if cont, err := f(in); err != nil || !cont {
  1860  		return err
  1861  	}
  1862  	if err := VisitExpr(in.JSONDoc, f); err != nil {
  1863  		return err
  1864  	}
  1865  	if err := VisitExpr(in.Path, f); err != nil {
  1866  		return err
  1867  	}
  1868  	return nil
  1869  }
  1870  func VisitRefOfJSONContainsExpr(in *JSONContainsExpr, f Visit) error {
  1871  	if in == nil {
  1872  		return nil
  1873  	}
  1874  	if cont, err := f(in); err != nil || !cont {
  1875  		return err
  1876  	}
  1877  	if err := VisitExpr(in.Target, f); err != nil {
  1878  		return err
  1879  	}
  1880  	if err := VisitExpr(in.Candidate, f); err != nil {
  1881  		return err
  1882  	}
  1883  	for _, el := range in.PathList {
  1884  		if err := VisitExpr(el, f); err != nil {
  1885  			return err
  1886  		}
  1887  	}
  1888  	return nil
  1889  }
  1890  func VisitRefOfJSONContainsPathExpr(in *JSONContainsPathExpr, f Visit) error {
  1891  	if in == nil {
  1892  		return nil
  1893  	}
  1894  	if cont, err := f(in); err != nil || !cont {
  1895  		return err
  1896  	}
  1897  	if err := VisitExpr(in.JSONDoc, f); err != nil {
  1898  		return err
  1899  	}
  1900  	if err := VisitExpr(in.OneOrAll, f); err != nil {
  1901  		return err
  1902  	}
  1903  	for _, el := range in.PathList {
  1904  		if err := VisitExpr(el, f); err != nil {
  1905  			return err
  1906  		}
  1907  	}
  1908  	return nil
  1909  }
  1910  func VisitRefOfJSONExtractExpr(in *JSONExtractExpr, f Visit) error {
  1911  	if in == nil {
  1912  		return nil
  1913  	}
  1914  	if cont, err := f(in); err != nil || !cont {
  1915  		return err
  1916  	}
  1917  	if err := VisitExpr(in.JSONDoc, f); err != nil {
  1918  		return err
  1919  	}
  1920  	for _, el := range in.PathList {
  1921  		if err := VisitExpr(el, f); err != nil {
  1922  			return err
  1923  		}
  1924  	}
  1925  	return nil
  1926  }
  1927  func VisitRefOfJSONKeysExpr(in *JSONKeysExpr, f Visit) error {
  1928  	if in == nil {
  1929  		return nil
  1930  	}
  1931  	if cont, err := f(in); err != nil || !cont {
  1932  		return err
  1933  	}
  1934  	if err := VisitExpr(in.JSONDoc, f); err != nil {
  1935  		return err
  1936  	}
  1937  	if err := VisitExpr(in.Path, f); err != nil {
  1938  		return err
  1939  	}
  1940  	return nil
  1941  }
  1942  func VisitRefOfJSONObjectExpr(in *JSONObjectExpr, f Visit) error {
  1943  	if in == nil {
  1944  		return nil
  1945  	}
  1946  	if cont, err := f(in); err != nil || !cont {
  1947  		return err
  1948  	}
  1949  	for _, el := range in.Params {
  1950  		if err := VisitRefOfJSONObjectParam(el, f); err != nil {
  1951  			return err
  1952  		}
  1953  	}
  1954  	return nil
  1955  }
  1956  func VisitRefOfJSONObjectParam(in *JSONObjectParam, f Visit) error {
  1957  	if in == nil {
  1958  		return nil
  1959  	}
  1960  	if cont, err := f(in); err != nil || !cont {
  1961  		return err
  1962  	}
  1963  	if err := VisitExpr(in.Key, f); err != nil {
  1964  		return err
  1965  	}
  1966  	if err := VisitExpr(in.Value, f); err != nil {
  1967  		return err
  1968  	}
  1969  	return nil
  1970  }
  1971  func VisitRefOfJSONOverlapsExpr(in *JSONOverlapsExpr, f Visit) error {
  1972  	if in == nil {
  1973  		return nil
  1974  	}
  1975  	if cont, err := f(in); err != nil || !cont {
  1976  		return err
  1977  	}
  1978  	if err := VisitExpr(in.JSONDoc1, f); err != nil {
  1979  		return err
  1980  	}
  1981  	if err := VisitExpr(in.JSONDoc2, f); err != nil {
  1982  		return err
  1983  	}
  1984  	return nil
  1985  }
  1986  func VisitRefOfJSONPrettyExpr(in *JSONPrettyExpr, f Visit) error {
  1987  	if in == nil {
  1988  		return nil
  1989  	}
  1990  	if cont, err := f(in); err != nil || !cont {
  1991  		return err
  1992  	}
  1993  	if err := VisitExpr(in.JSONVal, f); err != nil {
  1994  		return err
  1995  	}
  1996  	return nil
  1997  }
  1998  func VisitRefOfJSONQuoteExpr(in *JSONQuoteExpr, f Visit) error {
  1999  	if in == nil {
  2000  		return nil
  2001  	}
  2002  	if cont, err := f(in); err != nil || !cont {
  2003  		return err
  2004  	}
  2005  	if err := VisitExpr(in.StringArg, f); err != nil {
  2006  		return err
  2007  	}
  2008  	return nil
  2009  }
  2010  func VisitRefOfJSONRemoveExpr(in *JSONRemoveExpr, f Visit) error {
  2011  	if in == nil {
  2012  		return nil
  2013  	}
  2014  	if cont, err := f(in); err != nil || !cont {
  2015  		return err
  2016  	}
  2017  	if err := VisitExpr(in.JSONDoc, f); err != nil {
  2018  		return err
  2019  	}
  2020  	if err := VisitExprs(in.PathList, f); err != nil {
  2021  		return err
  2022  	}
  2023  	return nil
  2024  }
  2025  func VisitRefOfJSONSchemaValidFuncExpr(in *JSONSchemaValidFuncExpr, f Visit) error {
  2026  	if in == nil {
  2027  		return nil
  2028  	}
  2029  	if cont, err := f(in); err != nil || !cont {
  2030  		return err
  2031  	}
  2032  	if err := VisitExpr(in.Schema, f); err != nil {
  2033  		return err
  2034  	}
  2035  	if err := VisitExpr(in.Document, f); err != nil {
  2036  		return err
  2037  	}
  2038  	return nil
  2039  }
  2040  func VisitRefOfJSONSchemaValidationReportFuncExpr(in *JSONSchemaValidationReportFuncExpr, f Visit) error {
  2041  	if in == nil {
  2042  		return nil
  2043  	}
  2044  	if cont, err := f(in); err != nil || !cont {
  2045  		return err
  2046  	}
  2047  	if err := VisitExpr(in.Schema, f); err != nil {
  2048  		return err
  2049  	}
  2050  	if err := VisitExpr(in.Document, f); err != nil {
  2051  		return err
  2052  	}
  2053  	return nil
  2054  }
  2055  func VisitRefOfJSONSearchExpr(in *JSONSearchExpr, f Visit) error {
  2056  	if in == nil {
  2057  		return nil
  2058  	}
  2059  	if cont, err := f(in); err != nil || !cont {
  2060  		return err
  2061  	}
  2062  	if err := VisitExpr(in.JSONDoc, f); err != nil {
  2063  		return err
  2064  	}
  2065  	if err := VisitExpr(in.OneOrAll, f); err != nil {
  2066  		return err
  2067  	}
  2068  	if err := VisitExpr(in.SearchStr, f); err != nil {
  2069  		return err
  2070  	}
  2071  	if err := VisitExpr(in.EscapeChar, f); err != nil {
  2072  		return err
  2073  	}
  2074  	for _, el := range in.PathList {
  2075  		if err := VisitExpr(el, f); err != nil {
  2076  			return err
  2077  		}
  2078  	}
  2079  	return nil
  2080  }
  2081  func VisitRefOfJSONStorageFreeExpr(in *JSONStorageFreeExpr, f Visit) error {
  2082  	if in == nil {
  2083  		return nil
  2084  	}
  2085  	if cont, err := f(in); err != nil || !cont {
  2086  		return err
  2087  	}
  2088  	if err := VisitExpr(in.JSONVal, f); err != nil {
  2089  		return err
  2090  	}
  2091  	return nil
  2092  }
  2093  func VisitRefOfJSONStorageSizeExpr(in *JSONStorageSizeExpr, f Visit) error {
  2094  	if in == nil {
  2095  		return nil
  2096  	}
  2097  	if cont, err := f(in); err != nil || !cont {
  2098  		return err
  2099  	}
  2100  	if err := VisitExpr(in.JSONVal, f); err != nil {
  2101  		return err
  2102  	}
  2103  	return nil
  2104  }
  2105  func VisitRefOfJSONTableExpr(in *JSONTableExpr, f Visit) error {
  2106  	if in == nil {
  2107  		return nil
  2108  	}
  2109  	if cont, err := f(in); err != nil || !cont {
  2110  		return err
  2111  	}
  2112  	if err := VisitExpr(in.Expr, f); err != nil {
  2113  		return err
  2114  	}
  2115  	if err := VisitIdentifierCS(in.Alias, f); err != nil {
  2116  		return err
  2117  	}
  2118  	if err := VisitExpr(in.Filter, f); err != nil {
  2119  		return err
  2120  	}
  2121  	for _, el := range in.Columns {
  2122  		if err := VisitRefOfJtColumnDefinition(el, f); err != nil {
  2123  			return err
  2124  		}
  2125  	}
  2126  	return nil
  2127  }
  2128  func VisitRefOfJSONUnquoteExpr(in *JSONUnquoteExpr, f Visit) error {
  2129  	if in == nil {
  2130  		return nil
  2131  	}
  2132  	if cont, err := f(in); err != nil || !cont {
  2133  		return err
  2134  	}
  2135  	if err := VisitExpr(in.JSONValue, f); err != nil {
  2136  		return err
  2137  	}
  2138  	return nil
  2139  }
  2140  func VisitRefOfJSONValueExpr(in *JSONValueExpr, f Visit) error {
  2141  	if in == nil {
  2142  		return nil
  2143  	}
  2144  	if cont, err := f(in); err != nil || !cont {
  2145  		return err
  2146  	}
  2147  	if err := VisitExpr(in.JSONDoc, f); err != nil {
  2148  		return err
  2149  	}
  2150  	if err := VisitExpr(in.Path, f); err != nil {
  2151  		return err
  2152  	}
  2153  	if err := VisitRefOfConvertType(in.ReturningType, f); err != nil {
  2154  		return err
  2155  	}
  2156  	if err := VisitRefOfJtOnResponse(in.EmptyOnResponse, f); err != nil {
  2157  		return err
  2158  	}
  2159  	if err := VisitRefOfJtOnResponse(in.ErrorOnResponse, f); err != nil {
  2160  		return err
  2161  	}
  2162  	return nil
  2163  }
  2164  func VisitRefOfJSONValueMergeExpr(in *JSONValueMergeExpr, f Visit) error {
  2165  	if in == nil {
  2166  		return nil
  2167  	}
  2168  	if cont, err := f(in); err != nil || !cont {
  2169  		return err
  2170  	}
  2171  	if err := VisitExpr(in.JSONDoc, f); err != nil {
  2172  		return err
  2173  	}
  2174  	if err := VisitExprs(in.JSONDocList, f); err != nil {
  2175  		return err
  2176  	}
  2177  	return nil
  2178  }
  2179  func VisitRefOfJSONValueModifierExpr(in *JSONValueModifierExpr, f Visit) error {
  2180  	if in == nil {
  2181  		return nil
  2182  	}
  2183  	if cont, err := f(in); err != nil || !cont {
  2184  		return err
  2185  	}
  2186  	if err := VisitExpr(in.JSONDoc, f); err != nil {
  2187  		return err
  2188  	}
  2189  	for _, el := range in.Params {
  2190  		if err := VisitRefOfJSONObjectParam(el, f); err != nil {
  2191  			return err
  2192  		}
  2193  	}
  2194  	return nil
  2195  }
  2196  func VisitRefOfJoinCondition(in *JoinCondition, f Visit) error {
  2197  	if in == nil {
  2198  		return nil
  2199  	}
  2200  	if cont, err := f(in); err != nil || !cont {
  2201  		return err
  2202  	}
  2203  	if err := VisitExpr(in.On, f); err != nil {
  2204  		return err
  2205  	}
  2206  	if err := VisitColumns(in.Using, f); err != nil {
  2207  		return err
  2208  	}
  2209  	return nil
  2210  }
  2211  func VisitRefOfJoinTableExpr(in *JoinTableExpr, f Visit) error {
  2212  	if in == nil {
  2213  		return nil
  2214  	}
  2215  	if cont, err := f(in); err != nil || !cont {
  2216  		return err
  2217  	}
  2218  	if err := VisitTableExpr(in.LeftExpr, f); err != nil {
  2219  		return err
  2220  	}
  2221  	if err := VisitTableExpr(in.RightExpr, f); err != nil {
  2222  		return err
  2223  	}
  2224  	if err := VisitRefOfJoinCondition(in.Condition, f); err != nil {
  2225  		return err
  2226  	}
  2227  	return nil
  2228  }
  2229  func VisitRefOfJtColumnDefinition(in *JtColumnDefinition, f Visit) error {
  2230  	if in == nil {
  2231  		return nil
  2232  	}
  2233  	if cont, err := f(in); err != nil || !cont {
  2234  		return err
  2235  	}
  2236  	return nil
  2237  }
  2238  func VisitRefOfJtOnResponse(in *JtOnResponse, f Visit) error {
  2239  	if in == nil {
  2240  		return nil
  2241  	}
  2242  	if cont, err := f(in); err != nil || !cont {
  2243  		return err
  2244  	}
  2245  	if err := VisitExpr(in.Expr, f); err != nil {
  2246  		return err
  2247  	}
  2248  	return nil
  2249  }
  2250  func VisitRefOfKeyState(in *KeyState, f Visit) error {
  2251  	if in == nil {
  2252  		return nil
  2253  	}
  2254  	if cont, err := f(in); err != nil || !cont {
  2255  		return err
  2256  	}
  2257  	return nil
  2258  }
  2259  func VisitRefOfLagLeadExpr(in *LagLeadExpr, f Visit) error {
  2260  	if in == nil {
  2261  		return nil
  2262  	}
  2263  	if cont, err := f(in); err != nil || !cont {
  2264  		return err
  2265  	}
  2266  	if err := VisitExpr(in.Expr, f); err != nil {
  2267  		return err
  2268  	}
  2269  	if err := VisitExpr(in.N, f); err != nil {
  2270  		return err
  2271  	}
  2272  	if err := VisitExpr(in.Default, f); err != nil {
  2273  		return err
  2274  	}
  2275  	if err := VisitRefOfOverClause(in.OverClause, f); err != nil {
  2276  		return err
  2277  	}
  2278  	if err := VisitRefOfNullTreatmentClause(in.NullTreatmentClause, f); err != nil {
  2279  		return err
  2280  	}
  2281  	return nil
  2282  }
  2283  func VisitRefOfLimit(in *Limit, f Visit) error {
  2284  	if in == nil {
  2285  		return nil
  2286  	}
  2287  	if cont, err := f(in); err != nil || !cont {
  2288  		return err
  2289  	}
  2290  	if err := VisitExpr(in.Offset, f); err != nil {
  2291  		return err
  2292  	}
  2293  	if err := VisitExpr(in.Rowcount, f); err != nil {
  2294  		return err
  2295  	}
  2296  	return nil
  2297  }
  2298  func VisitRefOfLiteral(in *Literal, f Visit) error {
  2299  	if in == nil {
  2300  		return nil
  2301  	}
  2302  	if cont, err := f(in); err != nil || !cont {
  2303  		return err
  2304  	}
  2305  	return nil
  2306  }
  2307  func VisitRefOfLoad(in *Load, f Visit) error {
  2308  	if in == nil {
  2309  		return nil
  2310  	}
  2311  	if cont, err := f(in); err != nil || !cont {
  2312  		return err
  2313  	}
  2314  	return nil
  2315  }
  2316  func VisitRefOfLocateExpr(in *LocateExpr, f Visit) error {
  2317  	if in == nil {
  2318  		return nil
  2319  	}
  2320  	if cont, err := f(in); err != nil || !cont {
  2321  		return err
  2322  	}
  2323  	if err := VisitExpr(in.SubStr, f); err != nil {
  2324  		return err
  2325  	}
  2326  	if err := VisitExpr(in.Str, f); err != nil {
  2327  		return err
  2328  	}
  2329  	if err := VisitExpr(in.Pos, f); err != nil {
  2330  		return err
  2331  	}
  2332  	return nil
  2333  }
  2334  func VisitRefOfLockOption(in *LockOption, f Visit) error {
  2335  	if in == nil {
  2336  		return nil
  2337  	}
  2338  	if cont, err := f(in); err != nil || !cont {
  2339  		return err
  2340  	}
  2341  	return nil
  2342  }
  2343  func VisitRefOfLockTables(in *LockTables, f Visit) error {
  2344  	if in == nil {
  2345  		return nil
  2346  	}
  2347  	if cont, err := f(in); err != nil || !cont {
  2348  		return err
  2349  	}
  2350  	return nil
  2351  }
  2352  func VisitRefOfLockingFunc(in *LockingFunc, f Visit) error {
  2353  	if in == nil {
  2354  		return nil
  2355  	}
  2356  	if cont, err := f(in); err != nil || !cont {
  2357  		return err
  2358  	}
  2359  	if err := VisitExpr(in.Name, f); err != nil {
  2360  		return err
  2361  	}
  2362  	if err := VisitExpr(in.Timeout, f); err != nil {
  2363  		return err
  2364  	}
  2365  	return nil
  2366  }
  2367  func VisitRefOfMatchExpr(in *MatchExpr, f Visit) error {
  2368  	if in == nil {
  2369  		return nil
  2370  	}
  2371  	if cont, err := f(in); err != nil || !cont {
  2372  		return err
  2373  	}
  2374  	for _, el := range in.Columns {
  2375  		if err := VisitRefOfColName(el, f); err != nil {
  2376  			return err
  2377  		}
  2378  	}
  2379  	if err := VisitExpr(in.Expr, f); err != nil {
  2380  		return err
  2381  	}
  2382  	return nil
  2383  }
  2384  func VisitRefOfMax(in *Max, f Visit) error {
  2385  	if in == nil {
  2386  		return nil
  2387  	}
  2388  	if cont, err := f(in); err != nil || !cont {
  2389  		return err
  2390  	}
  2391  	if err := VisitExpr(in.Arg, f); err != nil {
  2392  		return err
  2393  	}
  2394  	return nil
  2395  }
  2396  func VisitRefOfMemberOfExpr(in *MemberOfExpr, f Visit) error {
  2397  	if in == nil {
  2398  		return nil
  2399  	}
  2400  	if cont, err := f(in); err != nil || !cont {
  2401  		return err
  2402  	}
  2403  	if err := VisitExpr(in.Value, f); err != nil {
  2404  		return err
  2405  	}
  2406  	if err := VisitExpr(in.JSONArr, f); err != nil {
  2407  		return err
  2408  	}
  2409  	return nil
  2410  }
  2411  func VisitRefOfMin(in *Min, f Visit) error {
  2412  	if in == nil {
  2413  		return nil
  2414  	}
  2415  	if cont, err := f(in); err != nil || !cont {
  2416  		return err
  2417  	}
  2418  	if err := VisitExpr(in.Arg, f); err != nil {
  2419  		return err
  2420  	}
  2421  	return nil
  2422  }
  2423  func VisitRefOfModifyColumn(in *ModifyColumn, f Visit) error {
  2424  	if in == nil {
  2425  		return nil
  2426  	}
  2427  	if cont, err := f(in); err != nil || !cont {
  2428  		return err
  2429  	}
  2430  	if err := VisitRefOfColumnDefinition(in.NewColDefinition, f); err != nil {
  2431  		return err
  2432  	}
  2433  	if err := VisitRefOfColName(in.After, f); err != nil {
  2434  		return err
  2435  	}
  2436  	return nil
  2437  }
  2438  func VisitRefOfNTHValueExpr(in *NTHValueExpr, f Visit) error {
  2439  	if in == nil {
  2440  		return nil
  2441  	}
  2442  	if cont, err := f(in); err != nil || !cont {
  2443  		return err
  2444  	}
  2445  	if err := VisitExpr(in.Expr, f); err != nil {
  2446  		return err
  2447  	}
  2448  	if err := VisitExpr(in.N, f); err != nil {
  2449  		return err
  2450  	}
  2451  	if err := VisitRefOfOverClause(in.OverClause, f); err != nil {
  2452  		return err
  2453  	}
  2454  	if err := VisitRefOfFromFirstLastClause(in.FromFirstLastClause, f); err != nil {
  2455  		return err
  2456  	}
  2457  	if err := VisitRefOfNullTreatmentClause(in.NullTreatmentClause, f); err != nil {
  2458  		return err
  2459  	}
  2460  	return nil
  2461  }
  2462  func VisitRefOfNamedWindow(in *NamedWindow, f Visit) error {
  2463  	if in == nil {
  2464  		return nil
  2465  	}
  2466  	if cont, err := f(in); err != nil || !cont {
  2467  		return err
  2468  	}
  2469  	if err := VisitWindowDefinitions(in.Windows, f); err != nil {
  2470  		return err
  2471  	}
  2472  	return nil
  2473  }
  2474  func VisitNamedWindows(in NamedWindows, f Visit) error {
  2475  	if in == nil {
  2476  		return nil
  2477  	}
  2478  	if cont, err := f(in); err != nil || !cont {
  2479  		return err
  2480  	}
  2481  	for _, el := range in {
  2482  		if err := VisitRefOfNamedWindow(el, f); err != nil {
  2483  			return err
  2484  		}
  2485  	}
  2486  	return nil
  2487  }
  2488  func VisitRefOfNextval(in *Nextval, f Visit) error {
  2489  	if in == nil {
  2490  		return nil
  2491  	}
  2492  	if cont, err := f(in); err != nil || !cont {
  2493  		return err
  2494  	}
  2495  	if err := VisitExpr(in.Expr, f); err != nil {
  2496  		return err
  2497  	}
  2498  	return nil
  2499  }
  2500  func VisitRefOfNotExpr(in *NotExpr, f Visit) error {
  2501  	if in == nil {
  2502  		return nil
  2503  	}
  2504  	if cont, err := f(in); err != nil || !cont {
  2505  		return err
  2506  	}
  2507  	if err := VisitExpr(in.Expr, f); err != nil {
  2508  		return err
  2509  	}
  2510  	return nil
  2511  }
  2512  func VisitRefOfNtileExpr(in *NtileExpr, f Visit) error {
  2513  	if in == nil {
  2514  		return nil
  2515  	}
  2516  	if cont, err := f(in); err != nil || !cont {
  2517  		return err
  2518  	}
  2519  	if err := VisitExpr(in.N, f); err != nil {
  2520  		return err
  2521  	}
  2522  	if err := VisitRefOfOverClause(in.OverClause, f); err != nil {
  2523  		return err
  2524  	}
  2525  	return nil
  2526  }
  2527  func VisitRefOfNullTreatmentClause(in *NullTreatmentClause, f Visit) error {
  2528  	if in == nil {
  2529  		return nil
  2530  	}
  2531  	if cont, err := f(in); err != nil || !cont {
  2532  		return err
  2533  	}
  2534  	return nil
  2535  }
  2536  func VisitRefOfNullVal(in *NullVal, f Visit) error {
  2537  	if in == nil {
  2538  		return nil
  2539  	}
  2540  	if cont, err := f(in); err != nil || !cont {
  2541  		return err
  2542  	}
  2543  	return nil
  2544  }
  2545  func VisitRefOfOffset(in *Offset, f Visit) error {
  2546  	if in == nil {
  2547  		return nil
  2548  	}
  2549  	if cont, err := f(in); err != nil || !cont {
  2550  		return err
  2551  	}
  2552  	return nil
  2553  }
  2554  func VisitOnDup(in OnDup, f Visit) error {
  2555  	if in == nil {
  2556  		return nil
  2557  	}
  2558  	if cont, err := f(in); err != nil || !cont {
  2559  		return err
  2560  	}
  2561  	for _, el := range in {
  2562  		if err := VisitRefOfUpdateExpr(el, f); err != nil {
  2563  			return err
  2564  		}
  2565  	}
  2566  	return nil
  2567  }
  2568  func VisitRefOfOptLike(in *OptLike, f Visit) error {
  2569  	if in == nil {
  2570  		return nil
  2571  	}
  2572  	if cont, err := f(in); err != nil || !cont {
  2573  		return err
  2574  	}
  2575  	if err := VisitTableName(in.LikeTable, f); err != nil {
  2576  		return err
  2577  	}
  2578  	return nil
  2579  }
  2580  func VisitRefOfOrExpr(in *OrExpr, f Visit) error {
  2581  	if in == nil {
  2582  		return nil
  2583  	}
  2584  	if cont, err := f(in); err != nil || !cont {
  2585  		return err
  2586  	}
  2587  	if err := VisitExpr(in.Left, f); err != nil {
  2588  		return err
  2589  	}
  2590  	if err := VisitExpr(in.Right, f); err != nil {
  2591  		return err
  2592  	}
  2593  	return nil
  2594  }
  2595  func VisitRefOfOrder(in *Order, f Visit) error {
  2596  	if in == nil {
  2597  		return nil
  2598  	}
  2599  	if cont, err := f(in); err != nil || !cont {
  2600  		return err
  2601  	}
  2602  	if err := VisitExpr(in.Expr, f); err != nil {
  2603  		return err
  2604  	}
  2605  	return nil
  2606  }
  2607  func VisitOrderBy(in OrderBy, f Visit) error {
  2608  	if in == nil {
  2609  		return nil
  2610  	}
  2611  	if cont, err := f(in); err != nil || !cont {
  2612  		return err
  2613  	}
  2614  	for _, el := range in {
  2615  		if err := VisitRefOfOrder(el, f); err != nil {
  2616  			return err
  2617  		}
  2618  	}
  2619  	return nil
  2620  }
  2621  func VisitRefOfOrderByOption(in *OrderByOption, f Visit) error {
  2622  	if in == nil {
  2623  		return nil
  2624  	}
  2625  	if cont, err := f(in); err != nil || !cont {
  2626  		return err
  2627  	}
  2628  	if err := VisitColumns(in.Cols, f); err != nil {
  2629  		return err
  2630  	}
  2631  	return nil
  2632  }
  2633  func VisitRefOfOtherAdmin(in *OtherAdmin, f Visit) error {
  2634  	if in == nil {
  2635  		return nil
  2636  	}
  2637  	if cont, err := f(in); err != nil || !cont {
  2638  		return err
  2639  	}
  2640  	return nil
  2641  }
  2642  func VisitRefOfOtherRead(in *OtherRead, f Visit) error {
  2643  	if in == nil {
  2644  		return nil
  2645  	}
  2646  	if cont, err := f(in); err != nil || !cont {
  2647  		return err
  2648  	}
  2649  	return nil
  2650  }
  2651  func VisitRefOfOverClause(in *OverClause, f Visit) error {
  2652  	if in == nil {
  2653  		return nil
  2654  	}
  2655  	if cont, err := f(in); err != nil || !cont {
  2656  		return err
  2657  	}
  2658  	if err := VisitIdentifierCI(in.WindowName, f); err != nil {
  2659  		return err
  2660  	}
  2661  	if err := VisitRefOfWindowSpecification(in.WindowSpec, f); err != nil {
  2662  		return err
  2663  	}
  2664  	return nil
  2665  }
  2666  func VisitRefOfParenTableExpr(in *ParenTableExpr, f Visit) error {
  2667  	if in == nil {
  2668  		return nil
  2669  	}
  2670  	if cont, err := f(in); err != nil || !cont {
  2671  		return err
  2672  	}
  2673  	if err := VisitTableExprs(in.Exprs, f); err != nil {
  2674  		return err
  2675  	}
  2676  	return nil
  2677  }
  2678  func VisitRefOfParsedComments(in *ParsedComments, f Visit) error {
  2679  	if in == nil {
  2680  		return nil
  2681  	}
  2682  	if cont, err := f(in); err != nil || !cont {
  2683  		return err
  2684  	}
  2685  	return nil
  2686  }
  2687  func VisitRefOfPartitionDefinition(in *PartitionDefinition, f Visit) error {
  2688  	if in == nil {
  2689  		return nil
  2690  	}
  2691  	if cont, err := f(in); err != nil || !cont {
  2692  		return err
  2693  	}
  2694  	if err := VisitIdentifierCI(in.Name, f); err != nil {
  2695  		return err
  2696  	}
  2697  	if err := VisitRefOfPartitionDefinitionOptions(in.Options, f); err != nil {
  2698  		return err
  2699  	}
  2700  	return nil
  2701  }
  2702  func VisitRefOfPartitionDefinitionOptions(in *PartitionDefinitionOptions, f Visit) error {
  2703  	if in == nil {
  2704  		return nil
  2705  	}
  2706  	if cont, err := f(in); err != nil || !cont {
  2707  		return err
  2708  	}
  2709  	if err := VisitRefOfPartitionValueRange(in.ValueRange, f); err != nil {
  2710  		return err
  2711  	}
  2712  	if err := VisitRefOfLiteral(in.Comment, f); err != nil {
  2713  		return err
  2714  	}
  2715  	if err := VisitRefOfPartitionEngine(in.Engine, f); err != nil {
  2716  		return err
  2717  	}
  2718  	if err := VisitRefOfLiteral(in.DataDirectory, f); err != nil {
  2719  		return err
  2720  	}
  2721  	if err := VisitRefOfLiteral(in.IndexDirectory, f); err != nil {
  2722  		return err
  2723  	}
  2724  	if err := VisitSubPartitionDefinitions(in.SubPartitionDefinitions, f); err != nil {
  2725  		return err
  2726  	}
  2727  	return nil
  2728  }
  2729  func VisitRefOfPartitionEngine(in *PartitionEngine, f Visit) error {
  2730  	if in == nil {
  2731  		return nil
  2732  	}
  2733  	if cont, err := f(in); err != nil || !cont {
  2734  		return err
  2735  	}
  2736  	return nil
  2737  }
  2738  func VisitRefOfPartitionOption(in *PartitionOption, f Visit) error {
  2739  	if in == nil {
  2740  		return nil
  2741  	}
  2742  	if cont, err := f(in); err != nil || !cont {
  2743  		return err
  2744  	}
  2745  	if err := VisitColumns(in.ColList, f); err != nil {
  2746  		return err
  2747  	}
  2748  	if err := VisitExpr(in.Expr, f); err != nil {
  2749  		return err
  2750  	}
  2751  	if err := VisitRefOfSubPartition(in.SubPartition, f); err != nil {
  2752  		return err
  2753  	}
  2754  	for _, el := range in.Definitions {
  2755  		if err := VisitRefOfPartitionDefinition(el, f); err != nil {
  2756  			return err
  2757  		}
  2758  	}
  2759  	return nil
  2760  }
  2761  func VisitRefOfPartitionSpec(in *PartitionSpec, f Visit) error {
  2762  	if in == nil {
  2763  		return nil
  2764  	}
  2765  	if cont, err := f(in); err != nil || !cont {
  2766  		return err
  2767  	}
  2768  	if err := VisitPartitions(in.Names, f); err != nil {
  2769  		return err
  2770  	}
  2771  	if err := VisitRefOfLiteral(in.Number, f); err != nil {
  2772  		return err
  2773  	}
  2774  	if err := VisitTableName(in.TableName, f); err != nil {
  2775  		return err
  2776  	}
  2777  	for _, el := range in.Definitions {
  2778  		if err := VisitRefOfPartitionDefinition(el, f); err != nil {
  2779  			return err
  2780  		}
  2781  	}
  2782  	return nil
  2783  }
  2784  func VisitRefOfPartitionValueRange(in *PartitionValueRange, f Visit) error {
  2785  	if in == nil {
  2786  		return nil
  2787  	}
  2788  	if cont, err := f(in); err != nil || !cont {
  2789  		return err
  2790  	}
  2791  	if err := VisitValTuple(in.Range, f); err != nil {
  2792  		return err
  2793  	}
  2794  	return nil
  2795  }
  2796  func VisitPartitions(in Partitions, f Visit) error {
  2797  	if in == nil {
  2798  		return nil
  2799  	}
  2800  	if cont, err := f(in); err != nil || !cont {
  2801  		return err
  2802  	}
  2803  	for _, el := range in {
  2804  		if err := VisitIdentifierCI(el, f); err != nil {
  2805  			return err
  2806  		}
  2807  	}
  2808  	return nil
  2809  }
  2810  func VisitRefOfPerformanceSchemaFuncExpr(in *PerformanceSchemaFuncExpr, f Visit) error {
  2811  	if in == nil {
  2812  		return nil
  2813  	}
  2814  	if cont, err := f(in); err != nil || !cont {
  2815  		return err
  2816  	}
  2817  	if err := VisitExpr(in.Argument, f); err != nil {
  2818  		return err
  2819  	}
  2820  	return nil
  2821  }
  2822  func VisitRefOfPrepareStmt(in *PrepareStmt, f Visit) error {
  2823  	if in == nil {
  2824  		return nil
  2825  	}
  2826  	if cont, err := f(in); err != nil || !cont {
  2827  		return err
  2828  	}
  2829  	if err := VisitIdentifierCI(in.Name, f); err != nil {
  2830  		return err
  2831  	}
  2832  	if err := VisitExpr(in.Statement, f); err != nil {
  2833  		return err
  2834  	}
  2835  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  2836  		return err
  2837  	}
  2838  	return nil
  2839  }
  2840  func VisitRefOfReferenceDefinition(in *ReferenceDefinition, f Visit) error {
  2841  	if in == nil {
  2842  		return nil
  2843  	}
  2844  	if cont, err := f(in); err != nil || !cont {
  2845  		return err
  2846  	}
  2847  	if err := VisitTableName(in.ReferencedTable, f); err != nil {
  2848  		return err
  2849  	}
  2850  	if err := VisitColumns(in.ReferencedColumns, f); err != nil {
  2851  		return err
  2852  	}
  2853  	if err := VisitMatchAction(in.Match, f); err != nil {
  2854  		return err
  2855  	}
  2856  	if err := VisitReferenceAction(in.OnDelete, f); err != nil {
  2857  		return err
  2858  	}
  2859  	if err := VisitReferenceAction(in.OnUpdate, f); err != nil {
  2860  		return err
  2861  	}
  2862  	return nil
  2863  }
  2864  func VisitRefOfRegexpInstrExpr(in *RegexpInstrExpr, f Visit) error {
  2865  	if in == nil {
  2866  		return nil
  2867  	}
  2868  	if cont, err := f(in); err != nil || !cont {
  2869  		return err
  2870  	}
  2871  	if err := VisitExpr(in.Expr, f); err != nil {
  2872  		return err
  2873  	}
  2874  	if err := VisitExpr(in.Pattern, f); err != nil {
  2875  		return err
  2876  	}
  2877  	if err := VisitExpr(in.Position, f); err != nil {
  2878  		return err
  2879  	}
  2880  	if err := VisitExpr(in.Occurrence, f); err != nil {
  2881  		return err
  2882  	}
  2883  	if err := VisitExpr(in.ReturnOption, f); err != nil {
  2884  		return err
  2885  	}
  2886  	if err := VisitExpr(in.MatchType, f); err != nil {
  2887  		return err
  2888  	}
  2889  	return nil
  2890  }
  2891  func VisitRefOfRegexpLikeExpr(in *RegexpLikeExpr, f Visit) error {
  2892  	if in == nil {
  2893  		return nil
  2894  	}
  2895  	if cont, err := f(in); err != nil || !cont {
  2896  		return err
  2897  	}
  2898  	if err := VisitExpr(in.Expr, f); err != nil {
  2899  		return err
  2900  	}
  2901  	if err := VisitExpr(in.Pattern, f); err != nil {
  2902  		return err
  2903  	}
  2904  	if err := VisitExpr(in.MatchType, f); err != nil {
  2905  		return err
  2906  	}
  2907  	return nil
  2908  }
  2909  func VisitRefOfRegexpReplaceExpr(in *RegexpReplaceExpr, f Visit) error {
  2910  	if in == nil {
  2911  		return nil
  2912  	}
  2913  	if cont, err := f(in); err != nil || !cont {
  2914  		return err
  2915  	}
  2916  	if err := VisitExpr(in.Expr, f); err != nil {
  2917  		return err
  2918  	}
  2919  	if err := VisitExpr(in.Pattern, f); err != nil {
  2920  		return err
  2921  	}
  2922  	if err := VisitExpr(in.Repl, f); err != nil {
  2923  		return err
  2924  	}
  2925  	if err := VisitExpr(in.Occurrence, f); err != nil {
  2926  		return err
  2927  	}
  2928  	if err := VisitExpr(in.Position, f); err != nil {
  2929  		return err
  2930  	}
  2931  	if err := VisitExpr(in.MatchType, f); err != nil {
  2932  		return err
  2933  	}
  2934  	return nil
  2935  }
  2936  func VisitRefOfRegexpSubstrExpr(in *RegexpSubstrExpr, f Visit) error {
  2937  	if in == nil {
  2938  		return nil
  2939  	}
  2940  	if cont, err := f(in); err != nil || !cont {
  2941  		return err
  2942  	}
  2943  	if err := VisitExpr(in.Expr, f); err != nil {
  2944  		return err
  2945  	}
  2946  	if err := VisitExpr(in.Pattern, f); err != nil {
  2947  		return err
  2948  	}
  2949  	if err := VisitExpr(in.Occurrence, f); err != nil {
  2950  		return err
  2951  	}
  2952  	if err := VisitExpr(in.Position, f); err != nil {
  2953  		return err
  2954  	}
  2955  	if err := VisitExpr(in.MatchType, f); err != nil {
  2956  		return err
  2957  	}
  2958  	return nil
  2959  }
  2960  func VisitRefOfRelease(in *Release, f Visit) error {
  2961  	if in == nil {
  2962  		return nil
  2963  	}
  2964  	if cont, err := f(in); err != nil || !cont {
  2965  		return err
  2966  	}
  2967  	if err := VisitIdentifierCI(in.Name, f); err != nil {
  2968  		return err
  2969  	}
  2970  	return nil
  2971  }
  2972  func VisitRefOfRenameColumn(in *RenameColumn, f Visit) error {
  2973  	if in == nil {
  2974  		return nil
  2975  	}
  2976  	if cont, err := f(in); err != nil || !cont {
  2977  		return err
  2978  	}
  2979  	if err := VisitRefOfColName(in.OldName, f); err != nil {
  2980  		return err
  2981  	}
  2982  	if err := VisitRefOfColName(in.NewName, f); err != nil {
  2983  		return err
  2984  	}
  2985  	return nil
  2986  }
  2987  func VisitRefOfRenameIndex(in *RenameIndex, f Visit) error {
  2988  	if in == nil {
  2989  		return nil
  2990  	}
  2991  	if cont, err := f(in); err != nil || !cont {
  2992  		return err
  2993  	}
  2994  	if err := VisitIdentifierCI(in.OldName, f); err != nil {
  2995  		return err
  2996  	}
  2997  	if err := VisitIdentifierCI(in.NewName, f); err != nil {
  2998  		return err
  2999  	}
  3000  	return nil
  3001  }
  3002  func VisitRefOfRenameTable(in *RenameTable, f Visit) error {
  3003  	if in == nil {
  3004  		return nil
  3005  	}
  3006  	if cont, err := f(in); err != nil || !cont {
  3007  		return err
  3008  	}
  3009  	return nil
  3010  }
  3011  func VisitRefOfRenameTableName(in *RenameTableName, f Visit) error {
  3012  	if in == nil {
  3013  		return nil
  3014  	}
  3015  	if cont, err := f(in); err != nil || !cont {
  3016  		return err
  3017  	}
  3018  	if err := VisitTableName(in.Table, f); err != nil {
  3019  		return err
  3020  	}
  3021  	return nil
  3022  }
  3023  func VisitRefOfRevertMigration(in *RevertMigration, f Visit) error {
  3024  	if in == nil {
  3025  		return nil
  3026  	}
  3027  	if cont, err := f(in); err != nil || !cont {
  3028  		return err
  3029  	}
  3030  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  3031  		return err
  3032  	}
  3033  	return nil
  3034  }
  3035  func VisitRefOfRollback(in *Rollback, f Visit) error {
  3036  	if in == nil {
  3037  		return nil
  3038  	}
  3039  	if cont, err := f(in); err != nil || !cont {
  3040  		return err
  3041  	}
  3042  	return nil
  3043  }
  3044  func VisitRootNode(in RootNode, f Visit) error {
  3045  	if cont, err := f(in); err != nil || !cont {
  3046  		return err
  3047  	}
  3048  	if err := VisitSQLNode(in.SQLNode, f); err != nil {
  3049  		return err
  3050  	}
  3051  	return nil
  3052  }
  3053  func VisitRefOfSRollback(in *SRollback, f Visit) error {
  3054  	if in == nil {
  3055  		return nil
  3056  	}
  3057  	if cont, err := f(in); err != nil || !cont {
  3058  		return err
  3059  	}
  3060  	if err := VisitIdentifierCI(in.Name, f); err != nil {
  3061  		return err
  3062  	}
  3063  	return nil
  3064  }
  3065  func VisitRefOfSavepoint(in *Savepoint, f Visit) error {
  3066  	if in == nil {
  3067  		return nil
  3068  	}
  3069  	if cont, err := f(in); err != nil || !cont {
  3070  		return err
  3071  	}
  3072  	if err := VisitIdentifierCI(in.Name, f); err != nil {
  3073  		return err
  3074  	}
  3075  	return nil
  3076  }
  3077  func VisitRefOfSelect(in *Select, f Visit) error {
  3078  	if in == nil {
  3079  		return nil
  3080  	}
  3081  	if cont, err := f(in); err != nil || !cont {
  3082  		return err
  3083  	}
  3084  	for _, el := range in.From {
  3085  		if err := VisitTableExpr(el, f); err != nil {
  3086  			return err
  3087  		}
  3088  	}
  3089  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  3090  		return err
  3091  	}
  3092  	if err := VisitSelectExprs(in.SelectExprs, f); err != nil {
  3093  		return err
  3094  	}
  3095  	if err := VisitRefOfWhere(in.Where, f); err != nil {
  3096  		return err
  3097  	}
  3098  	if err := VisitRefOfWith(in.With, f); err != nil {
  3099  		return err
  3100  	}
  3101  	if err := VisitGroupBy(in.GroupBy, f); err != nil {
  3102  		return err
  3103  	}
  3104  	if err := VisitRefOfWhere(in.Having, f); err != nil {
  3105  		return err
  3106  	}
  3107  	if err := VisitNamedWindows(in.Windows, f); err != nil {
  3108  		return err
  3109  	}
  3110  	if err := VisitOrderBy(in.OrderBy, f); err != nil {
  3111  		return err
  3112  	}
  3113  	if err := VisitRefOfLimit(in.Limit, f); err != nil {
  3114  		return err
  3115  	}
  3116  	if err := VisitRefOfSelectInto(in.Into, f); err != nil {
  3117  		return err
  3118  	}
  3119  	return nil
  3120  }
  3121  func VisitSelectExprs(in SelectExprs, f Visit) error {
  3122  	if in == nil {
  3123  		return nil
  3124  	}
  3125  	if cont, err := f(in); err != nil || !cont {
  3126  		return err
  3127  	}
  3128  	for _, el := range in {
  3129  		if err := VisitSelectExpr(el, f); err != nil {
  3130  			return err
  3131  		}
  3132  	}
  3133  	return nil
  3134  }
  3135  func VisitRefOfSelectInto(in *SelectInto, f Visit) error {
  3136  	if in == nil {
  3137  		return nil
  3138  	}
  3139  	if cont, err := f(in); err != nil || !cont {
  3140  		return err
  3141  	}
  3142  	return nil
  3143  }
  3144  func VisitRefOfSet(in *Set, f Visit) error {
  3145  	if in == nil {
  3146  		return nil
  3147  	}
  3148  	if cont, err := f(in); err != nil || !cont {
  3149  		return err
  3150  	}
  3151  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  3152  		return err
  3153  	}
  3154  	if err := VisitSetExprs(in.Exprs, f); err != nil {
  3155  		return err
  3156  	}
  3157  	return nil
  3158  }
  3159  func VisitRefOfSetExpr(in *SetExpr, f Visit) error {
  3160  	if in == nil {
  3161  		return nil
  3162  	}
  3163  	if cont, err := f(in); err != nil || !cont {
  3164  		return err
  3165  	}
  3166  	if err := VisitRefOfVariable(in.Var, f); err != nil {
  3167  		return err
  3168  	}
  3169  	if err := VisitExpr(in.Expr, f); err != nil {
  3170  		return err
  3171  	}
  3172  	return nil
  3173  }
  3174  func VisitSetExprs(in SetExprs, f Visit) error {
  3175  	if in == nil {
  3176  		return nil
  3177  	}
  3178  	if cont, err := f(in); err != nil || !cont {
  3179  		return err
  3180  	}
  3181  	for _, el := range in {
  3182  		if err := VisitRefOfSetExpr(el, f); err != nil {
  3183  			return err
  3184  		}
  3185  	}
  3186  	return nil
  3187  }
  3188  func VisitRefOfShow(in *Show, f Visit) error {
  3189  	if in == nil {
  3190  		return nil
  3191  	}
  3192  	if cont, err := f(in); err != nil || !cont {
  3193  		return err
  3194  	}
  3195  	if err := VisitShowInternal(in.Internal, f); err != nil {
  3196  		return err
  3197  	}
  3198  	return nil
  3199  }
  3200  func VisitRefOfShowBasic(in *ShowBasic, f Visit) error {
  3201  	if in == nil {
  3202  		return nil
  3203  	}
  3204  	if cont, err := f(in); err != nil || !cont {
  3205  		return err
  3206  	}
  3207  	if err := VisitTableName(in.Tbl, f); err != nil {
  3208  		return err
  3209  	}
  3210  	if err := VisitIdentifierCS(in.DbName, f); err != nil {
  3211  		return err
  3212  	}
  3213  	if err := VisitRefOfShowFilter(in.Filter, f); err != nil {
  3214  		return err
  3215  	}
  3216  	return nil
  3217  }
  3218  func VisitRefOfShowCreate(in *ShowCreate, f Visit) error {
  3219  	if in == nil {
  3220  		return nil
  3221  	}
  3222  	if cont, err := f(in); err != nil || !cont {
  3223  		return err
  3224  	}
  3225  	if err := VisitTableName(in.Op, f); err != nil {
  3226  		return err
  3227  	}
  3228  	return nil
  3229  }
  3230  func VisitRefOfShowFilter(in *ShowFilter, f Visit) error {
  3231  	if in == nil {
  3232  		return nil
  3233  	}
  3234  	if cont, err := f(in); err != nil || !cont {
  3235  		return err
  3236  	}
  3237  	if err := VisitExpr(in.Filter, f); err != nil {
  3238  		return err
  3239  	}
  3240  	return nil
  3241  }
  3242  func VisitRefOfShowMigrationLogs(in *ShowMigrationLogs, f Visit) error {
  3243  	if in == nil {
  3244  		return nil
  3245  	}
  3246  	if cont, err := f(in); err != nil || !cont {
  3247  		return err
  3248  	}
  3249  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  3250  		return err
  3251  	}
  3252  	return nil
  3253  }
  3254  func VisitRefOfShowOther(in *ShowOther, f Visit) error {
  3255  	if in == nil {
  3256  		return nil
  3257  	}
  3258  	if cont, err := f(in); err != nil || !cont {
  3259  		return err
  3260  	}
  3261  	return nil
  3262  }
  3263  func VisitRefOfShowThrottledApps(in *ShowThrottledApps, f Visit) error {
  3264  	if in == nil {
  3265  		return nil
  3266  	}
  3267  	if cont, err := f(in); err != nil || !cont {
  3268  		return err
  3269  	}
  3270  	return nil
  3271  }
  3272  func VisitRefOfShowThrottlerStatus(in *ShowThrottlerStatus, f Visit) error {
  3273  	if in == nil {
  3274  		return nil
  3275  	}
  3276  	if cont, err := f(in); err != nil || !cont {
  3277  		return err
  3278  	}
  3279  	return nil
  3280  }
  3281  func VisitRefOfStarExpr(in *StarExpr, f Visit) error {
  3282  	if in == nil {
  3283  		return nil
  3284  	}
  3285  	if cont, err := f(in); err != nil || !cont {
  3286  		return err
  3287  	}
  3288  	if err := VisitTableName(in.TableName, f); err != nil {
  3289  		return err
  3290  	}
  3291  	return nil
  3292  }
  3293  func VisitRefOfStd(in *Std, f Visit) error {
  3294  	if in == nil {
  3295  		return nil
  3296  	}
  3297  	if cont, err := f(in); err != nil || !cont {
  3298  		return err
  3299  	}
  3300  	if err := VisitExpr(in.Arg, f); err != nil {
  3301  		return err
  3302  	}
  3303  	return nil
  3304  }
  3305  func VisitRefOfStdDev(in *StdDev, f Visit) error {
  3306  	if in == nil {
  3307  		return nil
  3308  	}
  3309  	if cont, err := f(in); err != nil || !cont {
  3310  		return err
  3311  	}
  3312  	if err := VisitExpr(in.Arg, f); err != nil {
  3313  		return err
  3314  	}
  3315  	return nil
  3316  }
  3317  func VisitRefOfStdPop(in *StdPop, f Visit) error {
  3318  	if in == nil {
  3319  		return nil
  3320  	}
  3321  	if cont, err := f(in); err != nil || !cont {
  3322  		return err
  3323  	}
  3324  	if err := VisitExpr(in.Arg, f); err != nil {
  3325  		return err
  3326  	}
  3327  	return nil
  3328  }
  3329  func VisitRefOfStdSamp(in *StdSamp, f Visit) error {
  3330  	if in == nil {
  3331  		return nil
  3332  	}
  3333  	if cont, err := f(in); err != nil || !cont {
  3334  		return err
  3335  	}
  3336  	if err := VisitExpr(in.Arg, f); err != nil {
  3337  		return err
  3338  	}
  3339  	return nil
  3340  }
  3341  func VisitRefOfStream(in *Stream, f Visit) error {
  3342  	if in == nil {
  3343  		return nil
  3344  	}
  3345  	if cont, err := f(in); err != nil || !cont {
  3346  		return err
  3347  	}
  3348  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  3349  		return err
  3350  	}
  3351  	if err := VisitSelectExpr(in.SelectExpr, f); err != nil {
  3352  		return err
  3353  	}
  3354  	if err := VisitTableName(in.Table, f); err != nil {
  3355  		return err
  3356  	}
  3357  	return nil
  3358  }
  3359  func VisitRefOfSubPartition(in *SubPartition, f Visit) error {
  3360  	if in == nil {
  3361  		return nil
  3362  	}
  3363  	if cont, err := f(in); err != nil || !cont {
  3364  		return err
  3365  	}
  3366  	if err := VisitColumns(in.ColList, f); err != nil {
  3367  		return err
  3368  	}
  3369  	if err := VisitExpr(in.Expr, f); err != nil {
  3370  		return err
  3371  	}
  3372  	return nil
  3373  }
  3374  func VisitRefOfSubPartitionDefinition(in *SubPartitionDefinition, f Visit) error {
  3375  	if in == nil {
  3376  		return nil
  3377  	}
  3378  	if cont, err := f(in); err != nil || !cont {
  3379  		return err
  3380  	}
  3381  	if err := VisitIdentifierCI(in.Name, f); err != nil {
  3382  		return err
  3383  	}
  3384  	if err := VisitRefOfSubPartitionDefinitionOptions(in.Options, f); err != nil {
  3385  		return err
  3386  	}
  3387  	return nil
  3388  }
  3389  func VisitRefOfSubPartitionDefinitionOptions(in *SubPartitionDefinitionOptions, f Visit) error {
  3390  	if in == nil {
  3391  		return nil
  3392  	}
  3393  	if cont, err := f(in); err != nil || !cont {
  3394  		return err
  3395  	}
  3396  	if err := VisitRefOfLiteral(in.Comment, f); err != nil {
  3397  		return err
  3398  	}
  3399  	if err := VisitRefOfPartitionEngine(in.Engine, f); err != nil {
  3400  		return err
  3401  	}
  3402  	if err := VisitRefOfLiteral(in.DataDirectory, f); err != nil {
  3403  		return err
  3404  	}
  3405  	if err := VisitRefOfLiteral(in.IndexDirectory, f); err != nil {
  3406  		return err
  3407  	}
  3408  	return nil
  3409  }
  3410  func VisitSubPartitionDefinitions(in SubPartitionDefinitions, f Visit) error {
  3411  	if in == nil {
  3412  		return nil
  3413  	}
  3414  	if cont, err := f(in); err != nil || !cont {
  3415  		return err
  3416  	}
  3417  	for _, el := range in {
  3418  		if err := VisitRefOfSubPartitionDefinition(el, f); err != nil {
  3419  			return err
  3420  		}
  3421  	}
  3422  	return nil
  3423  }
  3424  func VisitRefOfSubquery(in *Subquery, f Visit) error {
  3425  	if in == nil {
  3426  		return nil
  3427  	}
  3428  	if cont, err := f(in); err != nil || !cont {
  3429  		return err
  3430  	}
  3431  	if err := VisitSelectStatement(in.Select, f); err != nil {
  3432  		return err
  3433  	}
  3434  	return nil
  3435  }
  3436  func VisitRefOfSubstrExpr(in *SubstrExpr, f Visit) error {
  3437  	if in == nil {
  3438  		return nil
  3439  	}
  3440  	if cont, err := f(in); err != nil || !cont {
  3441  		return err
  3442  	}
  3443  	if err := VisitExpr(in.Name, f); err != nil {
  3444  		return err
  3445  	}
  3446  	if err := VisitExpr(in.From, f); err != nil {
  3447  		return err
  3448  	}
  3449  	if err := VisitExpr(in.To, f); err != nil {
  3450  		return err
  3451  	}
  3452  	return nil
  3453  }
  3454  func VisitRefOfSum(in *Sum, f Visit) error {
  3455  	if in == nil {
  3456  		return nil
  3457  	}
  3458  	if cont, err := f(in); err != nil || !cont {
  3459  		return err
  3460  	}
  3461  	if err := VisitExpr(in.Arg, f); err != nil {
  3462  		return err
  3463  	}
  3464  	return nil
  3465  }
  3466  func VisitTableExprs(in TableExprs, f Visit) error {
  3467  	if in == nil {
  3468  		return nil
  3469  	}
  3470  	if cont, err := f(in); err != nil || !cont {
  3471  		return err
  3472  	}
  3473  	for _, el := range in {
  3474  		if err := VisitTableExpr(el, f); err != nil {
  3475  			return err
  3476  		}
  3477  	}
  3478  	return nil
  3479  }
  3480  func VisitTableName(in TableName, f Visit) error {
  3481  	if cont, err := f(in); err != nil || !cont {
  3482  		return err
  3483  	}
  3484  	if err := VisitIdentifierCS(in.Name, f); err != nil {
  3485  		return err
  3486  	}
  3487  	if err := VisitIdentifierCS(in.Qualifier, f); err != nil {
  3488  		return err
  3489  	}
  3490  	return nil
  3491  }
  3492  func VisitTableNames(in TableNames, f Visit) error {
  3493  	if in == nil {
  3494  		return nil
  3495  	}
  3496  	if cont, err := f(in); err != nil || !cont {
  3497  		return err
  3498  	}
  3499  	for _, el := range in {
  3500  		if err := VisitTableName(el, f); err != nil {
  3501  			return err
  3502  		}
  3503  	}
  3504  	return nil
  3505  }
  3506  func VisitTableOptions(in TableOptions, f Visit) error {
  3507  	_, err := f(in)
  3508  	return err
  3509  }
  3510  func VisitRefOfTableSpec(in *TableSpec, f Visit) error {
  3511  	if in == nil {
  3512  		return nil
  3513  	}
  3514  	if cont, err := f(in); err != nil || !cont {
  3515  		return err
  3516  	}
  3517  	for _, el := range in.Columns {
  3518  		if err := VisitRefOfColumnDefinition(el, f); err != nil {
  3519  			return err
  3520  		}
  3521  	}
  3522  	for _, el := range in.Indexes {
  3523  		if err := VisitRefOfIndexDefinition(el, f); err != nil {
  3524  			return err
  3525  		}
  3526  	}
  3527  	for _, el := range in.Constraints {
  3528  		if err := VisitRefOfConstraintDefinition(el, f); err != nil {
  3529  			return err
  3530  		}
  3531  	}
  3532  	if err := VisitTableOptions(in.Options, f); err != nil {
  3533  		return err
  3534  	}
  3535  	if err := VisitRefOfPartitionOption(in.PartitionOption, f); err != nil {
  3536  		return err
  3537  	}
  3538  	return nil
  3539  }
  3540  func VisitRefOfTablespaceOperation(in *TablespaceOperation, f Visit) error {
  3541  	if in == nil {
  3542  		return nil
  3543  	}
  3544  	if cont, err := f(in); err != nil || !cont {
  3545  		return err
  3546  	}
  3547  	return nil
  3548  }
  3549  func VisitRefOfTimestampFuncExpr(in *TimestampFuncExpr, f Visit) error {
  3550  	if in == nil {
  3551  		return nil
  3552  	}
  3553  	if cont, err := f(in); err != nil || !cont {
  3554  		return err
  3555  	}
  3556  	if err := VisitExpr(in.Expr1, f); err != nil {
  3557  		return err
  3558  	}
  3559  	if err := VisitExpr(in.Expr2, f); err != nil {
  3560  		return err
  3561  	}
  3562  	return nil
  3563  }
  3564  func VisitRefOfTrimFuncExpr(in *TrimFuncExpr, f Visit) error {
  3565  	if in == nil {
  3566  		return nil
  3567  	}
  3568  	if cont, err := f(in); err != nil || !cont {
  3569  		return err
  3570  	}
  3571  	if err := VisitExpr(in.TrimArg, f); err != nil {
  3572  		return err
  3573  	}
  3574  	if err := VisitExpr(in.StringArg, f); err != nil {
  3575  		return err
  3576  	}
  3577  	return nil
  3578  }
  3579  func VisitRefOfTruncateTable(in *TruncateTable, f Visit) error {
  3580  	if in == nil {
  3581  		return nil
  3582  	}
  3583  	if cont, err := f(in); err != nil || !cont {
  3584  		return err
  3585  	}
  3586  	if err := VisitTableName(in.Table, f); err != nil {
  3587  		return err
  3588  	}
  3589  	return nil
  3590  }
  3591  func VisitRefOfUnaryExpr(in *UnaryExpr, f Visit) error {
  3592  	if in == nil {
  3593  		return nil
  3594  	}
  3595  	if cont, err := f(in); err != nil || !cont {
  3596  		return err
  3597  	}
  3598  	if err := VisitExpr(in.Expr, f); err != nil {
  3599  		return err
  3600  	}
  3601  	return nil
  3602  }
  3603  func VisitRefOfUnion(in *Union, f Visit) error {
  3604  	if in == nil {
  3605  		return nil
  3606  	}
  3607  	if cont, err := f(in); err != nil || !cont {
  3608  		return err
  3609  	}
  3610  	if err := VisitSelectStatement(in.Left, f); err != nil {
  3611  		return err
  3612  	}
  3613  	if err := VisitSelectStatement(in.Right, f); err != nil {
  3614  		return err
  3615  	}
  3616  	if err := VisitOrderBy(in.OrderBy, f); err != nil {
  3617  		return err
  3618  	}
  3619  	if err := VisitRefOfWith(in.With, f); err != nil {
  3620  		return err
  3621  	}
  3622  	if err := VisitRefOfLimit(in.Limit, f); err != nil {
  3623  		return err
  3624  	}
  3625  	if err := VisitRefOfSelectInto(in.Into, f); err != nil {
  3626  		return err
  3627  	}
  3628  	return nil
  3629  }
  3630  func VisitRefOfUnlockTables(in *UnlockTables, f Visit) error {
  3631  	if in == nil {
  3632  		return nil
  3633  	}
  3634  	if cont, err := f(in); err != nil || !cont {
  3635  		return err
  3636  	}
  3637  	return nil
  3638  }
  3639  func VisitRefOfUpdate(in *Update, f Visit) error {
  3640  	if in == nil {
  3641  		return nil
  3642  	}
  3643  	if cont, err := f(in); err != nil || !cont {
  3644  		return err
  3645  	}
  3646  	if err := VisitRefOfWith(in.With, f); err != nil {
  3647  		return err
  3648  	}
  3649  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  3650  		return err
  3651  	}
  3652  	if err := VisitTableExprs(in.TableExprs, f); err != nil {
  3653  		return err
  3654  	}
  3655  	if err := VisitUpdateExprs(in.Exprs, f); err != nil {
  3656  		return err
  3657  	}
  3658  	if err := VisitRefOfWhere(in.Where, f); err != nil {
  3659  		return err
  3660  	}
  3661  	if err := VisitOrderBy(in.OrderBy, f); err != nil {
  3662  		return err
  3663  	}
  3664  	if err := VisitRefOfLimit(in.Limit, f); err != nil {
  3665  		return err
  3666  	}
  3667  	return nil
  3668  }
  3669  func VisitRefOfUpdateExpr(in *UpdateExpr, f Visit) error {
  3670  	if in == nil {
  3671  		return nil
  3672  	}
  3673  	if cont, err := f(in); err != nil || !cont {
  3674  		return err
  3675  	}
  3676  	if err := VisitRefOfColName(in.Name, f); err != nil {
  3677  		return err
  3678  	}
  3679  	if err := VisitExpr(in.Expr, f); err != nil {
  3680  		return err
  3681  	}
  3682  	return nil
  3683  }
  3684  func VisitUpdateExprs(in UpdateExprs, f Visit) error {
  3685  	if in == nil {
  3686  		return nil
  3687  	}
  3688  	if cont, err := f(in); err != nil || !cont {
  3689  		return err
  3690  	}
  3691  	for _, el := range in {
  3692  		if err := VisitRefOfUpdateExpr(el, f); err != nil {
  3693  			return err
  3694  		}
  3695  	}
  3696  	return nil
  3697  }
  3698  func VisitRefOfUpdateXMLExpr(in *UpdateXMLExpr, f Visit) error {
  3699  	if in == nil {
  3700  		return nil
  3701  	}
  3702  	if cont, err := f(in); err != nil || !cont {
  3703  		return err
  3704  	}
  3705  	if err := VisitExpr(in.Target, f); err != nil {
  3706  		return err
  3707  	}
  3708  	if err := VisitExpr(in.XPathExpr, f); err != nil {
  3709  		return err
  3710  	}
  3711  	if err := VisitExpr(in.NewXML, f); err != nil {
  3712  		return err
  3713  	}
  3714  	return nil
  3715  }
  3716  func VisitRefOfUse(in *Use, f Visit) error {
  3717  	if in == nil {
  3718  		return nil
  3719  	}
  3720  	if cont, err := f(in); err != nil || !cont {
  3721  		return err
  3722  	}
  3723  	if err := VisitIdentifierCS(in.DBName, f); err != nil {
  3724  		return err
  3725  	}
  3726  	return nil
  3727  }
  3728  func VisitRefOfVExplainStmt(in *VExplainStmt, f Visit) error {
  3729  	if in == nil {
  3730  		return nil
  3731  	}
  3732  	if cont, err := f(in); err != nil || !cont {
  3733  		return err
  3734  	}
  3735  	if err := VisitStatement(in.Statement, f); err != nil {
  3736  		return err
  3737  	}
  3738  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  3739  		return err
  3740  	}
  3741  	return nil
  3742  }
  3743  func VisitRefOfVStream(in *VStream, f Visit) error {
  3744  	if in == nil {
  3745  		return nil
  3746  	}
  3747  	if cont, err := f(in); err != nil || !cont {
  3748  		return err
  3749  	}
  3750  	if err := VisitRefOfParsedComments(in.Comments, f); err != nil {
  3751  		return err
  3752  	}
  3753  	if err := VisitSelectExpr(in.SelectExpr, f); err != nil {
  3754  		return err
  3755  	}
  3756  	if err := VisitTableName(in.Table, f); err != nil {
  3757  		return err
  3758  	}
  3759  	if err := VisitRefOfWhere(in.Where, f); err != nil {
  3760  		return err
  3761  	}
  3762  	if err := VisitRefOfLimit(in.Limit, f); err != nil {
  3763  		return err
  3764  	}
  3765  	return nil
  3766  }
  3767  func VisitValTuple(in ValTuple, f Visit) error {
  3768  	if in == nil {
  3769  		return nil
  3770  	}
  3771  	if cont, err := f(in); err != nil || !cont {
  3772  		return err
  3773  	}
  3774  	for _, el := range in {
  3775  		if err := VisitExpr(el, f); err != nil {
  3776  			return err
  3777  		}
  3778  	}
  3779  	return nil
  3780  }
  3781  func VisitRefOfValidation(in *Validation, f Visit) error {
  3782  	if in == nil {
  3783  		return nil
  3784  	}
  3785  	if cont, err := f(in); err != nil || !cont {
  3786  		return err
  3787  	}
  3788  	return nil
  3789  }
  3790  func VisitValues(in Values, f Visit) error {
  3791  	if in == nil {
  3792  		return nil
  3793  	}
  3794  	if cont, err := f(in); err != nil || !cont {
  3795  		return err
  3796  	}
  3797  	for _, el := range in {
  3798  		if err := VisitValTuple(el, f); err != nil {
  3799  			return err
  3800  		}
  3801  	}
  3802  	return nil
  3803  }
  3804  func VisitRefOfValuesFuncExpr(in *ValuesFuncExpr, f Visit) error {
  3805  	if in == nil {
  3806  		return nil
  3807  	}
  3808  	if cont, err := f(in); err != nil || !cont {
  3809  		return err
  3810  	}
  3811  	if err := VisitRefOfColName(in.Name, f); err != nil {
  3812  		return err
  3813  	}
  3814  	return nil
  3815  }
  3816  func VisitRefOfVarPop(in *VarPop, f Visit) error {
  3817  	if in == nil {
  3818  		return nil
  3819  	}
  3820  	if cont, err := f(in); err != nil || !cont {
  3821  		return err
  3822  	}
  3823  	if err := VisitExpr(in.Arg, f); err != nil {
  3824  		return err
  3825  	}
  3826  	return nil
  3827  }
  3828  func VisitRefOfVarSamp(in *VarSamp, f Visit) error {
  3829  	if in == nil {
  3830  		return nil
  3831  	}
  3832  	if cont, err := f(in); err != nil || !cont {
  3833  		return err
  3834  	}
  3835  	if err := VisitExpr(in.Arg, f); err != nil {
  3836  		return err
  3837  	}
  3838  	return nil
  3839  }
  3840  func VisitRefOfVariable(in *Variable, f Visit) error {
  3841  	if in == nil {
  3842  		return nil
  3843  	}
  3844  	if cont, err := f(in); err != nil || !cont {
  3845  		return err
  3846  	}
  3847  	if err := VisitIdentifierCI(in.Name, f); err != nil {
  3848  		return err
  3849  	}
  3850  	return nil
  3851  }
  3852  func VisitRefOfVariance(in *Variance, f Visit) error {
  3853  	if in == nil {
  3854  		return nil
  3855  	}
  3856  	if cont, err := f(in); err != nil || !cont {
  3857  		return err
  3858  	}
  3859  	if err := VisitExpr(in.Arg, f); err != nil {
  3860  		return err
  3861  	}
  3862  	return nil
  3863  }
  3864  func VisitVindexParam(in VindexParam, f Visit) error {
  3865  	if cont, err := f(in); err != nil || !cont {
  3866  		return err
  3867  	}
  3868  	if err := VisitIdentifierCI(in.Key, f); err != nil {
  3869  		return err
  3870  	}
  3871  	return nil
  3872  }
  3873  func VisitRefOfVindexSpec(in *VindexSpec, f Visit) error {
  3874  	if in == nil {
  3875  		return nil
  3876  	}
  3877  	if cont, err := f(in); err != nil || !cont {
  3878  		return err
  3879  	}
  3880  	if err := VisitIdentifierCI(in.Name, f); err != nil {
  3881  		return err
  3882  	}
  3883  	if err := VisitIdentifierCI(in.Type, f); err != nil {
  3884  		return err
  3885  	}
  3886  	for _, el := range in.Params {
  3887  		if err := VisitVindexParam(el, f); err != nil {
  3888  			return err
  3889  		}
  3890  	}
  3891  	return nil
  3892  }
  3893  func VisitRefOfWeightStringFuncExpr(in *WeightStringFuncExpr, f Visit) error {
  3894  	if in == nil {
  3895  		return nil
  3896  	}
  3897  	if cont, err := f(in); err != nil || !cont {
  3898  		return err
  3899  	}
  3900  	if err := VisitExpr(in.Expr, f); err != nil {
  3901  		return err
  3902  	}
  3903  	if err := VisitRefOfConvertType(in.As, f); err != nil {
  3904  		return err
  3905  	}
  3906  	return nil
  3907  }
  3908  func VisitRefOfWhen(in *When, f Visit) error {
  3909  	if in == nil {
  3910  		return nil
  3911  	}
  3912  	if cont, err := f(in); err != nil || !cont {
  3913  		return err
  3914  	}
  3915  	if err := VisitExpr(in.Cond, f); err != nil {
  3916  		return err
  3917  	}
  3918  	if err := VisitExpr(in.Val, f); err != nil {
  3919  		return err
  3920  	}
  3921  	return nil
  3922  }
  3923  func VisitRefOfWhere(in *Where, f Visit) error {
  3924  	if in == nil {
  3925  		return nil
  3926  	}
  3927  	if cont, err := f(in); err != nil || !cont {
  3928  		return err
  3929  	}
  3930  	if err := VisitExpr(in.Expr, f); err != nil {
  3931  		return err
  3932  	}
  3933  	return nil
  3934  }
  3935  func VisitRefOfWindowDefinition(in *WindowDefinition, f Visit) error {
  3936  	if in == nil {
  3937  		return nil
  3938  	}
  3939  	if cont, err := f(in); err != nil || !cont {
  3940  		return err
  3941  	}
  3942  	if err := VisitIdentifierCI(in.Name, f); err != nil {
  3943  		return err
  3944  	}
  3945  	if err := VisitRefOfWindowSpecification(in.WindowSpec, f); err != nil {
  3946  		return err
  3947  	}
  3948  	return nil
  3949  }
  3950  func VisitWindowDefinitions(in WindowDefinitions, f Visit) error {
  3951  	if in == nil {
  3952  		return nil
  3953  	}
  3954  	if cont, err := f(in); err != nil || !cont {
  3955  		return err
  3956  	}
  3957  	for _, el := range in {
  3958  		if err := VisitRefOfWindowDefinition(el, f); err != nil {
  3959  			return err
  3960  		}
  3961  	}
  3962  	return nil
  3963  }
  3964  func VisitRefOfWindowSpecification(in *WindowSpecification, f Visit) error {
  3965  	if in == nil {
  3966  		return nil
  3967  	}
  3968  	if cont, err := f(in); err != nil || !cont {
  3969  		return err
  3970  	}
  3971  	if err := VisitIdentifierCI(in.Name, f); err != nil {
  3972  		return err
  3973  	}
  3974  	if err := VisitExprs(in.PartitionClause, f); err != nil {
  3975  		return err
  3976  	}
  3977  	if err := VisitOrderBy(in.OrderClause, f); err != nil {
  3978  		return err
  3979  	}
  3980  	if err := VisitRefOfFrameClause(in.FrameClause, f); err != nil {
  3981  		return err
  3982  	}
  3983  	return nil
  3984  }
  3985  func VisitRefOfWith(in *With, f Visit) error {
  3986  	if in == nil {
  3987  		return nil
  3988  	}
  3989  	if cont, err := f(in); err != nil || !cont {
  3990  		return err
  3991  	}
  3992  	for _, el := range in.ctes {
  3993  		if err := VisitRefOfCommonTableExpr(el, f); err != nil {
  3994  			return err
  3995  		}
  3996  	}
  3997  	return nil
  3998  }
  3999  func VisitRefOfXorExpr(in *XorExpr, f Visit) error {
  4000  	if in == nil {
  4001  		return nil
  4002  	}
  4003  	if cont, err := f(in); err != nil || !cont {
  4004  		return err
  4005  	}
  4006  	if err := VisitExpr(in.Left, f); err != nil {
  4007  		return err
  4008  	}
  4009  	if err := VisitExpr(in.Right, f); err != nil {
  4010  		return err
  4011  	}
  4012  	return nil
  4013  }
  4014  func VisitAggrFunc(in AggrFunc, f Visit) error {
  4015  	if in == nil {
  4016  		return nil
  4017  	}
  4018  	switch in := in.(type) {
  4019  	case *Avg:
  4020  		return VisitRefOfAvg(in, f)
  4021  	case *BitAnd:
  4022  		return VisitRefOfBitAnd(in, f)
  4023  	case *BitOr:
  4024  		return VisitRefOfBitOr(in, f)
  4025  	case *BitXor:
  4026  		return VisitRefOfBitXor(in, f)
  4027  	case *Count:
  4028  		return VisitRefOfCount(in, f)
  4029  	case *CountStar:
  4030  		return VisitRefOfCountStar(in, f)
  4031  	case *GroupConcatExpr:
  4032  		return VisitRefOfGroupConcatExpr(in, f)
  4033  	case *Max:
  4034  		return VisitRefOfMax(in, f)
  4035  	case *Min:
  4036  		return VisitRefOfMin(in, f)
  4037  	case *Std:
  4038  		return VisitRefOfStd(in, f)
  4039  	case *StdDev:
  4040  		return VisitRefOfStdDev(in, f)
  4041  	case *StdPop:
  4042  		return VisitRefOfStdPop(in, f)
  4043  	case *StdSamp:
  4044  		return VisitRefOfStdSamp(in, f)
  4045  	case *Sum:
  4046  		return VisitRefOfSum(in, f)
  4047  	case *VarPop:
  4048  		return VisitRefOfVarPop(in, f)
  4049  	case *VarSamp:
  4050  		return VisitRefOfVarSamp(in, f)
  4051  	case *Variance:
  4052  		return VisitRefOfVariance(in, f)
  4053  	default:
  4054  		// this should never happen
  4055  		return nil
  4056  	}
  4057  }
  4058  func VisitAlterOption(in AlterOption, f Visit) error {
  4059  	if in == nil {
  4060  		return nil
  4061  	}
  4062  	switch in := in.(type) {
  4063  	case *AddColumns:
  4064  		return VisitRefOfAddColumns(in, f)
  4065  	case *AddConstraintDefinition:
  4066  		return VisitRefOfAddConstraintDefinition(in, f)
  4067  	case *AddIndexDefinition:
  4068  		return VisitRefOfAddIndexDefinition(in, f)
  4069  	case AlgorithmValue:
  4070  		return VisitAlgorithmValue(in, f)
  4071  	case *AlterCharset:
  4072  		return VisitRefOfAlterCharset(in, f)
  4073  	case *AlterCheck:
  4074  		return VisitRefOfAlterCheck(in, f)
  4075  	case *AlterColumn:
  4076  		return VisitRefOfAlterColumn(in, f)
  4077  	case *AlterIndex:
  4078  		return VisitRefOfAlterIndex(in, f)
  4079  	case *ChangeColumn:
  4080  		return VisitRefOfChangeColumn(in, f)
  4081  	case *DropColumn:
  4082  		return VisitRefOfDropColumn(in, f)
  4083  	case *DropKey:
  4084  		return VisitRefOfDropKey(in, f)
  4085  	case *Force:
  4086  		return VisitRefOfForce(in, f)
  4087  	case *KeyState:
  4088  		return VisitRefOfKeyState(in, f)
  4089  	case *LockOption:
  4090  		return VisitRefOfLockOption(in, f)
  4091  	case *ModifyColumn:
  4092  		return VisitRefOfModifyColumn(in, f)
  4093  	case *OrderByOption:
  4094  		return VisitRefOfOrderByOption(in, f)
  4095  	case *RenameColumn:
  4096  		return VisitRefOfRenameColumn(in, f)
  4097  	case *RenameIndex:
  4098  		return VisitRefOfRenameIndex(in, f)
  4099  	case *RenameTableName:
  4100  		return VisitRefOfRenameTableName(in, f)
  4101  	case TableOptions:
  4102  		return VisitTableOptions(in, f)
  4103  	case *TablespaceOperation:
  4104  		return VisitRefOfTablespaceOperation(in, f)
  4105  	case *Validation:
  4106  		return VisitRefOfValidation(in, f)
  4107  	default:
  4108  		// this should never happen
  4109  		return nil
  4110  	}
  4111  }
  4112  func VisitCallable(in Callable, f Visit) error {
  4113  	if in == nil {
  4114  		return nil
  4115  	}
  4116  	switch in := in.(type) {
  4117  	case *ArgumentLessWindowExpr:
  4118  		return VisitRefOfArgumentLessWindowExpr(in, f)
  4119  	case *Avg:
  4120  		return VisitRefOfAvg(in, f)
  4121  	case *CharExpr:
  4122  		return VisitRefOfCharExpr(in, f)
  4123  	case *ConvertExpr:
  4124  		return VisitRefOfConvertExpr(in, f)
  4125  	case *ConvertUsingExpr:
  4126  		return VisitRefOfConvertUsingExpr(in, f)
  4127  	case *Count:
  4128  		return VisitRefOfCount(in, f)
  4129  	case *CountStar:
  4130  		return VisitRefOfCountStar(in, f)
  4131  	case *CurTimeFuncExpr:
  4132  		return VisitRefOfCurTimeFuncExpr(in, f)
  4133  	case *ExtractFuncExpr:
  4134  		return VisitRefOfExtractFuncExpr(in, f)
  4135  	case *ExtractValueExpr:
  4136  		return VisitRefOfExtractValueExpr(in, f)
  4137  	case *FirstOrLastValueExpr:
  4138  		return VisitRefOfFirstOrLastValueExpr(in, f)
  4139  	case *FuncExpr:
  4140  		return VisitRefOfFuncExpr(in, f)
  4141  	case *GTIDFuncExpr:
  4142  		return VisitRefOfGTIDFuncExpr(in, f)
  4143  	case *GroupConcatExpr:
  4144  		return VisitRefOfGroupConcatExpr(in, f)
  4145  	case *InsertExpr:
  4146  		return VisitRefOfInsertExpr(in, f)
  4147  	case *IntervalFuncExpr:
  4148  		return VisitRefOfIntervalFuncExpr(in, f)
  4149  	case *JSONArrayExpr:
  4150  		return VisitRefOfJSONArrayExpr(in, f)
  4151  	case *JSONAttributesExpr:
  4152  		return VisitRefOfJSONAttributesExpr(in, f)
  4153  	case *JSONContainsExpr:
  4154  		return VisitRefOfJSONContainsExpr(in, f)
  4155  	case *JSONContainsPathExpr:
  4156  		return VisitRefOfJSONContainsPathExpr(in, f)
  4157  	case *JSONExtractExpr:
  4158  		return VisitRefOfJSONExtractExpr(in, f)
  4159  	case *JSONKeysExpr:
  4160  		return VisitRefOfJSONKeysExpr(in, f)
  4161  	case *JSONObjectExpr:
  4162  		return VisitRefOfJSONObjectExpr(in, f)
  4163  	case *JSONOverlapsExpr:
  4164  		return VisitRefOfJSONOverlapsExpr(in, f)
  4165  	case *JSONPrettyExpr:
  4166  		return VisitRefOfJSONPrettyExpr(in, f)
  4167  	case *JSONQuoteExpr:
  4168  		return VisitRefOfJSONQuoteExpr(in, f)
  4169  	case *JSONRemoveExpr:
  4170  		return VisitRefOfJSONRemoveExpr(in, f)
  4171  	case *JSONSchemaValidFuncExpr:
  4172  		return VisitRefOfJSONSchemaValidFuncExpr(in, f)
  4173  	case *JSONSchemaValidationReportFuncExpr:
  4174  		return VisitRefOfJSONSchemaValidationReportFuncExpr(in, f)
  4175  	case *JSONSearchExpr:
  4176  		return VisitRefOfJSONSearchExpr(in, f)
  4177  	case *JSONStorageFreeExpr:
  4178  		return VisitRefOfJSONStorageFreeExpr(in, f)
  4179  	case *JSONStorageSizeExpr:
  4180  		return VisitRefOfJSONStorageSizeExpr(in, f)
  4181  	case *JSONUnquoteExpr:
  4182  		return VisitRefOfJSONUnquoteExpr(in, f)
  4183  	case *JSONValueExpr:
  4184  		return VisitRefOfJSONValueExpr(in, f)
  4185  	case *JSONValueMergeExpr:
  4186  		return VisitRefOfJSONValueMergeExpr(in, f)
  4187  	case *JSONValueModifierExpr:
  4188  		return VisitRefOfJSONValueModifierExpr(in, f)
  4189  	case *LagLeadExpr:
  4190  		return VisitRefOfLagLeadExpr(in, f)
  4191  	case *LocateExpr:
  4192  		return VisitRefOfLocateExpr(in, f)
  4193  	case *MatchExpr:
  4194  		return VisitRefOfMatchExpr(in, f)
  4195  	case *Max:
  4196  		return VisitRefOfMax(in, f)
  4197  	case *MemberOfExpr:
  4198  		return VisitRefOfMemberOfExpr(in, f)
  4199  	case *Min:
  4200  		return VisitRefOfMin(in, f)
  4201  	case *NTHValueExpr:
  4202  		return VisitRefOfNTHValueExpr(in, f)
  4203  	case *NamedWindow:
  4204  		return VisitRefOfNamedWindow(in, f)
  4205  	case *NtileExpr:
  4206  		return VisitRefOfNtileExpr(in, f)
  4207  	case *PerformanceSchemaFuncExpr:
  4208  		return VisitRefOfPerformanceSchemaFuncExpr(in, f)
  4209  	case *RegexpInstrExpr:
  4210  		return VisitRefOfRegexpInstrExpr(in, f)
  4211  	case *RegexpLikeExpr:
  4212  		return VisitRefOfRegexpLikeExpr(in, f)
  4213  	case *RegexpReplaceExpr:
  4214  		return VisitRefOfRegexpReplaceExpr(in, f)
  4215  	case *RegexpSubstrExpr:
  4216  		return VisitRefOfRegexpSubstrExpr(in, f)
  4217  	case *SubstrExpr:
  4218  		return VisitRefOfSubstrExpr(in, f)
  4219  	case *Sum:
  4220  		return VisitRefOfSum(in, f)
  4221  	case *TimestampFuncExpr:
  4222  		return VisitRefOfTimestampFuncExpr(in, f)
  4223  	case *TrimFuncExpr:
  4224  		return VisitRefOfTrimFuncExpr(in, f)
  4225  	case *UpdateXMLExpr:
  4226  		return VisitRefOfUpdateXMLExpr(in, f)
  4227  	case *ValuesFuncExpr:
  4228  		return VisitRefOfValuesFuncExpr(in, f)
  4229  	case *WeightStringFuncExpr:
  4230  		return VisitRefOfWeightStringFuncExpr(in, f)
  4231  	default:
  4232  		// this should never happen
  4233  		return nil
  4234  	}
  4235  }
  4236  func VisitColTuple(in ColTuple, f Visit) error {
  4237  	if in == nil {
  4238  		return nil
  4239  	}
  4240  	switch in := in.(type) {
  4241  	case ListArg:
  4242  		return VisitListArg(in, f)
  4243  	case *Subquery:
  4244  		return VisitRefOfSubquery(in, f)
  4245  	case ValTuple:
  4246  		return VisitValTuple(in, f)
  4247  	default:
  4248  		// this should never happen
  4249  		return nil
  4250  	}
  4251  }
  4252  func VisitConstraintInfo(in ConstraintInfo, f Visit) error {
  4253  	if in == nil {
  4254  		return nil
  4255  	}
  4256  	switch in := in.(type) {
  4257  	case *CheckConstraintDefinition:
  4258  		return VisitRefOfCheckConstraintDefinition(in, f)
  4259  	case *ForeignKeyDefinition:
  4260  		return VisitRefOfForeignKeyDefinition(in, f)
  4261  	default:
  4262  		// this should never happen
  4263  		return nil
  4264  	}
  4265  }
  4266  func VisitDBDDLStatement(in DBDDLStatement, f Visit) error {
  4267  	if in == nil {
  4268  		return nil
  4269  	}
  4270  	switch in := in.(type) {
  4271  	case *AlterDatabase:
  4272  		return VisitRefOfAlterDatabase(in, f)
  4273  	case *CreateDatabase:
  4274  		return VisitRefOfCreateDatabase(in, f)
  4275  	case *DropDatabase:
  4276  		return VisitRefOfDropDatabase(in, f)
  4277  	default:
  4278  		// this should never happen
  4279  		return nil
  4280  	}
  4281  }
  4282  func VisitDDLStatement(in DDLStatement, f Visit) error {
  4283  	if in == nil {
  4284  		return nil
  4285  	}
  4286  	switch in := in.(type) {
  4287  	case *AlterTable:
  4288  		return VisitRefOfAlterTable(in, f)
  4289  	case *AlterView:
  4290  		return VisitRefOfAlterView(in, f)
  4291  	case *CreateTable:
  4292  		return VisitRefOfCreateTable(in, f)
  4293  	case *CreateView:
  4294  		return VisitRefOfCreateView(in, f)
  4295  	case *DropTable:
  4296  		return VisitRefOfDropTable(in, f)
  4297  	case *DropView:
  4298  		return VisitRefOfDropView(in, f)
  4299  	case *RenameTable:
  4300  		return VisitRefOfRenameTable(in, f)
  4301  	case *TruncateTable:
  4302  		return VisitRefOfTruncateTable(in, f)
  4303  	default:
  4304  		// this should never happen
  4305  		return nil
  4306  	}
  4307  }
  4308  func VisitExplain(in Explain, f Visit) error {
  4309  	if in == nil {
  4310  		return nil
  4311  	}
  4312  	switch in := in.(type) {
  4313  	case *ExplainStmt:
  4314  		return VisitRefOfExplainStmt(in, f)
  4315  	case *ExplainTab:
  4316  		return VisitRefOfExplainTab(in, f)
  4317  	default:
  4318  		// this should never happen
  4319  		return nil
  4320  	}
  4321  }
  4322  func VisitExpr(in Expr, f Visit) error {
  4323  	if in == nil {
  4324  		return nil
  4325  	}
  4326  	switch in := in.(type) {
  4327  	case *AndExpr:
  4328  		return VisitRefOfAndExpr(in, f)
  4329  	case Argument:
  4330  		return VisitArgument(in, f)
  4331  	case *ArgumentLessWindowExpr:
  4332  		return VisitRefOfArgumentLessWindowExpr(in, f)
  4333  	case *Avg:
  4334  		return VisitRefOfAvg(in, f)
  4335  	case *BetweenExpr:
  4336  		return VisitRefOfBetweenExpr(in, f)
  4337  	case *BinaryExpr:
  4338  		return VisitRefOfBinaryExpr(in, f)
  4339  	case *BitAnd:
  4340  		return VisitRefOfBitAnd(in, f)
  4341  	case *BitOr:
  4342  		return VisitRefOfBitOr(in, f)
  4343  	case *BitXor:
  4344  		return VisitRefOfBitXor(in, f)
  4345  	case BoolVal:
  4346  		return VisitBoolVal(in, f)
  4347  	case *CaseExpr:
  4348  		return VisitRefOfCaseExpr(in, f)
  4349  	case *CastExpr:
  4350  		return VisitRefOfCastExpr(in, f)
  4351  	case *CharExpr:
  4352  		return VisitRefOfCharExpr(in, f)
  4353  	case *ColName:
  4354  		return VisitRefOfColName(in, f)
  4355  	case *CollateExpr:
  4356  		return VisitRefOfCollateExpr(in, f)
  4357  	case *ComparisonExpr:
  4358  		return VisitRefOfComparisonExpr(in, f)
  4359  	case *ConvertExpr:
  4360  		return VisitRefOfConvertExpr(in, f)
  4361  	case *ConvertUsingExpr:
  4362  		return VisitRefOfConvertUsingExpr(in, f)
  4363  	case *Count:
  4364  		return VisitRefOfCount(in, f)
  4365  	case *CountStar:
  4366  		return VisitRefOfCountStar(in, f)
  4367  	case *CurTimeFuncExpr:
  4368  		return VisitRefOfCurTimeFuncExpr(in, f)
  4369  	case *Default:
  4370  		return VisitRefOfDefault(in, f)
  4371  	case *ExistsExpr:
  4372  		return VisitRefOfExistsExpr(in, f)
  4373  	case *ExtractFuncExpr:
  4374  		return VisitRefOfExtractFuncExpr(in, f)
  4375  	case *ExtractValueExpr:
  4376  		return VisitRefOfExtractValueExpr(in, f)
  4377  	case *ExtractedSubquery:
  4378  		return VisitRefOfExtractedSubquery(in, f)
  4379  	case *FirstOrLastValueExpr:
  4380  		return VisitRefOfFirstOrLastValueExpr(in, f)
  4381  	case *FuncExpr:
  4382  		return VisitRefOfFuncExpr(in, f)
  4383  	case *GTIDFuncExpr:
  4384  		return VisitRefOfGTIDFuncExpr(in, f)
  4385  	case *GroupConcatExpr:
  4386  		return VisitRefOfGroupConcatExpr(in, f)
  4387  	case *InsertExpr:
  4388  		return VisitRefOfInsertExpr(in, f)
  4389  	case *IntervalExpr:
  4390  		return VisitRefOfIntervalExpr(in, f)
  4391  	case *IntervalFuncExpr:
  4392  		return VisitRefOfIntervalFuncExpr(in, f)
  4393  	case *IntroducerExpr:
  4394  		return VisitRefOfIntroducerExpr(in, f)
  4395  	case *IsExpr:
  4396  		return VisitRefOfIsExpr(in, f)
  4397  	case *JSONArrayExpr:
  4398  		return VisitRefOfJSONArrayExpr(in, f)
  4399  	case *JSONAttributesExpr:
  4400  		return VisitRefOfJSONAttributesExpr(in, f)
  4401  	case *JSONContainsExpr:
  4402  		return VisitRefOfJSONContainsExpr(in, f)
  4403  	case *JSONContainsPathExpr:
  4404  		return VisitRefOfJSONContainsPathExpr(in, f)
  4405  	case *JSONExtractExpr:
  4406  		return VisitRefOfJSONExtractExpr(in, f)
  4407  	case *JSONKeysExpr:
  4408  		return VisitRefOfJSONKeysExpr(in, f)
  4409  	case *JSONObjectExpr:
  4410  		return VisitRefOfJSONObjectExpr(in, f)
  4411  	case *JSONOverlapsExpr:
  4412  		return VisitRefOfJSONOverlapsExpr(in, f)
  4413  	case *JSONPrettyExpr:
  4414  		return VisitRefOfJSONPrettyExpr(in, f)
  4415  	case *JSONQuoteExpr:
  4416  		return VisitRefOfJSONQuoteExpr(in, f)
  4417  	case *JSONRemoveExpr:
  4418  		return VisitRefOfJSONRemoveExpr(in, f)
  4419  	case *JSONSchemaValidFuncExpr:
  4420  		return VisitRefOfJSONSchemaValidFuncExpr(in, f)
  4421  	case *JSONSchemaValidationReportFuncExpr:
  4422  		return VisitRefOfJSONSchemaValidationReportFuncExpr(in, f)
  4423  	case *JSONSearchExpr:
  4424  		return VisitRefOfJSONSearchExpr(in, f)
  4425  	case *JSONStorageFreeExpr:
  4426  		return VisitRefOfJSONStorageFreeExpr(in, f)
  4427  	case *JSONStorageSizeExpr:
  4428  		return VisitRefOfJSONStorageSizeExpr(in, f)
  4429  	case *JSONUnquoteExpr:
  4430  		return VisitRefOfJSONUnquoteExpr(in, f)
  4431  	case *JSONValueExpr:
  4432  		return VisitRefOfJSONValueExpr(in, f)
  4433  	case *JSONValueMergeExpr:
  4434  		return VisitRefOfJSONValueMergeExpr(in, f)
  4435  	case *JSONValueModifierExpr:
  4436  		return VisitRefOfJSONValueModifierExpr(in, f)
  4437  	case *LagLeadExpr:
  4438  		return VisitRefOfLagLeadExpr(in, f)
  4439  	case ListArg:
  4440  		return VisitListArg(in, f)
  4441  	case *Literal:
  4442  		return VisitRefOfLiteral(in, f)
  4443  	case *LocateExpr:
  4444  		return VisitRefOfLocateExpr(in, f)
  4445  	case *LockingFunc:
  4446  		return VisitRefOfLockingFunc(in, f)
  4447  	case *MatchExpr:
  4448  		return VisitRefOfMatchExpr(in, f)
  4449  	case *Max:
  4450  		return VisitRefOfMax(in, f)
  4451  	case *MemberOfExpr:
  4452  		return VisitRefOfMemberOfExpr(in, f)
  4453  	case *Min:
  4454  		return VisitRefOfMin(in, f)
  4455  	case *NTHValueExpr:
  4456  		return VisitRefOfNTHValueExpr(in, f)
  4457  	case *NamedWindow:
  4458  		return VisitRefOfNamedWindow(in, f)
  4459  	case *NotExpr:
  4460  		return VisitRefOfNotExpr(in, f)
  4461  	case *NtileExpr:
  4462  		return VisitRefOfNtileExpr(in, f)
  4463  	case *NullVal:
  4464  		return VisitRefOfNullVal(in, f)
  4465  	case *Offset:
  4466  		return VisitRefOfOffset(in, f)
  4467  	case *OrExpr:
  4468  		return VisitRefOfOrExpr(in, f)
  4469  	case *PerformanceSchemaFuncExpr:
  4470  		return VisitRefOfPerformanceSchemaFuncExpr(in, f)
  4471  	case *RegexpInstrExpr:
  4472  		return VisitRefOfRegexpInstrExpr(in, f)
  4473  	case *RegexpLikeExpr:
  4474  		return VisitRefOfRegexpLikeExpr(in, f)
  4475  	case *RegexpReplaceExpr:
  4476  		return VisitRefOfRegexpReplaceExpr(in, f)
  4477  	case *RegexpSubstrExpr:
  4478  		return VisitRefOfRegexpSubstrExpr(in, f)
  4479  	case *Std:
  4480  		return VisitRefOfStd(in, f)
  4481  	case *StdDev:
  4482  		return VisitRefOfStdDev(in, f)
  4483  	case *StdPop:
  4484  		return VisitRefOfStdPop(in, f)
  4485  	case *StdSamp:
  4486  		return VisitRefOfStdSamp(in, f)
  4487  	case *Subquery:
  4488  		return VisitRefOfSubquery(in, f)
  4489  	case *SubstrExpr:
  4490  		return VisitRefOfSubstrExpr(in, f)
  4491  	case *Sum:
  4492  		return VisitRefOfSum(in, f)
  4493  	case *TimestampFuncExpr:
  4494  		return VisitRefOfTimestampFuncExpr(in, f)
  4495  	case *TrimFuncExpr:
  4496  		return VisitRefOfTrimFuncExpr(in, f)
  4497  	case *UnaryExpr:
  4498  		return VisitRefOfUnaryExpr(in, f)
  4499  	case *UpdateXMLExpr:
  4500  		return VisitRefOfUpdateXMLExpr(in, f)
  4501  	case ValTuple:
  4502  		return VisitValTuple(in, f)
  4503  	case *ValuesFuncExpr:
  4504  		return VisitRefOfValuesFuncExpr(in, f)
  4505  	case *VarPop:
  4506  		return VisitRefOfVarPop(in, f)
  4507  	case *VarSamp:
  4508  		return VisitRefOfVarSamp(in, f)
  4509  	case *Variable:
  4510  		return VisitRefOfVariable(in, f)
  4511  	case *Variance:
  4512  		return VisitRefOfVariance(in, f)
  4513  	case *WeightStringFuncExpr:
  4514  		return VisitRefOfWeightStringFuncExpr(in, f)
  4515  	case *XorExpr:
  4516  		return VisitRefOfXorExpr(in, f)
  4517  	default:
  4518  		// this should never happen
  4519  		return nil
  4520  	}
  4521  }
  4522  func VisitInsertRows(in InsertRows, f Visit) error {
  4523  	if in == nil {
  4524  		return nil
  4525  	}
  4526  	switch in := in.(type) {
  4527  	case *Select:
  4528  		return VisitRefOfSelect(in, f)
  4529  	case *Union:
  4530  		return VisitRefOfUnion(in, f)
  4531  	case Values:
  4532  		return VisitValues(in, f)
  4533  	default:
  4534  		// this should never happen
  4535  		return nil
  4536  	}
  4537  }
  4538  func VisitSelectExpr(in SelectExpr, f Visit) error {
  4539  	if in == nil {
  4540  		return nil
  4541  	}
  4542  	switch in := in.(type) {
  4543  	case *AliasedExpr:
  4544  		return VisitRefOfAliasedExpr(in, f)
  4545  	case *Nextval:
  4546  		return VisitRefOfNextval(in, f)
  4547  	case *StarExpr:
  4548  		return VisitRefOfStarExpr(in, f)
  4549  	default:
  4550  		// this should never happen
  4551  		return nil
  4552  	}
  4553  }
  4554  func VisitSelectStatement(in SelectStatement, f Visit) error {
  4555  	if in == nil {
  4556  		return nil
  4557  	}
  4558  	switch in := in.(type) {
  4559  	case *Select:
  4560  		return VisitRefOfSelect(in, f)
  4561  	case *Union:
  4562  		return VisitRefOfUnion(in, f)
  4563  	default:
  4564  		// this should never happen
  4565  		return nil
  4566  	}
  4567  }
  4568  func VisitShowInternal(in ShowInternal, f Visit) error {
  4569  	if in == nil {
  4570  		return nil
  4571  	}
  4572  	switch in := in.(type) {
  4573  	case *ShowBasic:
  4574  		return VisitRefOfShowBasic(in, f)
  4575  	case *ShowCreate:
  4576  		return VisitRefOfShowCreate(in, f)
  4577  	case *ShowOther:
  4578  		return VisitRefOfShowOther(in, f)
  4579  	default:
  4580  		// this should never happen
  4581  		return nil
  4582  	}
  4583  }
  4584  func VisitSimpleTableExpr(in SimpleTableExpr, f Visit) error {
  4585  	if in == nil {
  4586  		return nil
  4587  	}
  4588  	switch in := in.(type) {
  4589  	case *DerivedTable:
  4590  		return VisitRefOfDerivedTable(in, f)
  4591  	case TableName:
  4592  		return VisitTableName(in, f)
  4593  	default:
  4594  		// this should never happen
  4595  		return nil
  4596  	}
  4597  }
  4598  func VisitStatement(in Statement, f Visit) error {
  4599  	if in == nil {
  4600  		return nil
  4601  	}
  4602  	switch in := in.(type) {
  4603  	case *AlterDatabase:
  4604  		return VisitRefOfAlterDatabase(in, f)
  4605  	case *AlterMigration:
  4606  		return VisitRefOfAlterMigration(in, f)
  4607  	case *AlterTable:
  4608  		return VisitRefOfAlterTable(in, f)
  4609  	case *AlterView:
  4610  		return VisitRefOfAlterView(in, f)
  4611  	case *AlterVschema:
  4612  		return VisitRefOfAlterVschema(in, f)
  4613  	case *Begin:
  4614  		return VisitRefOfBegin(in, f)
  4615  	case *CallProc:
  4616  		return VisitRefOfCallProc(in, f)
  4617  	case *CommentOnly:
  4618  		return VisitRefOfCommentOnly(in, f)
  4619  	case *Commit:
  4620  		return VisitRefOfCommit(in, f)
  4621  	case *CreateDatabase:
  4622  		return VisitRefOfCreateDatabase(in, f)
  4623  	case *CreateTable:
  4624  		return VisitRefOfCreateTable(in, f)
  4625  	case *CreateView:
  4626  		return VisitRefOfCreateView(in, f)
  4627  	case *DeallocateStmt:
  4628  		return VisitRefOfDeallocateStmt(in, f)
  4629  	case *Delete:
  4630  		return VisitRefOfDelete(in, f)
  4631  	case *DropDatabase:
  4632  		return VisitRefOfDropDatabase(in, f)
  4633  	case *DropTable:
  4634  		return VisitRefOfDropTable(in, f)
  4635  	case *DropView:
  4636  		return VisitRefOfDropView(in, f)
  4637  	case *ExecuteStmt:
  4638  		return VisitRefOfExecuteStmt(in, f)
  4639  	case *ExplainStmt:
  4640  		return VisitRefOfExplainStmt(in, f)
  4641  	case *ExplainTab:
  4642  		return VisitRefOfExplainTab(in, f)
  4643  	case *Flush:
  4644  		return VisitRefOfFlush(in, f)
  4645  	case *Insert:
  4646  		return VisitRefOfInsert(in, f)
  4647  	case *Load:
  4648  		return VisitRefOfLoad(in, f)
  4649  	case *LockTables:
  4650  		return VisitRefOfLockTables(in, f)
  4651  	case *OtherAdmin:
  4652  		return VisitRefOfOtherAdmin(in, f)
  4653  	case *OtherRead:
  4654  		return VisitRefOfOtherRead(in, f)
  4655  	case *PrepareStmt:
  4656  		return VisitRefOfPrepareStmt(in, f)
  4657  	case *Release:
  4658  		return VisitRefOfRelease(in, f)
  4659  	case *RenameTable:
  4660  		return VisitRefOfRenameTable(in, f)
  4661  	case *RevertMigration:
  4662  		return VisitRefOfRevertMigration(in, f)
  4663  	case *Rollback:
  4664  		return VisitRefOfRollback(in, f)
  4665  	case *SRollback:
  4666  		return VisitRefOfSRollback(in, f)
  4667  	case *Savepoint:
  4668  		return VisitRefOfSavepoint(in, f)
  4669  	case *Select:
  4670  		return VisitRefOfSelect(in, f)
  4671  	case *Set:
  4672  		return VisitRefOfSet(in, f)
  4673  	case *Show:
  4674  		return VisitRefOfShow(in, f)
  4675  	case *ShowMigrationLogs:
  4676  		return VisitRefOfShowMigrationLogs(in, f)
  4677  	case *ShowThrottledApps:
  4678  		return VisitRefOfShowThrottledApps(in, f)
  4679  	case *ShowThrottlerStatus:
  4680  		return VisitRefOfShowThrottlerStatus(in, f)
  4681  	case *Stream:
  4682  		return VisitRefOfStream(in, f)
  4683  	case *TruncateTable:
  4684  		return VisitRefOfTruncateTable(in, f)
  4685  	case *Union:
  4686  		return VisitRefOfUnion(in, f)
  4687  	case *UnlockTables:
  4688  		return VisitRefOfUnlockTables(in, f)
  4689  	case *Update:
  4690  		return VisitRefOfUpdate(in, f)
  4691  	case *Use:
  4692  		return VisitRefOfUse(in, f)
  4693  	case *VExplainStmt:
  4694  		return VisitRefOfVExplainStmt(in, f)
  4695  	case *VStream:
  4696  		return VisitRefOfVStream(in, f)
  4697  	default:
  4698  		// this should never happen
  4699  		return nil
  4700  	}
  4701  }
  4702  func VisitTableExpr(in TableExpr, f Visit) error {
  4703  	if in == nil {
  4704  		return nil
  4705  	}
  4706  	switch in := in.(type) {
  4707  	case *AliasedTableExpr:
  4708  		return VisitRefOfAliasedTableExpr(in, f)
  4709  	case *JSONTableExpr:
  4710  		return VisitRefOfJSONTableExpr(in, f)
  4711  	case *JoinTableExpr:
  4712  		return VisitRefOfJoinTableExpr(in, f)
  4713  	case *ParenTableExpr:
  4714  		return VisitRefOfParenTableExpr(in, f)
  4715  	default:
  4716  		// this should never happen
  4717  		return nil
  4718  	}
  4719  }
  4720  func VisitAlgorithmValue(in AlgorithmValue, f Visit) error {
  4721  	_, err := f(in)
  4722  	return err
  4723  }
  4724  func VisitArgument(in Argument, f Visit) error {
  4725  	_, err := f(in)
  4726  	return err
  4727  }
  4728  func VisitBoolVal(in BoolVal, f Visit) error {
  4729  	_, err := f(in)
  4730  	return err
  4731  }
  4732  func VisitListArg(in ListArg, f Visit) error {
  4733  	_, err := f(in)
  4734  	return err
  4735  }
  4736  func VisitMatchAction(in MatchAction, f Visit) error {
  4737  	_, err := f(in)
  4738  	return err
  4739  }
  4740  func VisitReferenceAction(in ReferenceAction, f Visit) error {
  4741  	_, err := f(in)
  4742  	return err
  4743  }
  4744  func VisitRefOfIdentifierCI(in *IdentifierCI, f Visit) error {
  4745  	if in == nil {
  4746  		return nil
  4747  	}
  4748  	if cont, err := f(in); err != nil || !cont {
  4749  		return err
  4750  	}
  4751  	return nil
  4752  }
  4753  func VisitRefOfIdentifierCS(in *IdentifierCS, f Visit) error {
  4754  	if in == nil {
  4755  		return nil
  4756  	}
  4757  	if cont, err := f(in); err != nil || !cont {
  4758  		return err
  4759  	}
  4760  	return nil
  4761  }
  4762  func VisitRefOfRootNode(in *RootNode, f Visit) error {
  4763  	if in == nil {
  4764  		return nil
  4765  	}
  4766  	if cont, err := f(in); err != nil || !cont {
  4767  		return err
  4768  	}
  4769  	if err := VisitSQLNode(in.SQLNode, f); err != nil {
  4770  		return err
  4771  	}
  4772  	return nil
  4773  }
  4774  func VisitRefOfTableName(in *TableName, f Visit) error {
  4775  	if in == nil {
  4776  		return nil
  4777  	}
  4778  	if cont, err := f(in); err != nil || !cont {
  4779  		return err
  4780  	}
  4781  	if err := VisitIdentifierCS(in.Name, f); err != nil {
  4782  		return err
  4783  	}
  4784  	if err := VisitIdentifierCS(in.Qualifier, f); err != nil {
  4785  		return err
  4786  	}
  4787  	return nil
  4788  }
  4789  func VisitRefOfVindexParam(in *VindexParam, f Visit) error {
  4790  	if in == nil {
  4791  		return nil
  4792  	}
  4793  	if cont, err := f(in); err != nil || !cont {
  4794  		return err
  4795  	}
  4796  	if err := VisitIdentifierCI(in.Key, f); err != nil {
  4797  		return err
  4798  	}
  4799  	return nil
  4800  }