package util.sqlparse.visitor;

import com.chenyang.druid.sql.ast.SQLAdhocTableSource;
import com.chenyang.druid.sql.ast.SQLAnnIndex;
import com.chenyang.druid.sql.ast.SQLArgument;
import com.chenyang.druid.sql.ast.SQLArrayDataType;
import com.chenyang.druid.sql.ast.SQLCommentHint;
import com.chenyang.druid.sql.ast.SQLCurrentTimeExpr;
import com.chenyang.druid.sql.ast.SQLCurrentUserExpr;
import com.chenyang.druid.sql.ast.SQLDataType;
import com.chenyang.druid.sql.ast.SQLDataTypeRefExpr;
import com.chenyang.druid.sql.ast.SQLDeclareItem;
import com.chenyang.druid.sql.ast.SQLExpr;
import com.chenyang.druid.sql.ast.SQLIndexDefinition;
import com.chenyang.druid.sql.ast.SQLIndexOptions;
import com.chenyang.druid.sql.ast.SQLKeep;
import com.chenyang.druid.sql.ast.SQLLimit;
import com.chenyang.druid.sql.ast.SQLMapDataType;
import com.chenyang.druid.sql.ast.SQLObject;
import com.chenyang.druid.sql.ast.SQLOrderBy;
import com.chenyang.druid.sql.ast.SQLOver;
import com.chenyang.druid.sql.ast.SQLParameter;
import com.chenyang.druid.sql.ast.SQLPartition;
import com.chenyang.druid.sql.ast.SQLPartitionByHash;
import com.chenyang.druid.sql.ast.SQLPartitionByList;
import com.chenyang.druid.sql.ast.SQLPartitionByRange;
import com.chenyang.druid.sql.ast.SQLPartitionByValue;
import com.chenyang.druid.sql.ast.SQLPartitionSpec;
import com.chenyang.druid.sql.ast.SQLPartitionValue;
import com.chenyang.druid.sql.ast.SQLRecordDataType;
import com.chenyang.druid.sql.ast.SQLRowDataType;
import com.chenyang.druid.sql.ast.SQLStructDataType;
import com.chenyang.druid.sql.ast.SQLSubPartition;
import com.chenyang.druid.sql.ast.SQLSubPartitionByHash;
import com.chenyang.druid.sql.ast.SQLSubPartitionByList;
import com.chenyang.druid.sql.ast.SQLSubPartitionByRange;
import com.chenyang.druid.sql.ast.SQLUnionDataType;
import com.chenyang.druid.sql.ast.SQLWindow;
import com.chenyang.druid.sql.ast.expr.SQLAggregateExpr;
import com.chenyang.druid.sql.ast.expr.SQLAllColumnExpr;
import com.chenyang.druid.sql.ast.expr.SQLAllExpr;
import com.chenyang.druid.sql.ast.expr.SQLAnyExpr;
import com.chenyang.druid.sql.ast.expr.SQLArrayExpr;
import com.chenyang.druid.sql.ast.expr.SQLBetweenExpr;
import com.chenyang.druid.sql.ast.expr.SQLBigIntExpr;
import com.chenyang.druid.sql.ast.expr.SQLBinaryExpr;
import com.chenyang.druid.sql.ast.expr.SQLBinaryOpExpr;
import com.chenyang.druid.sql.ast.expr.SQLBinaryOpExprGroup;
import com.chenyang.druid.sql.ast.expr.SQLBooleanExpr;
import com.chenyang.druid.sql.ast.expr.SQLCaseExpr;
import com.chenyang.druid.sql.ast.expr.SQLCaseStatement;
import com.chenyang.druid.sql.ast.expr.SQLCastExpr;
import com.chenyang.druid.sql.ast.expr.SQLCharExpr;
import com.chenyang.druid.sql.ast.expr.SQLContainsExpr;
import com.chenyang.druid.sql.ast.expr.SQLCurrentOfCursorExpr;
import com.chenyang.druid.sql.ast.expr.SQLDateExpr;
import com.chenyang.druid.sql.ast.expr.SQLDateTimeExpr;
import com.chenyang.druid.sql.ast.expr.SQLDbLinkExpr;
import com.chenyang.druid.sql.ast.expr.SQLDecimalExpr;
import com.chenyang.druid.sql.ast.expr.SQLDefaultExpr;
import com.chenyang.druid.sql.ast.expr.SQLDoubleExpr;
import com.chenyang.druid.sql.ast.expr.SQLExistsExpr;
import com.chenyang.druid.sql.ast.expr.SQLExtractExpr;
import com.chenyang.druid.sql.ast.expr.SQLFlashbackExpr;
import com.chenyang.druid.sql.ast.expr.SQLFloatExpr;
import com.chenyang.druid.sql.ast.expr.SQLGroupingSetExpr;
import com.chenyang.druid.sql.ast.expr.SQLHexExpr;
import com.chenyang.druid.sql.ast.expr.SQLIdentifierExpr;
import com.chenyang.druid.sql.ast.expr.SQLInListExpr;
import com.chenyang.druid.sql.ast.expr.SQLInSubQueryExpr;
import com.chenyang.druid.sql.ast.expr.SQLIntegerExpr;
import com.chenyang.druid.sql.ast.expr.SQLIntervalExpr;
import com.chenyang.druid.sql.ast.expr.SQLJSONExpr;
import com.chenyang.druid.sql.ast.expr.SQLListExpr;
import com.chenyang.druid.sql.ast.expr.SQLMatchAgainstExpr;
import com.chenyang.druid.sql.ast.expr.SQLMethodInvokeExpr;
import com.chenyang.druid.sql.ast.expr.SQLNCharExpr;
import com.chenyang.druid.sql.ast.expr.SQLNotExpr;
import com.chenyang.druid.sql.ast.expr.SQLNullExpr;
import com.chenyang.druid.sql.ast.expr.SQLNumberExpr;
import com.chenyang.druid.sql.ast.expr.SQLPropertyExpr;
import com.chenyang.druid.sql.ast.expr.SQLQueryExpr;
import com.chenyang.druid.sql.ast.expr.SQLRealExpr;
import com.chenyang.druid.sql.ast.expr.SQLSequenceExpr;
import com.chenyang.druid.sql.ast.expr.SQLSizeExpr;
import com.chenyang.druid.sql.ast.expr.SQLSmallIntExpr;
import com.chenyang.druid.sql.ast.expr.SQLSomeExpr;
import com.chenyang.druid.sql.ast.expr.SQLTimeExpr;
import com.chenyang.druid.sql.ast.expr.SQLTimestampExpr;
import com.chenyang.druid.sql.ast.expr.SQLTinyIntExpr;
import com.chenyang.druid.sql.ast.expr.SQLUnaryExpr;
import com.chenyang.druid.sql.ast.expr.SQLValuableExpr;
import com.chenyang.druid.sql.ast.expr.SQLValuesExpr;
import com.chenyang.druid.sql.ast.expr.SQLVariantRefExpr;
import com.chenyang.druid.sql.ast.statement.SQLAlterCharacter;
import com.chenyang.druid.sql.ast.statement.SQLAlterDatabaseStatement;
import com.chenyang.druid.sql.ast.statement.SQLAlterFunctionStatement;
import com.chenyang.druid.sql.ast.statement.SQLAlterIndexStatement;
import com.chenyang.druid.sql.ast.statement.SQLAlterMaterializedViewStatement;
import com.chenyang.druid.sql.ast.statement.SQLAlterOutlineStatement;
import com.chenyang.druid.sql.ast.statement.SQLAlterProcedureStatement;
import com.chenyang.druid.sql.ast.statement.SQLAlterSequenceStatement;
import com.chenyang.druid.sql.ast.statement.SQLAlterSetDateFormatStatement;
import com.chenyang.druid.sql.ast.statement.SQLAlterSetNlsDateLanguageStatement;
import com.chenyang.druid.sql.ast.statement.SQLAlterSystemGetConfigStatement;
import com.chenyang.druid.sql.ast.statement.SQLAlterSystemSetConfigStatement;
import com.chenyang.druid.sql.ast.statement.SQLAlterSystemStatement;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableAddClusteringKey;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableAddColumn;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableAddConstraint;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableAddExtPartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableAddIndex;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableAddPartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableAddSupplemental;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableAlterColumn;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableAnalyzePartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableArchivePartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableBlockSize;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableCheckPartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableCoalescePartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableCompression;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableConvertCharSet;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableDeleteByCondition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableDisableConstraint;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableDisableKeys;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableDisableLifecycle;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableDisableTriggers;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableDiscardPartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableDropCheck;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableDropClusteringKey;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableDropColumnItem;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableDropConstraint;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableDropExtPartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableDropForeignKey;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableDropIndex;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableDropKey;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableDropPartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableDropPrimaryKey;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableDropSubpartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableEnableConstraint;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableEnableKeys;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableEnableLifecycle;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableEnableTriggers;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableExchangePartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableGroupStatement;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableImportPartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableMergePartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableModifyClusteredBy;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableOptimizePartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTablePartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTablePartitionCount;
import com.chenyang.druid.sql.ast.statement.SQLAlterTablePartitionLifecycle;
import com.chenyang.druid.sql.ast.statement.SQLAlterTablePartitionSetProperties;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableReOrganizePartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableRebuildPartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableRecoverPartitions;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableRename;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableRenameColumn;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableRenameIndex;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableRenamePartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableRepairPartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableReplaceColumn;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableSetComment;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableSetLifecycle;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableSetLocation;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableSetOption;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableStatement;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableSubpartitionAvailablePartitionNum;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableSubpartitionLifecycle;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableTouch;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableTruncatePartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTableUnarchivePartition;
import com.chenyang.druid.sql.ast.statement.SQLAlterTablespaceAddDatafile;
import com.chenyang.druid.sql.ast.statement.SQLAlterTablespaceCache;
import com.chenyang.druid.sql.ast.statement.SQLAlterTablespaceDatafile;
import com.chenyang.druid.sql.ast.statement.SQLAlterTablespaceRename;
import com.chenyang.druid.sql.ast.statement.SQLAlterTablespaceRenameDatafile;
import com.chenyang.druid.sql.ast.statement.SQLAlterTablespaceResizeDatafile;
import com.chenyang.druid.sql.ast.statement.SQLAlterTablespaceStatement;
import com.chenyang.druid.sql.ast.statement.SQLAlterTypeStatement;
import com.chenyang.druid.sql.ast.statement.SQLAlterUserStatement;
import com.chenyang.druid.sql.ast.statement.SQLAlterViewRenameStatement;
import com.chenyang.druid.sql.ast.statement.SQLAlterViewStatement;
import com.chenyang.druid.sql.ast.statement.SQLAnalyzeTableStatement;
import com.chenyang.druid.sql.ast.statement.SQLArchiveTableStatement;
import com.chenyang.druid.sql.ast.statement.SQLAssignItem;
import com.chenyang.druid.sql.ast.statement.SQLBackupStatement;
import com.chenyang.druid.sql.ast.statement.SQLBlockStatement;
import com.chenyang.druid.sql.ast.statement.SQLBuildTableStatement;
import com.chenyang.druid.sql.ast.statement.SQLCallStatement;
import com.chenyang.druid.sql.ast.statement.SQLCancelJobStatement;
import com.chenyang.druid.sql.ast.statement.SQLCharacterDataType;
import com.chenyang.druid.sql.ast.statement.SQLCheck;
import com.chenyang.druid.sql.ast.statement.SQLCloseStatement;
import com.chenyang.druid.sql.ast.statement.SQLColumnCheck;
import com.chenyang.druid.sql.ast.statement.SQLColumnDefinition;
import com.chenyang.druid.sql.ast.statement.SQLColumnPrimaryKey;
import com.chenyang.druid.sql.ast.statement.SQLColumnReference;
import com.chenyang.druid.sql.ast.statement.SQLColumnUniqueKey;
import com.chenyang.druid.sql.ast.statement.SQLCommentStatement;
import com.chenyang.druid.sql.ast.statement.SQLCommitStatement;
import com.chenyang.druid.sql.ast.statement.SQLCopyFromStatement;
import com.chenyang.druid.sql.ast.statement.SQLCreateContextStatement;
import com.chenyang.druid.sql.ast.statement.SQLCreateDatabaseStatement;
import com.chenyang.druid.sql.ast.statement.SQLCreateDirectoryStatement;
import com.chenyang.druid.sql.ast.statement.SQLCreateDomainStatement;
import com.chenyang.druid.sql.ast.statement.SQLCreateFunctionStatement;
import com.chenyang.druid.sql.ast.statement.SQLCreateIndexStatement;
import com.chenyang.druid.sql.ast.statement.SQLCreateMaterializedViewStatement;
import com.chenyang.druid.sql.ast.statement.SQLCreateOutlineStatement;
import com.chenyang.druid.sql.ast.statement.SQLCreateProcedureStatement;
import com.chenyang.druid.sql.ast.statement.SQLCreateRoleStatement;
import com.chenyang.druid.sql.ast.statement.SQLCreateSequenceStatement;
import com.chenyang.druid.sql.ast.statement.SQLCreateTableGroupStatement;
import com.chenyang.druid.sql.ast.statement.SQLCreateTableStatement;
import com.chenyang.druid.sql.ast.statement.SQLCreateTablespaceStatement;
import com.chenyang.druid.sql.ast.statement.SQLCreateTriggerStatement;
import com.chenyang.druid.sql.ast.statement.SQLCreateUserStatement;
import com.chenyang.druid.sql.ast.statement.SQLCreateViewStatement;
import com.chenyang.druid.sql.ast.statement.SQLDeclareStatement;
import com.chenyang.druid.sql.ast.statement.SQLDefault;
import com.chenyang.druid.sql.ast.statement.SQLDeleteStatement;
import com.chenyang.druid.sql.ast.statement.SQLDescribeStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropCatalogStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropContextStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropDatabaseStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropDirectoryStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropDomainStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropEventStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropFunctionStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropIndexStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropLogFileGroupStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropMaterializedViewStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropOutlineStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropPackageStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropProcedureStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropResourceGroupStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropResourceStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropRoleStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropSequenceStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropServerStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropSynonymStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropTableGroupStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropTableSpaceStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropTableStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropTriggerStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropTypeStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropUserStatement;
import com.chenyang.druid.sql.ast.statement.SQLDropViewStatement;
import com.chenyang.druid.sql.ast.statement.SQLDumpStatement;
import com.chenyang.druid.sql.ast.statement.SQLErrorLoggingClause;
import com.chenyang.druid.sql.ast.statement.SQLExplainAnalyzeStatement;
import com.chenyang.druid.sql.ast.statement.SQLExplainStatement;
import com.chenyang.druid.sql.ast.statement.SQLExportDatabaseStatement;
import com.chenyang.druid.sql.ast.statement.SQLExportTableStatement;
import com.chenyang.druid.sql.ast.statement.SQLExprHint;
import com.chenyang.druid.sql.ast.statement.SQLExprStatement;
import com.chenyang.druid.sql.ast.statement.SQLExprTableSource;
import com.chenyang.druid.sql.ast.statement.SQLExternalRecordFormat;
import com.chenyang.druid.sql.ast.statement.SQLFetchStatement;
import com.chenyang.druid.sql.ast.statement.SQLForStatement;
import com.chenyang.druid.sql.ast.statement.SQLForeignKeyImpl;
import com.chenyang.druid.sql.ast.statement.SQLGrantStatement;
import com.chenyang.druid.sql.ast.statement.SQLIfStatement;
import com.chenyang.druid.sql.ast.statement.SQLImportDatabaseStatement;
import com.chenyang.druid.sql.ast.statement.SQLImportTableStatement;
import com.chenyang.druid.sql.ast.statement.SQLInsertStatement;
import com.chenyang.druid.sql.ast.statement.SQLJoinTableSource;
import com.chenyang.druid.sql.ast.statement.SQLLateralViewTableSource;
import com.chenyang.druid.sql.ast.statement.SQLLoadIndexIntoCacheStatement;
import com.chenyang.druid.sql.ast.statement.SQLLoopStatement;
import com.chenyang.druid.sql.ast.statement.SQLMergeStatement;
import com.chenyang.druid.sql.ast.statement.SQLNotNullConstraint;
import com.chenyang.druid.sql.ast.statement.SQLNullConstraint;
import com.chenyang.druid.sql.ast.statement.SQLOpenStatement;
import com.chenyang.druid.sql.ast.statement.SQLPartitionRef;
import com.chenyang.druid.sql.ast.statement.SQLPrimaryKeyImpl;
import com.chenyang.druid.sql.ast.statement.SQLPrivilegeItem;
import com.chenyang.druid.sql.ast.statement.SQLPurgeLogsStatement;
import com.chenyang.druid.sql.ast.statement.SQLPurgeRecyclebinStatement;
import com.chenyang.druid.sql.ast.statement.SQLPurgeTableStatement;
import com.chenyang.druid.sql.ast.statement.SQLRefreshMaterializedViewStatement;
import com.chenyang.druid.sql.ast.statement.SQLReleaseSavePointStatement;
import com.chenyang.druid.sql.ast.statement.SQLRenameUserStatement;
import com.chenyang.druid.sql.ast.statement.SQLReplaceStatement;
import com.chenyang.druid.sql.ast.statement.SQLRestoreStatement;
import com.chenyang.druid.sql.ast.statement.SQLReturnStatement;
import com.chenyang.druid.sql.ast.statement.SQLRevokeStatement;
import com.chenyang.druid.sql.ast.statement.SQLRollbackStatement;
import com.chenyang.druid.sql.ast.statement.SQLSavePointStatement;
import com.chenyang.druid.sql.ast.statement.SQLScriptCommitStatement;
import com.chenyang.druid.sql.ast.statement.SQLSelect;
import com.chenyang.druid.sql.ast.statement.SQLSelectGroupByClause;
import com.chenyang.druid.sql.ast.statement.SQLSelectItem;
import com.chenyang.druid.sql.ast.statement.SQLSelectOrderByItem;
import com.chenyang.druid.sql.ast.statement.SQLSelectQueryBlock;
import com.chenyang.druid.sql.ast.statement.SQLSelectStatement;
import com.chenyang.druid.sql.ast.statement.SQLSetSchemaStatement;
import com.chenyang.druid.sql.ast.statement.SQLSetStatement;
import com.chenyang.druid.sql.ast.statement.SQLSetTimeZoneStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowCatalogsStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowColumnsStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowCreateMaterializedViewStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowCreateTableStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowCreateViewStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowDatabasesStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowErrorsStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowFunctionsStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowGrantsStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowIndexesStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowMaterializedViewStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowOutlinesStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowPackagesStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowPartitionsStmt;
import com.chenyang.druid.sql.ast.statement.SQLShowProcessListStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowQueryTaskStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowRecylebinStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowSessionStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowStatisticListStmt;
import com.chenyang.druid.sql.ast.statement.SQLShowStatisticStmt;
import com.chenyang.druid.sql.ast.statement.SQLShowTableGroupsStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowTablesStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowUsersStatement;
import com.chenyang.druid.sql.ast.statement.SQLShowViewsStatement;
import com.chenyang.druid.sql.ast.statement.SQLStartTransactionStatement;
import com.chenyang.druid.sql.ast.statement.SQLSubmitJobStatement;
import com.chenyang.druid.sql.ast.statement.SQLSubqueryTableSource;
import com.chenyang.druid.sql.ast.statement.SQLSyncMetaStatement;
import com.chenyang.druid.sql.ast.statement.SQLTableLike;
import com.chenyang.druid.sql.ast.statement.SQLTableSampling;
import com.chenyang.druid.sql.ast.statement.SQLTruncateStatement;
import com.chenyang.druid.sql.ast.statement.SQLUnionQuery;
import com.chenyang.druid.sql.ast.statement.SQLUnionQueryTableSource;
import com.chenyang.druid.sql.ast.statement.SQLUnique;
import com.chenyang.druid.sql.ast.statement.SQLUnnestTableSource;
import com.chenyang.druid.sql.ast.statement.SQLUpdateSetItem;
import com.chenyang.druid.sql.ast.statement.SQLUpdateStatement;
import com.chenyang.druid.sql.ast.statement.SQLUseStatement;
import com.chenyang.druid.sql.ast.statement.SQLValuesQuery;
import com.chenyang.druid.sql.ast.statement.SQLValuesTableSource;
import com.chenyang.druid.sql.ast.statement.SQLWhileStatement;
import com.chenyang.druid.sql.ast.statement.SQLWhoamiStatement;
import com.chenyang.druid.sql.ast.statement.SQLWithSubqueryClause;
import com.chenyang.druid.sql.dialect.hive.ast.HiveInputOutputFormat;
import com.chenyang.druid.sql.dialect.hive.ast.stmt.HiveCreateTableStatement;
import com.chenyang.druid.sql.dialect.mysql.ast.statement.MySqlKillStatement;
import com.chenyang.druid.sql.dialect.mysql.ast.statement.SQLAlterResourceGroupStatement;
import com.chenyang.druid.sql.dialect.mysql.ast.statement.SQLCreateResourceGroupStatement;
import com.chenyang.druid.sql.dialect.mysql.ast.statement.SQLListResourceGroupStatement;
import com.chenyang.druid.sql.visitor.SQLASTVisitor;
import java.util.List;

public class Formater implements SQLASTVisitor {
   public boolean visit(SQLOrderBy orderby) {
      List<SQLSelectOrderByItem> items = orderby.getItems();
      if (items != null && items.size() != 0) {
         for(SQLSelectOrderByItem item : items) {
            SQLExpr expr = item.getExpr();
            if (expr != null) {
               item.setExpr(this.templateFormat(expr));
            }
         }

         return true;
      } else {
         return true;
      }
   }

   public boolean visit(SQLSelectItem c) {
      SQLExpr expr = c.getExpr();
      if (expr != null) {
         c.setExpr(this.templateFormat(expr));
      }

      return true;
   }

   public boolean visit(SQLLimit limit) {
      SQLExpr rowCount = limit.getRowCount();
      if (rowCount != null) {
         limit.setRowCount(this.templateFormat(rowCount));
      }

      SQLExpr offset = limit.getOffset();
      if (offset != null) {
         limit.setOffset(this.templateFormat(offset));
      }

      return true;
   }

   public boolean visit(SQLUpdateSetItem item) {
      SQLExpr value = item.getValue();
      if (value != null) {
         item.setValue(this.templateFormat(value));
      }

      return true;
   }

   public boolean visit(SQLInsertStatement.ValuesClause c) {
      this.templateFormatCollection(c.getValues());
      return true;
   }

   public boolean visit(SQLMethodInvokeExpr invoke) {
      this.templateFormatCollection(invoke.getArguments());
      return true;
   }

   public boolean visit(SQLAggregateExpr agg) {
      this.templateFormatCollection(agg.getParameters());
      return true;
   }

   public boolean visit(SQLInListExpr c) {
      SQLExpr expr = c.getExpr();
      if (expr != null) {
         c.setExpr(this.templateFormat(expr));
      }

      this.templateFormatCollection(c.getTargetList());
      return true;
   }

   public boolean visit(SQLBetweenExpr c) {
      SQLExpr beginExpr = c.getBeginExpr();
      if (beginExpr != null) {
         c.setBeginExpr(this.templateFormat(beginExpr));
      }

      SQLExpr endExpr = c.getEndExpr();
      if (endExpr != null) {
         c.setEndExpr(this.templateFormat(endExpr));
      }

      SQLExpr testExpr = c.getTestExpr();
      if (testExpr != null) {
         c.setTestExpr(this.templateFormat(testExpr));
      }

      return true;
   }

   public boolean visit(SQLCaseExpr c) {
      for(SQLCaseExpr.Item item : c.getItems()) {
         SQLExpr conditionExpr = item.getConditionExpr();
         if (conditionExpr != null) {
            item.setConditionExpr(this.templateFormat(conditionExpr));
         }

         SQLExpr valueExpr = item.getValueExpr();
         if (valueExpr != null) {
            item.setValueExpr(this.templateFormat(valueExpr));
         }
      }

      SQLExpr elseExpr = c.getElseExpr();
      if (elseExpr != null) {
         c.setElseExpr(this.templateFormat(elseExpr));
      }

      return true;
   }

   public boolean visit(SQLBinaryOpExpr bin) {
      SQLExpr left = bin.getLeft();
      SQLExpr right = bin.getRight();
      if (left instanceof SQLValuableExpr) {
         SQLExpr val = new SQLVariantRefExpr("?");
         bin.setLeft(val);
      }

      if (right instanceof SQLValuableExpr) {
         SQLExpr val = new SQLVariantRefExpr("?");
         bin.setRight(val);
      }

      return true;
   }

   public boolean visit(SQLUnaryExpr e) {
      SQLExpr expr = e.getExpr();
      if (expr != null) {
         e.setExpr(this.templateFormat(expr));
      }

      return true;
   }

   private void templateFormatCollection(List<SQLExpr> parameters) {
      if (parameters != null && parameters.size() != 0) {
         for(int i = 0; i < parameters.size(); ++i) {
            SQLExpr sqlExpr = (SQLExpr)parameters.get(i);
            if (sqlExpr != null) {
               parameters.set(i, this.templateFormat(sqlExpr));
            }
         }

      }
   }

   private SQLExpr templateFormat(SQLExpr expr) {
      if (expr == null) {
         return expr;
      } else if (expr instanceof SQLValuableExpr) {
         SQLExpr val = new SQLVariantRefExpr("?");
         if (expr.getParent() != null) {
            val.setParent(expr.getParent());
            expr.setParent((SQLObject)null);
         }

         return val;
      } else {
         return expr;
      }
   }

   public void endVisit(SQLAllColumnExpr x) {
   }

   public void endVisit(SQLBetweenExpr x) {
   }

   public void endVisit(SQLBinaryOpExpr x) {
   }

   public void endVisit(SQLCaseExpr x) {
   }

   public void endVisit(SQLCaseExpr.Item x) {
   }

   public void endVisit(SQLCaseStatement x) {
   }

   public void endVisit(SQLCaseStatement.Item x) {
   }

   public void endVisit(SQLCharExpr x) {
   }

   public void endVisit(SQLIdentifierExpr x) {
   }

   public void endVisit(SQLInListExpr x) {
   }

   public void endVisit(SQLIntegerExpr x) {
   }

   public void endVisit(SQLSmallIntExpr x) {
   }

   public void endVisit(SQLBigIntExpr x) {
   }

   public void endVisit(SQLTinyIntExpr x) {
   }

   public void endVisit(SQLExistsExpr x) {
   }

   public void endVisit(SQLNCharExpr x) {
   }

   public void endVisit(SQLNotExpr x) {
   }

   public void endVisit(SQLNullExpr x) {
   }

   public void endVisit(SQLNumberExpr x) {
   }

   public void endVisit(SQLRealExpr x) {
   }

   public void endVisit(SQLPropertyExpr x) {
   }

   public void endVisit(SQLSelectGroupByClause x) {
   }

   public void endVisit(SQLSelectItem x) {
   }

   public void endVisit(SQLSelectStatement x) {
   }

   public void postVisit(SQLObject x) {
   }

   public void preVisit(SQLObject x) {
   }

   public boolean visit(SQLAllColumnExpr x) {
      return true;
   }

   public boolean visit(SQLCaseExpr.Item x) {
      return true;
   }

   public boolean visit(SQLCaseStatement x) {
      return true;
   }

   public boolean visit(SQLCaseStatement.Item x) {
      return true;
   }

   public boolean visit(SQLCastExpr x) {
      return true;
   }

   public boolean visit(SQLCharExpr x) {
      return true;
   }

   public boolean visit(SQLExistsExpr x) {
      return true;
   }

   public boolean visit(SQLIdentifierExpr x) {
      return true;
   }

   public boolean visit(SQLIntegerExpr x) {
      return true;
   }

   public boolean visit(SQLSmallIntExpr x) {
      return true;
   }

   public boolean visit(SQLBigIntExpr x) {
      return true;
   }

   public boolean visit(SQLTinyIntExpr x) {
      return true;
   }

   public boolean visit(SQLNCharExpr x) {
      return true;
   }

   public boolean visit(SQLNotExpr x) {
      return true;
   }

   public boolean visit(SQLNullExpr x) {
      return true;
   }

   public boolean visit(SQLNumberExpr x) {
      return true;
   }

   public boolean visit(SQLRealExpr x) {
      return true;
   }

   public boolean visit(SQLPropertyExpr x) {
      return true;
   }

   public boolean visit(SQLSelectGroupByClause x) {
      return true;
   }

   public void endVisit(SQLCastExpr x) {
   }

   public boolean visit(SQLSelectStatement x) {
      return true;
   }

   public void endVisit(SQLAggregateExpr x) {
   }

   public boolean visit(SQLVariantRefExpr x) {
      return true;
   }

   public void endVisit(SQLVariantRefExpr x) {
   }

   public boolean visit(SQLQueryExpr x) {
      return true;
   }

   public void endVisit(SQLQueryExpr x) {
   }

   public void endVisit(SQLUnaryExpr x) {
   }

   public boolean visit(SQLHexExpr x) {
      return true;
   }

   public void endVisit(SQLHexExpr x) {
   }

   public boolean visit(SQLSelect x) {
      return true;
   }

   public void endVisit(SQLSelect select) {
   }

   public boolean visit(SQLSelectQueryBlock x) {
      return true;
   }

   public void endVisit(SQLSelectQueryBlock x) {
   }

   public boolean visit(SQLExprTableSource x) {
      return true;
   }

   public void endVisit(SQLExprTableSource x) {
   }

   public void endVisit(SQLOrderBy x) {
   }

   public boolean visit(SQLSelectOrderByItem x) {
      return true;
   }

   public void endVisit(SQLSelectOrderByItem x) {
   }

   public boolean visit(SQLDropTableStatement x) {
      return true;
   }

   public void endVisit(SQLDropTableStatement x) {
   }

   public boolean visit(SQLCreateTableStatement x) {
      return true;
   }

   public void endVisit(SQLCreateTableStatement x) {
   }

   public boolean visit(SQLColumnDefinition x) {
      return true;
   }

   public void endVisit(SQLColumnDefinition x) {
   }

   public boolean visit(SQLColumnDefinition.Identity x) {
      return true;
   }

   public void endVisit(SQLColumnDefinition.Identity x) {
   }

   public boolean visit(SQLDataType x) {
      return true;
   }

   public void endVisit(SQLDataType x) {
   }

   public boolean visit(SQLCharacterDataType x) {
      return true;
   }

   public void endVisit(SQLCharacterDataType x) {
   }

   public boolean visit(SQLDeleteStatement x) {
      return true;
   }

   public void endVisit(SQLDeleteStatement x) {
   }

   public boolean visit(SQLCurrentOfCursorExpr x) {
      return true;
   }

   public void endVisit(SQLCurrentOfCursorExpr x) {
   }

   public boolean visit(SQLInsertStatement x) {
      return true;
   }

   public void endVisit(SQLInsertStatement x) {
   }

   public void endVisit(SQLInsertStatement.ValuesClause x) {
   }

   public void endVisit(SQLUpdateSetItem x) {
   }

   public boolean visit(SQLUpdateStatement x) {
      return true;
   }

   public void endVisit(SQLUpdateStatement x) {
   }

   public boolean visit(SQLCreateViewStatement x) {
      return true;
   }

   public void endVisit(SQLCreateViewStatement x) {
   }

   public boolean visit(SQLCreateViewStatement.Column x) {
      return true;
   }

   public void endVisit(SQLCreateViewStatement.Column x) {
   }

   public boolean visit(SQLNotNullConstraint x) {
      return true;
   }

   public void endVisit(SQLNotNullConstraint x) {
   }

   public void endVisit(SQLMethodInvokeExpr x) {
   }

   public void endVisit(SQLUnionQuery x) {
   }

   public boolean visit(SQLUnionQuery x) {
      return true;
   }

   public void endVisit(SQLSetStatement x) {
   }

   public boolean visit(SQLSetStatement x) {
      return true;
   }

   public void endVisit(SQLAssignItem x) {
   }

   public boolean visit(SQLAssignItem x) {
      return true;
   }

   public void endVisit(SQLCallStatement x) {
   }

   public boolean visit(SQLCallStatement x) {
      return true;
   }

   public void endVisit(SQLJoinTableSource x) {
   }

   public boolean visit(SQLJoinTableSource x) {
      return true;
   }

   public void endVisit(SQLJoinTableSource.UDJ x) {
   }

   public boolean visit(SQLJoinTableSource.UDJ x) {
      return true;
   }

   public void endVisit(SQLSomeExpr x) {
   }

   public boolean visit(SQLSomeExpr x) {
      return true;
   }

   public void endVisit(SQLAnyExpr x) {
   }

   public boolean visit(SQLAnyExpr x) {
      return true;
   }

   public void endVisit(SQLAllExpr x) {
   }

   public boolean visit(SQLAllExpr x) {
      return true;
   }

   public void endVisit(SQLInSubQueryExpr x) {
   }

   public boolean visit(SQLInSubQueryExpr x) {
      return true;
   }

   public void endVisit(SQLListExpr x) {
   }

   public boolean visit(SQLListExpr x) {
      return true;
   }

   public void endVisit(SQLSubqueryTableSource x) {
   }

   public boolean visit(SQLSubqueryTableSource x) {
      return true;
   }

   public void endVisit(SQLTruncateStatement x) {
   }

   public boolean visit(SQLTruncateStatement x) {
      return true;
   }

   public void endVisit(SQLDefaultExpr x) {
   }

   public boolean visit(SQLDefaultExpr x) {
      return true;
   }

   public void endVisit(SQLCommentStatement x) {
   }

   public boolean visit(SQLCommentStatement x) {
      return true;
   }

   public void endVisit(SQLUseStatement x) {
   }

   public boolean visit(SQLUseStatement x) {
      return true;
   }

   public boolean visit(SQLAlterTableAddColumn x) {
      return true;
   }

   public void endVisit(SQLAlterTableAddColumn x) {
   }

   public boolean visit(SQLAlterTableDeleteByCondition x) {
      return true;
   }

   public void endVisit(SQLAlterTableDeleteByCondition x) {
   }

   public boolean visit(SQLAlterTableModifyClusteredBy x) {
      return true;
   }

   public void endVisit(SQLAlterTableModifyClusteredBy x) {
   }

   public boolean visit(SQLAlterTableDropColumnItem x) {
      return true;
   }

   public void endVisit(SQLAlterTableDropColumnItem x) {
   }

   public boolean visit(SQLAlterTableDropIndex x) {
      return true;
   }

   public void endVisit(SQLAlterTableDropIndex x) {
   }

   public boolean visit(SQLAlterTableGroupStatement x) {
      return true;
   }

   public void endVisit(SQLAlterTableGroupStatement x) {
   }

   public boolean visit(SQLAlterSystemSetConfigStatement x) {
      return true;
   }

   public void endVisit(SQLAlterSystemSetConfigStatement x) {
   }

   public boolean visit(SQLAlterSystemGetConfigStatement x) {
      return true;
   }

   public void endVisit(SQLAlterSystemGetConfigStatement x) {
   }

   public boolean visit(SQLDropIndexStatement x) {
      return true;
   }

   public void endVisit(SQLDropIndexStatement x) {
   }

   public boolean visit(SQLDropViewStatement x) {
      return true;
   }

   public void endVisit(SQLDropViewStatement x) {
   }

   public boolean visit(SQLSavePointStatement x) {
      return true;
   }

   public void endVisit(SQLSavePointStatement x) {
   }

   public boolean visit(SQLRollbackStatement x) {
      return true;
   }

   public void endVisit(SQLRollbackStatement x) {
   }

   public boolean visit(SQLReleaseSavePointStatement x) {
      return true;
   }

   public void endVisit(SQLReleaseSavePointStatement x) {
   }

   public void endVisit(SQLCommentHint x) {
   }

   public boolean visit(SQLCommentHint x) {
      return true;
   }

   public void endVisit(SQLCreateDatabaseStatement x) {
   }

   public boolean visit(SQLCreateDatabaseStatement x) {
      return true;
   }

   public void endVisit(SQLOver x) {
   }

   public boolean visit(SQLOver x) {
      return true;
   }

   public void endVisit(SQLKeep x) {
   }

   public boolean visit(SQLKeep x) {
      return true;
   }

   public void endVisit(SQLColumnPrimaryKey x) {
   }

   public boolean visit(SQLColumnPrimaryKey x) {
      return true;
   }

   public boolean visit(SQLColumnUniqueKey x) {
      return true;
   }

   public void endVisit(SQLColumnUniqueKey x) {
   }

   public void endVisit(SQLWithSubqueryClause x) {
   }

   public boolean visit(SQLWithSubqueryClause x) {
      return true;
   }

   public void endVisit(SQLWithSubqueryClause.Entry x) {
   }

   public boolean visit(SQLWithSubqueryClause.Entry x) {
      return true;
   }

   public void endVisit(SQLAlterTableAlterColumn x) {
   }

   public boolean visit(SQLAlterTableAlterColumn x) {
      return true;
   }

   public boolean visit(SQLCheck x) {
      return true;
   }

   public void endVisit(SQLCheck x) {
   }

   public boolean visit(SQLDefault x) {
      return true;
   }

   public void endVisit(SQLDefault x) {
   }

   public boolean visit(SQLAlterTableDropForeignKey x) {
      return true;
   }

   public void endVisit(SQLAlterTableDropForeignKey x) {
   }

   public boolean visit(SQLAlterTableDropPrimaryKey x) {
      return true;
   }

   public void endVisit(SQLAlterTableDropPrimaryKey x) {
   }

   public boolean visit(SQLAlterTableDisableKeys x) {
      return true;
   }

   public void endVisit(SQLAlterTableDisableKeys x) {
   }

   public boolean visit(SQLAlterTableEnableKeys x) {
      return true;
   }

   public void endVisit(SQLAlterTableEnableKeys x) {
   }

   public boolean visit(SQLAlterTableStatement x) {
      return true;
   }

   public void endVisit(SQLAlterTableStatement x) {
   }

   public boolean visit(SQLAlterTableDisableConstraint x) {
      return true;
   }

   public void endVisit(SQLAlterTableDisableConstraint x) {
   }

   public boolean visit(SQLAlterTableEnableConstraint x) {
      return true;
   }

   public void endVisit(SQLAlterTableEnableConstraint x) {
   }

   public boolean visit(SQLColumnCheck x) {
      return true;
   }

   public void endVisit(SQLColumnCheck x) {
   }

   public boolean visit(SQLExprHint x) {
      return true;
   }

   public void endVisit(SQLExprHint x) {
   }

   public boolean visit(SQLAlterTableDropConstraint x) {
      return true;
   }

   public void endVisit(SQLAlterTableDropConstraint x) {
   }

   public boolean visit(SQLAlterTableDropCheck x) {
      return true;
   }

   public void endVisit(SQLAlterTableDropCheck x) {
   }

   public boolean visit(SQLUnique x) {
      return true;
   }

   public void endVisit(SQLUnique x) {
   }

   public boolean visit(SQLPrimaryKeyImpl x) {
      return true;
   }

   public void endVisit(SQLPrimaryKeyImpl x) {
   }

   public boolean visit(SQLCreateIndexStatement x) {
      return true;
   }

   public void endVisit(SQLCreateIndexStatement x) {
   }

   public boolean visit(SQLAlterTableRenameColumn x) {
      return true;
   }

   public void endVisit(SQLAlterTableRenameColumn x) {
   }

   public boolean visit(SQLColumnReference x) {
      return true;
   }

   public void endVisit(SQLColumnReference x) {
   }

   public boolean visit(SQLForeignKeyImpl x) {
      return true;
   }

   public void endVisit(SQLForeignKeyImpl x) {
   }

   public boolean visit(SQLDropSequenceStatement x) {
      return true;
   }

   public void endVisit(SQLDropSequenceStatement x) {
   }

   public boolean visit(SQLDropTriggerStatement x) {
      return true;
   }

   public void endVisit(SQLDropTriggerStatement x) {
   }

   public void endVisit(SQLDropUserStatement x) {
   }

   public boolean visit(SQLDropUserStatement x) {
      return true;
   }

   public void endVisit(SQLExplainStatement x) {
   }

   public boolean visit(SQLExplainStatement x) {
      return true;
   }

   public void endVisit(SQLGrantStatement x) {
   }

   public boolean visit(SQLGrantStatement x) {
      return true;
   }

   public void endVisit(SQLDropDatabaseStatement x) {
   }

   public boolean visit(SQLDropDatabaseStatement x) {
      return true;
   }

   public void endVisit(SQLIndexOptions x) {
   }

   public boolean visit(SQLIndexOptions x) {
      return true;
   }

   public void endVisit(SQLIndexDefinition x) {
   }

   public boolean visit(SQLIndexDefinition x) {
      return true;
   }

   public void endVisit(SQLAlterTableAddIndex x) {
   }

   public boolean visit(SQLAlterTableAddIndex x) {
      return true;
   }

   public void endVisit(SQLAlterTableAddConstraint x) {
   }

   public boolean visit(SQLAlterTableAddConstraint x) {
      return true;
   }

   public void endVisit(SQLCreateTriggerStatement x) {
   }

   public boolean visit(SQLCreateTriggerStatement x) {
      return true;
   }

   public void endVisit(SQLDropFunctionStatement x) {
   }

   public boolean visit(SQLDropFunctionStatement x) {
      return true;
   }

   public void endVisit(SQLDropTableSpaceStatement x) {
   }

   public boolean visit(SQLDropTableSpaceStatement x) {
      return true;
   }

   public void endVisit(SQLDropProcedureStatement x) {
   }

   public boolean visit(SQLDropProcedureStatement x) {
      return true;
   }

   public void endVisit(SQLBooleanExpr x) {
   }

   public boolean visit(SQLBooleanExpr x) {
      return true;
   }

   public void endVisit(SQLUnionQueryTableSource x) {
   }

   public boolean visit(SQLUnionQueryTableSource x) {
      return true;
   }

   public void endVisit(SQLTimestampExpr x) {
   }

   public boolean visit(SQLTimestampExpr x) {
      return true;
   }

   public void endVisit(SQLDateTimeExpr x) {
   }

   public boolean visit(SQLDateTimeExpr x) {
      return true;
   }

   public void endVisit(SQLDoubleExpr x) {
   }

   public boolean visit(SQLDoubleExpr x) {
      return true;
   }

   public void endVisit(SQLFloatExpr x) {
   }

   public boolean visit(SQLFloatExpr x) {
      return true;
   }

   public void endVisit(SQLRevokeStatement x) {
   }

   public boolean visit(SQLRevokeStatement x) {
      return true;
   }

   public void endVisit(SQLBinaryExpr x) {
   }

   public boolean visit(SQLBinaryExpr x) {
      return true;
   }

   public void endVisit(SQLAlterTableRename x) {
   }

   public boolean visit(SQLAlterTableRename x) {
      return true;
   }

   public void endVisit(SQLAlterViewRenameStatement x) {
   }

   public boolean visit(SQLAlterViewRenameStatement x) {
      return true;
   }

   public void endVisit(SQLShowTablesStatement x) {
   }

   public boolean visit(SQLShowTablesStatement x) {
      return true;
   }

   public void endVisit(SQLAlterTableAddPartition x) {
   }

   public boolean visit(SQLAlterTableAddPartition x) {
      return true;
   }

   public void endVisit(SQLAlterTableAddExtPartition x) {
   }

   public boolean visit(SQLAlterTableAddExtPartition x) {
      return true;
   }

   public void endVisit(SQLAlterTableDropExtPartition x) {
   }

   public boolean visit(SQLAlterTableDropExtPartition x) {
      return true;
   }

   public void endVisit(SQLAlterTableDropPartition x) {
   }

   public boolean visit(SQLAlterTableDropPartition x) {
      return true;
   }

   public void endVisit(SQLAlterTableRenamePartition x) {
   }

   public boolean visit(SQLAlterTableRenamePartition x) {
      return true;
   }

   public void endVisit(SQLAlterTableSetComment x) {
   }

   public boolean visit(SQLAlterTableSetComment x) {
      return true;
   }

   public void endVisit(SQLAlterTableSetLifecycle x) {
   }

   public boolean visit(SQLPrivilegeItem x) {
      return true;
   }

   public void endVisit(SQLPrivilegeItem x) {
   }

   public boolean visit(SQLAlterTableSetLifecycle x) {
      return true;
   }

   public void endVisit(SQLAlterTableEnableLifecycle x) {
   }

   public boolean visit(SQLAlterTableSetLocation x) {
      return true;
   }

   public void endVisit(SQLAlterTableSetLocation x) {
   }

   public boolean visit(SQLAlterTableEnableLifecycle x) {
      return true;
   }

   public void endVisit(SQLAlterTablePartition x) {
   }

   public boolean visit(SQLAlterTablePartition x) {
      return true;
   }

   public void endVisit(SQLAlterTablePartitionSetProperties x) {
   }

   public boolean visit(SQLAlterTablePartitionSetProperties x) {
      return true;
   }

   public void endVisit(SQLAlterTableDisableLifecycle x) {
   }

   public boolean visit(SQLAlterTableDisableLifecycle x) {
      return true;
   }

   public void endVisit(SQLAlterTableTouch x) {
   }

   public boolean visit(SQLAlterTableTouch x) {
      return true;
   }

   public void endVisit(SQLArrayExpr x) {
   }

   public boolean visit(SQLArrayExpr x) {
      return true;
   }

   public void endVisit(SQLOpenStatement x) {
   }

   public boolean visit(SQLOpenStatement x) {
      return true;
   }

   public void endVisit(SQLFetchStatement x) {
   }

   public boolean visit(SQLFetchStatement x) {
      return true;
   }

   public void endVisit(SQLCloseStatement x) {
   }

   public boolean visit(SQLCloseStatement x) {
      return true;
   }

   public boolean visit(SQLGroupingSetExpr x) {
      return true;
   }

   public void endVisit(SQLGroupingSetExpr x) {
   }

   public boolean visit(SQLIfStatement x) {
      return true;
   }

   public void endVisit(SQLIfStatement x) {
   }

   public boolean visit(SQLIfStatement.ElseIf x) {
      return true;
   }

   public void endVisit(SQLIfStatement.ElseIf x) {
   }

   public boolean visit(SQLIfStatement.Else x) {
      return true;
   }

   public void endVisit(SQLIfStatement.Else x) {
   }

   public boolean visit(SQLLoopStatement x) {
      return true;
   }

   public void endVisit(SQLLoopStatement x) {
   }

   public boolean visit(SQLParameter x) {
      return true;
   }

   public void endVisit(SQLParameter x) {
   }

   public boolean visit(SQLCreateProcedureStatement x) {
      return true;
   }

   public void endVisit(SQLCreateProcedureStatement x) {
   }

   public boolean visit(SQLCreateFunctionStatement x) {
      return true;
   }

   public void endVisit(SQLCreateFunctionStatement x) {
   }

   public boolean visit(SQLBlockStatement x) {
      return true;
   }

   public void endVisit(SQLBlockStatement x) {
   }

   public boolean visit(SQLAlterTableDropKey x) {
      return true;
   }

   public void endVisit(SQLAlterTableDropKey x) {
   }

   public boolean visit(SQLDeclareItem x) {
      return true;
   }

   public void endVisit(SQLDeclareItem x) {
   }

   public boolean visit(SQLPartitionValue x) {
      return true;
   }

   public void endVisit(SQLPartitionValue x) {
   }

   public boolean visit(SQLPartition x) {
      return true;
   }

   public void endVisit(SQLPartition x) {
   }

   public boolean visit(SQLPartitionByRange x) {
      return true;
   }

   public void endVisit(SQLPartitionByRange x) {
   }

   public boolean visit(SQLPartitionByHash x) {
      return true;
   }

   public void endVisit(SQLPartitionByHash x) {
   }

   public boolean visit(SQLPartitionByList x) {
      return true;
   }

   public void endVisit(SQLPartitionByList x) {
   }

   public boolean visit(SQLSubPartition x) {
      return true;
   }

   public void endVisit(SQLSubPartition x) {
   }

   public boolean visit(SQLSubPartitionByHash x) {
      return true;
   }

   public void endVisit(SQLSubPartitionByHash x) {
   }

   public boolean visit(SQLSubPartitionByRange x) {
      return true;
   }

   public void endVisit(SQLSubPartitionByRange x) {
   }

   public boolean visit(SQLSubPartitionByList x) {
      return true;
   }

   public void endVisit(SQLSubPartitionByList x) {
   }

   public boolean visit(SQLAlterDatabaseStatement x) {
      return true;
   }

   public void endVisit(SQLAlterDatabaseStatement x) {
   }

   public boolean visit(SQLAlterTableConvertCharSet x) {
      return true;
   }

   public void endVisit(SQLAlterTableConvertCharSet x) {
   }

   public boolean visit(SQLAlterTableReOrganizePartition x) {
      return true;
   }

   public void endVisit(SQLAlterTableReOrganizePartition x) {
   }

   public boolean visit(SQLAlterTableCoalescePartition x) {
      return true;
   }

   public void endVisit(SQLAlterTableCoalescePartition x) {
   }

   public boolean visit(SQLAlterTableTruncatePartition x) {
      return true;
   }

   public void endVisit(SQLAlterTableTruncatePartition x) {
   }

   public boolean visit(SQLAlterTableDiscardPartition x) {
      return true;
   }

   public void endVisit(SQLAlterTableDiscardPartition x) {
   }

   public boolean visit(SQLAlterTableImportPartition x) {
      return true;
   }

   public void endVisit(SQLAlterTableImportPartition x) {
   }

   public boolean visit(SQLAlterTableAnalyzePartition x) {
      return true;
   }

   public void endVisit(SQLAlterTableAnalyzePartition x) {
   }

   public boolean visit(SQLAlterTableCheckPartition x) {
      return true;
   }

   public void endVisit(SQLAlterTableCheckPartition x) {
   }

   public boolean visit(SQLAlterTableOptimizePartition x) {
      return true;
   }

   public void endVisit(SQLAlterTableOptimizePartition x) {
   }

   public boolean visit(SQLAlterTableRebuildPartition x) {
      return true;
   }

   public void endVisit(SQLAlterTableRebuildPartition x) {
   }

   public boolean visit(SQLAlterTableRepairPartition x) {
      return true;
   }

   public void endVisit(SQLAlterTableRepairPartition x) {
   }

   public boolean visit(SQLSequenceExpr x) {
      return true;
   }

   public void endVisit(SQLSequenceExpr x) {
   }

   public boolean visit(SQLMergeStatement x) {
      return true;
   }

   public void endVisit(SQLMergeStatement x) {
   }

   public boolean visit(SQLMergeStatement.MergeUpdateClause x) {
      return true;
   }

   public void endVisit(SQLMergeStatement.MergeUpdateClause x) {
   }

   public boolean visit(SQLMergeStatement.MergeInsertClause x) {
      return true;
   }

   public void endVisit(SQLMergeStatement.MergeInsertClause x) {
   }

   public boolean visit(SQLErrorLoggingClause x) {
      return true;
   }

   public void endVisit(SQLErrorLoggingClause x) {
   }

   public boolean visit(SQLNullConstraint x) {
      return true;
   }

   public void endVisit(SQLNullConstraint x) {
   }

   public boolean visit(SQLCreateSequenceStatement x) {
      return true;
   }

   public void endVisit(SQLCreateSequenceStatement x) {
   }

   public boolean visit(SQLDateExpr x) {
      return true;
   }

   public void endVisit(SQLDateExpr x) {
   }

   public void endVisit(SQLLimit x) {
   }

   public void endVisit(SQLStartTransactionStatement x) {
   }

   public boolean visit(SQLStartTransactionStatement x) {
      return true;
   }

   public void endVisit(SQLDescribeStatement x) {
   }

   public boolean visit(SQLDescribeStatement x) {
      return true;
   }

   public boolean visit(SQLWhileStatement x) {
      return true;
   }

   public void endVisit(SQLWhileStatement x) {
   }

   public boolean visit(SQLDeclareStatement x) {
      return true;
   }

   public void endVisit(SQLDeclareStatement x) {
   }

   public boolean visit(SQLReturnStatement x) {
      return true;
   }

   public void endVisit(SQLReturnStatement x) {
   }

   public boolean visit(SQLArgument x) {
      return true;
   }

   public void endVisit(SQLArgument x) {
   }

   public boolean visit(SQLCommitStatement x) {
      return true;
   }

   public void endVisit(SQLCommitStatement x) {
   }

   public boolean visit(SQLFlashbackExpr x) {
      return true;
   }

   public void endVisit(SQLFlashbackExpr x) {
   }

   public boolean visit(SQLCreateMaterializedViewStatement x) {
      return true;
   }

   public void endVisit(SQLCreateMaterializedViewStatement x) {
   }

   public boolean visit(SQLShowCreateMaterializedViewStatement x) {
      return true;
   }

   public void endVisit(SQLShowCreateMaterializedViewStatement x) {
   }

   public boolean visit(SQLBinaryOpExprGroup x) {
      return true;
   }

   public void endVisit(SQLBinaryOpExprGroup x) {
   }

   public boolean visit(SQLScriptCommitStatement x) {
      return true;
   }

   public void endVisit(SQLScriptCommitStatement x) {
   }

   public boolean visit(SQLReplaceStatement x) {
      return true;
   }

   public void endVisit(SQLReplaceStatement x) {
   }

   public boolean visit(SQLCreateUserStatement x) {
      return true;
   }

   public void endVisit(SQLCreateUserStatement x) {
   }

   public boolean visit(SQLAlterFunctionStatement x) {
      return true;
   }

   public void endVisit(SQLAlterFunctionStatement x) {
   }

   public boolean visit(SQLAlterTypeStatement x) {
      return true;
   }

   public void endVisit(SQLAlterTypeStatement x) {
   }

   public boolean visit(SQLIntervalExpr x) {
      return true;
   }

   public void endVisit(SQLIntervalExpr x) {
   }

   public boolean visit(SQLLateralViewTableSource x) {
      return true;
   }

   public void endVisit(SQLLateralViewTableSource x) {
   }

   public boolean visit(SQLShowErrorsStatement x) {
      return true;
   }

   public void endVisit(SQLShowErrorsStatement x) {
   }

   public boolean visit(SQLShowGrantsStatement x) {
      return true;
   }

   public void endVisit(SQLShowGrantsStatement x) {
   }

   public boolean visit(SQLShowPackagesStatement x) {
      return true;
   }

   public void endVisit(SQLShowPackagesStatement x) {
   }

   public boolean visit(SQLShowRecylebinStatement x) {
      return true;
   }

   public void endVisit(SQLShowRecylebinStatement x) {
   }

   public boolean visit(SQLAlterCharacter x) {
      return true;
   }

   public void endVisit(SQLAlterCharacter x) {
   }

   public boolean visit(SQLExprStatement x) {
      return true;
   }

   public void endVisit(SQLExprStatement x) {
   }

   public boolean visit(SQLAlterProcedureStatement x) {
      return true;
   }

   public void endVisit(SQLAlterProcedureStatement x) {
   }

   public boolean visit(SQLAlterViewStatement x) {
      return true;
   }

   public void endVisit(SQLAlterViewStatement x) {
   }

   public boolean visit(SQLDropEventStatement x) {
      return true;
   }

   public void endVisit(SQLDropEventStatement x) {
   }

   public boolean visit(SQLDropLogFileGroupStatement x) {
      return true;
   }

   public void endVisit(SQLDropLogFileGroupStatement x) {
   }

   public boolean visit(SQLDropServerStatement x) {
      return true;
   }

   public void endVisit(SQLDropServerStatement x) {
   }

   public boolean visit(SQLDropSynonymStatement x) {
      return true;
   }

   public void endVisit(SQLDropSynonymStatement x) {
   }

   public boolean visit(SQLRecordDataType x) {
      return true;
   }

   public void endVisit(SQLRecordDataType x) {
   }

   public boolean visit(SQLDropTypeStatement x) {
      return true;
   }

   public void endVisit(SQLDropTypeStatement x) {
   }

   public boolean visit(SQLExternalRecordFormat x) {
      return true;
   }

   public void endVisit(SQLExternalRecordFormat x) {
   }

   public boolean visit(SQLArrayDataType x) {
      return true;
   }

   public void endVisit(SQLArrayDataType x) {
   }

   public boolean visit(SQLMapDataType x) {
      return true;
   }

   public void endVisit(SQLMapDataType x) {
   }

   public boolean visit(SQLStructDataType x) {
      return true;
   }

   public void endVisit(SQLStructDataType x) {
   }

   public boolean visit(SQLRowDataType x) {
      return true;
   }

   public void endVisit(SQLRowDataType x) {
   }

   public boolean visit(SQLStructDataType.Field x) {
      return true;
   }

   public void endVisit(SQLStructDataType.Field x) {
   }

   public boolean visit(SQLDropMaterializedViewStatement x) {
      return true;
   }

   public void endVisit(SQLDropMaterializedViewStatement x) {
   }

   public boolean visit(SQLShowMaterializedViewStatement x) {
      return true;
   }

   public void endVisit(SQLShowMaterializedViewStatement x) {
   }

   public boolean visit(SQLRefreshMaterializedViewStatement x) {
      return true;
   }

   public void endVisit(SQLRefreshMaterializedViewStatement x) {
   }

   public boolean visit(SQLAlterMaterializedViewStatement x) {
      return true;
   }

   public void endVisit(SQLAlterMaterializedViewStatement x) {
   }

   public boolean visit(SQLCreateTableGroupStatement x) {
      return true;
   }

   public void endVisit(SQLCreateTableGroupStatement x) {
   }

   public boolean visit(SQLDropTableGroupStatement x) {
      return true;
   }

   public void endVisit(SQLDropTableGroupStatement x) {
   }

   public boolean visit(SQLAlterTableSubpartitionAvailablePartitionNum x) {
      return true;
   }

   public void endVisit(SQLAlterTableSubpartitionAvailablePartitionNum x) {
   }

   public void endVisit(SQLShowDatabasesStatement x) {
   }

   public boolean visit(SQLShowDatabasesStatement x) {
      return true;
   }

   public void endVisit(SQLShowTableGroupsStatement x) {
   }

   public boolean visit(SQLShowTableGroupsStatement x) {
      return true;
   }

   public void endVisit(SQLShowColumnsStatement x) {
   }

   public boolean visit(SQLShowColumnsStatement x) {
      return true;
   }

   public void endVisit(SQLShowCreateTableStatement x) {
   }

   public boolean visit(SQLShowCreateTableStatement x) {
      return true;
   }

   public void endVisit(SQLShowProcessListStatement x) {
   }

   public boolean visit(SQLShowProcessListStatement x) {
      return true;
   }

   public void endVisit(SQLAlterTableSetOption x) {
   }

   public boolean visit(SQLAlterTableSetOption x) {
      return true;
   }

   public boolean visit(SQLShowCreateViewStatement x) {
      return true;
   }

   public void endVisit(SQLShowCreateViewStatement x) {
   }

   public boolean visit(SQLShowViewsStatement x) {
      return true;
   }

   public void endVisit(SQLShowViewsStatement x) {
   }

   public boolean visit(SQLAlterTableRenameIndex x) {
      return true;
   }

   public void endVisit(SQLAlterTableRenameIndex x) {
   }

   public boolean visit(SQLAlterSequenceStatement x) {
      return true;
   }

   public void endVisit(SQLAlterSequenceStatement x) {
   }

   public boolean visit(SQLAlterTableExchangePartition x) {
      return true;
   }

   public void endVisit(SQLAlterTableExchangePartition x) {
   }

   public boolean visit(SQLCreateRoleStatement x) {
      return true;
   }

   public void endVisit(SQLCreateRoleStatement x) {
   }

   public boolean visit(SQLDropRoleStatement x) {
      return true;
   }

   public void endVisit(SQLDropRoleStatement x) {
   }

   public boolean visit(SQLAlterTableReplaceColumn x) {
      return true;
   }

   public void endVisit(SQLAlterTableReplaceColumn x) {
   }

   public boolean visit(SQLMatchAgainstExpr x) {
      return true;
   }

   public void endVisit(SQLMatchAgainstExpr x) {
   }

   public boolean visit(SQLTimeExpr x) {
      return true;
   }

   public void endVisit(SQLTimeExpr x) {
   }

   public boolean visit(SQLDropCatalogStatement x) {
      return true;
   }

   public void endVisit(SQLDropCatalogStatement x) {
   }

   public void endVisit(SQLShowPartitionsStmt x) {
   }

   public boolean visit(SQLShowPartitionsStmt x) {
      return true;
   }

   public void endVisit(SQLValuesExpr x) {
   }

   public boolean visit(SQLValuesExpr x) {
      return true;
   }

   public void endVisit(SQLContainsExpr x) {
   }

   public boolean visit(SQLContainsExpr x) {
      return true;
   }

   public void endVisit(SQLDumpStatement x) {
   }

   public boolean visit(SQLDumpStatement x) {
      return true;
   }

   public void endVisit(SQLValuesTableSource x) {
   }

   public boolean visit(SQLValuesTableSource x) {
      return true;
   }

   public void endVisit(SQLExtractExpr x) {
   }

   public boolean visit(SQLExtractExpr x) {
      return true;
   }

   public void endVisit(SQLWindow x) {
   }

   public boolean visit(SQLWindow x) {
      return true;
   }

   public void endVisit(SQLJSONExpr x) {
   }

   public boolean visit(SQLJSONExpr x) {
      return true;
   }

   public void endVisit(SQLDecimalExpr x) {
   }

   public boolean visit(SQLDecimalExpr x) {
      return true;
   }

   public void endVisit(SQLAnnIndex x) {
   }

   public boolean visit(SQLAnnIndex x) {
      return true;
   }

   public void endVisit(SQLUnionDataType x) {
   }

   public boolean visit(SQLUnionDataType x) {
      return true;
   }

   public void endVisit(SQLAlterTableRecoverPartitions x) {
   }

   public boolean visit(SQLAlterTableRecoverPartitions x) {
      return true;
   }

   public void endVisit(SQLAlterIndexStatement x) {
   }

   public boolean visit(SQLAlterIndexStatement x) {
      return true;
   }

   public boolean visit(SQLAlterIndexStatement.Rebuild x) {
      return true;
   }

   public void endVisit(SQLAlterIndexStatement.Rebuild x) {
   }

   public boolean visit(SQLShowIndexesStatement x) {
      return true;
   }

   public void endVisit(SQLShowIndexesStatement x) {
   }

   public boolean visit(SQLAnalyzeTableStatement x) {
      return true;
   }

   public void endVisit(SQLAnalyzeTableStatement x) {
   }

   public boolean visit(SQLExportTableStatement x) {
      return true;
   }

   public void endVisit(SQLExportTableStatement x) {
   }

   public boolean visit(SQLImportTableStatement x) {
      return true;
   }

   public void endVisit(SQLImportTableStatement x) {
   }

   public boolean visit(SQLTableSampling x) {
      return true;
   }

   public void endVisit(SQLTableSampling x) {
   }

   public boolean visit(SQLSizeExpr x) {
      return true;
   }

   public void endVisit(SQLSizeExpr x) {
   }

   public boolean visit(SQLAlterTableArchivePartition x) {
      return true;
   }

   public void endVisit(SQLAlterTableArchivePartition x) {
   }

   public boolean visit(SQLAlterTableUnarchivePartition x) {
      return true;
   }

   public void endVisit(SQLAlterTableUnarchivePartition x) {
   }

   public boolean visit(SQLCreateOutlineStatement x) {
      return true;
   }

   public void endVisit(SQLCreateOutlineStatement x) {
   }

   public boolean visit(SQLDropOutlineStatement x) {
      return true;
   }

   public void endVisit(SQLDropOutlineStatement x) {
   }

   public boolean visit(SQLAlterOutlineStatement x) {
      return true;
   }

   public void endVisit(SQLAlterOutlineStatement x) {
   }

   public boolean visit(SQLShowOutlinesStatement x) {
      return true;
   }

   public void endVisit(SQLShowOutlinesStatement x) {
   }

   public boolean visit(SQLPurgeTableStatement x) {
      return true;
   }

   public void endVisit(SQLPurgeTableStatement x) {
   }

   public boolean visit(SQLPurgeLogsStatement x) {
      return true;
   }

   public void endVisit(SQLPurgeLogsStatement x) {
   }

   public boolean visit(SQLPurgeRecyclebinStatement x) {
      return true;
   }

   public void endVisit(SQLPurgeRecyclebinStatement x) {
   }

   public boolean visit(SQLShowStatisticStmt x) {
      return true;
   }

   public void endVisit(SQLShowStatisticStmt x) {
   }

   public boolean visit(SQLShowStatisticListStmt x) {
      return true;
   }

   public void endVisit(SQLShowStatisticListStmt x) {
   }

   public boolean visit(SQLAlterTableAddSupplemental x) {
      return true;
   }

   public void endVisit(SQLAlterTableAddSupplemental x) {
   }

   public boolean visit(SQLShowCatalogsStatement x) {
      return true;
   }

   public void endVisit(SQLShowCatalogsStatement x) {
   }

   public boolean visit(SQLShowFunctionsStatement x) {
      return true;
   }

   public void endVisit(SQLShowFunctionsStatement x) {
   }

   public boolean visit(SQLShowSessionStatement x) {
      return true;
   }

   public void endVisit(SQLShowSessionStatement x) {
   }

   public boolean visit(SQLDbLinkExpr x) {
      return true;
   }

   public void endVisit(SQLDbLinkExpr x) {
   }

   public boolean visit(SQLCurrentTimeExpr x) {
      return true;
   }

   public void endVisit(SQLCurrentTimeExpr x) {
   }

   public boolean visit(SQLCurrentUserExpr x) {
      return true;
   }

   public void endVisit(SQLCurrentUserExpr x) {
   }

   public boolean visit(SQLShowQueryTaskStatement x) {
      return true;
   }

   public void endVisit(SQLShowQueryTaskStatement x) {
   }

   public boolean visit(SQLAdhocTableSource x) {
      return true;
   }

   public void endVisit(SQLAdhocTableSource x) {
   }

   public boolean visit(HiveCreateTableStatement x) {
      return false;
   }

   public void endVisit(HiveCreateTableStatement x) {
   }

   public boolean visit(HiveInputOutputFormat x) {
      return false;
   }

   public void endVisit(HiveInputOutputFormat x) {
   }

   public boolean visit(SQLExplainAnalyzeStatement x) {
      return true;
   }

   public void endVisit(SQLExplainAnalyzeStatement x) {
   }

   public boolean visit(SQLPartitionRef x) {
      return true;
   }

   public void endVisit(SQLPartitionRef x) {
   }

   public boolean visit(SQLPartitionRef.Item x) {
      return true;
   }

   public void endVisit(SQLPartitionRef.Item x) {
   }

   public boolean visit(SQLWhoamiStatement x) {
      return true;
   }

   public void endVisit(SQLWhoamiStatement x) {
   }

   public boolean visit(SQLDropResourceStatement x) {
      return true;
   }

   public void endVisit(SQLDropResourceStatement x) {
   }

   public boolean visit(SQLForStatement x) {
      return true;
   }

   public void endVisit(SQLForStatement x) {
   }

   public boolean visit(SQLUnnestTableSource x) {
      return true;
   }

   public void endVisit(SQLUnnestTableSource x) {
   }

   public boolean visit(SQLCopyFromStatement x) {
      return true;
   }

   public void endVisit(SQLCopyFromStatement x) {
   }

   public boolean visit(SQLShowUsersStatement x) {
      return true;
   }

   public void endVisit(SQLShowUsersStatement x) {
   }

   public boolean visit(SQLSubmitJobStatement x) {
      return true;
   }

   public void endVisit(SQLSubmitJobStatement x) {
   }

   public boolean visit(SQLTableLike x) {
      return true;
   }

   public void endVisit(SQLTableLike x) {
   }

   public boolean visit(SQLSyncMetaStatement x) {
      return true;
   }

   public void endVisit(SQLSyncMetaStatement x) {
   }

   public void endVisit(SQLValuesQuery x) {
   }

   public boolean visit(SQLValuesQuery x) {
      return true;
   }

   public void endVisit(SQLDataTypeRefExpr x) {
   }

   public boolean visit(SQLDataTypeRefExpr x) {
      return true;
   }

   public void endVisit(SQLArchiveTableStatement x) {
   }

   public boolean visit(SQLArchiveTableStatement x) {
      return true;
   }

   public void endVisit(SQLBackupStatement x) {
   }

   public boolean visit(SQLBackupStatement x) {
      return true;
   }

   public void endVisit(SQLRestoreStatement x) {
   }

   public boolean visit(SQLRestoreStatement x) {
      return true;
   }

   public void endVisit(SQLBuildTableStatement x) {
   }

   public boolean visit(SQLBuildTableStatement x) {
      return true;
   }

   public void endVisit(SQLCancelJobStatement x) {
   }

   public boolean visit(SQLCancelJobStatement x) {
      return true;
   }

   public void endVisit(SQLExportDatabaseStatement x) {
   }

   public boolean visit(SQLExportDatabaseStatement x) {
      return true;
   }

   public void endVisit(SQLImportDatabaseStatement x) {
   }

   public boolean visit(SQLImportDatabaseStatement x) {
      return true;
   }

   public void endVisit(SQLRenameUserStatement x) {
   }

   public boolean visit(SQLRenameUserStatement x) {
      return true;
   }

   public void endVisit(SQLPartitionByValue x) {
   }

   public boolean visit(SQLPartitionByValue x) {
      return true;
   }

   public void endVisit(SQLAlterTablePartitionCount x) {
   }

   public boolean visit(SQLAlterTablePartitionCount x) {
      return true;
   }

   public void endVisit(SQLAlterTableBlockSize x) {
   }

   public boolean visit(SQLAlterTableBlockSize x) {
      return true;
   }

   public void endVisit(SQLAlterTableCompression x) {
   }

   public boolean visit(SQLAlterTableCompression x) {
      return true;
   }

   public void endVisit(SQLAlterTablePartitionLifecycle x) {
   }

   public boolean visit(SQLAlterTablePartitionLifecycle x) {
      return true;
   }

   public void endVisit(SQLAlterTableSubpartitionLifecycle x) {
   }

   public boolean visit(SQLAlterTableSubpartitionLifecycle x) {
      return true;
   }

   public void endVisit(SQLAlterTableDropSubpartition x) {
   }

   public boolean visit(SQLAlterTableDropSubpartition x) {
      return true;
   }

   public void endVisit(SQLAlterTableDropClusteringKey x) {
   }

   public boolean visit(SQLAlterTableDropClusteringKey x) {
      return true;
   }

   public void endVisit(SQLAlterTableAddClusteringKey x) {
   }

   public boolean visit(SQLAlterTableAddClusteringKey x) {
      return true;
   }

   public void endVisit(MySqlKillStatement x) {
   }

   public boolean visit(MySqlKillStatement x) {
      return true;
   }

   public boolean visit(SQLCreateResourceGroupStatement x) {
      return true;
   }

   public void endVisit(SQLCreateResourceGroupStatement x) {
   }

   public boolean visit(SQLAlterResourceGroupStatement x) {
      return true;
   }

   public void endVisit(SQLAlterResourceGroupStatement x) {
   }

   public void endVisit(SQLDropResourceGroupStatement x) {
   }

   public boolean visit(SQLDropResourceGroupStatement x) {
      return true;
   }

   public void endVisit(SQLListResourceGroupStatement x) {
   }

   public boolean visit(SQLListResourceGroupStatement x) {
      return true;
   }

   public void endVisit(SQLAlterTableMergePartition x) {
   }

   public boolean visit(SQLAlterTableMergePartition x) {
      return true;
   }

   public void endVisit(SQLPartitionSpec x) {
   }

   public boolean visit(SQLPartitionSpec x) {
      return true;
   }

   public void endVisit(SQLPartitionSpec.Item x) {
   }

   public boolean visit(SQLPartitionSpec.Item x) {
      return true;
   }

   public boolean visit(SQLLoadIndexIntoCacheStatement x) {
      return true;
   }

   public void endVisit(SQLLoadIndexIntoCacheStatement x) {
   }

   public boolean visit(SQLAlterTableEnableTriggers x) {
      return true;
   }

   public void endVisit(SQLAlterTableEnableTriggers x) {
   }

   public boolean visit(SQLAlterTableDisableTriggers x) {
      return true;
   }

   public void endVisit(SQLAlterTableDisableTriggers x) {
   }

   public boolean visit(SQLAlterUserStatement x) {
      return true;
   }

   public void endVisit(SQLAlterUserStatement x) {
   }

   public boolean visit(SQLSetSchemaStatement x) {
      return true;
   }

   public void endVisit(SQLSetSchemaStatement x) {
   }

   public boolean visit(SQLCreateTablespaceStatement x) {
      return true;
   }

   public void endVisit(SQLCreateTablespaceStatement x) {
   }

   public boolean visit(SQLCreateTablespaceStatement.FileItem x) {
      return true;
   }

   public void endVisit(SQLCreateTablespaceStatement.FileItem x) {
   }

   public boolean visit(SQLAlterTablespaceStatement x) {
      return true;
   }

   public void endVisit(SQLAlterTablespaceStatement x) {
   }

   public boolean visit(SQLAlterTablespaceRename x) {
      return true;
   }

   public void endVisit(SQLAlterTablespaceRename x) {
   }

   public boolean visit(SQLAlterTablespaceRenameDatafile x) {
      return true;
   }

   public void endVisit(SQLAlterTablespaceRenameDatafile x) {
   }

   public boolean visit(SQLAlterTablespaceAddDatafile x) {
      return true;
   }

   public void endVisit(SQLAlterTablespaceAddDatafile x) {
   }

   public boolean visit(SQLAlterTablespaceResizeDatafile x) {
      return true;
   }

   public void endVisit(SQLAlterTablespaceResizeDatafile x) {
   }

   public boolean visit(SQLAlterTablespaceDatafile x) {
      return true;
   }

   public void endVisit(SQLAlterTablespaceDatafile x) {
   }

   public boolean visit(SQLCreateDomainStatement x) {
      return true;
   }

   public void endVisit(SQLCreateDomainStatement x) {
   }

   public boolean visit(SQLDropDomainStatement x) {
      return true;
   }

   public void endVisit(SQLDropDomainStatement x) {
   }

   public boolean visit(SQLCreateContextStatement x) {
      return true;
   }

   public void endVisit(SQLCreateContextStatement x) {
   }

   public boolean visit(SQLDropContextStatement x) {
      return true;
   }

   public void endVisit(SQLDropContextStatement x) {
   }

   public boolean visit(SQLCreateDirectoryStatement x) {
      return true;
   }

   public void endVisit(SQLCreateDirectoryStatement x) {
   }

   public boolean visit(SQLDropDirectoryStatement x) {
      return true;
   }

   public void endVisit(SQLDropDirectoryStatement x) {
   }

   public boolean visit(SQLSetTimeZoneStatement x) {
      return true;
   }

   public void endVisit(SQLSetTimeZoneStatement x) {
   }

   public boolean visit(SQLAlterSetNlsDateLanguageStatement x) {
      return true;
   }

   public void endVisit(SQLAlterSetNlsDateLanguageStatement x) {
   }

   public boolean visit(SQLAlterSetDateFormatStatement x) {
      return true;
   }

   public void endVisit(SQLAlterSetDateFormatStatement x) {
   }

   public boolean visit(SQLAlterSystemStatement x) {
      return true;
   }

   public void endVisit(SQLAlterSystemStatement x) {
   }

   public boolean visit(SQLAlterTablespaceCache x) {
      return true;
   }

   public void endVisit(SQLAlterTablespaceCache x) {
   }

   public boolean visit(SQLDropPackageStatement x) {
      return true;
   }

   public void endVisit(SQLDropPackageStatement x) {
   }
}
