package com.alibaba.druid.wall.spi;

import com.alibaba.druid.DbType;
import com.alibaba.druid.sql.ast.SQLAdhocTableSource;
import com.alibaba.druid.sql.ast.SQLAnnIndex;
import com.alibaba.druid.sql.ast.SQLArgument;
import com.alibaba.druid.sql.ast.SQLArrayDataType;
import com.alibaba.druid.sql.ast.SQLCommentHint;
import com.alibaba.druid.sql.ast.SQLCurrentTimeExpr;
import com.alibaba.druid.sql.ast.SQLCurrentUserExpr;
import com.alibaba.druid.sql.ast.SQLDataType;
import com.alibaba.druid.sql.ast.SQLDataTypeRefExpr;
import com.alibaba.druid.sql.ast.SQLDeclareItem;
import com.alibaba.druid.sql.ast.SQLIndexDefinition;
import com.alibaba.druid.sql.ast.SQLIndexOptions;
import com.alibaba.druid.sql.ast.SQLKeep;
import com.alibaba.druid.sql.ast.SQLLimit;
import com.alibaba.druid.sql.ast.SQLMapDataType;
import com.alibaba.druid.sql.ast.SQLObject;
import com.alibaba.druid.sql.ast.SQLOrderBy;
import com.alibaba.druid.sql.ast.SQLOver;
import com.alibaba.druid.sql.ast.SQLParameter;
import com.alibaba.druid.sql.ast.SQLPartition;
import com.alibaba.druid.sql.ast.SQLPartitionByHash;
import com.alibaba.druid.sql.ast.SQLPartitionByList;
import com.alibaba.druid.sql.ast.SQLPartitionByRange;
import com.alibaba.druid.sql.ast.SQLPartitionByValue;
import com.alibaba.druid.sql.ast.SQLPartitionSpec;
import com.alibaba.druid.sql.ast.SQLPartitionValue;
import com.alibaba.druid.sql.ast.SQLRecordDataType;
import com.alibaba.druid.sql.ast.SQLRowDataType;
import com.alibaba.druid.sql.ast.SQLStructDataType;
import com.alibaba.druid.sql.ast.SQLSubPartition;
import com.alibaba.druid.sql.ast.SQLSubPartitionByHash;
import com.alibaba.druid.sql.ast.SQLSubPartitionByList;
import com.alibaba.druid.sql.ast.SQLSubPartitionByRange;
import com.alibaba.druid.sql.ast.SQLUnionDataType;
import com.alibaba.druid.sql.ast.SQLWindow;
import com.alibaba.druid.sql.ast.expr.SQLAggregateExpr;
import com.alibaba.druid.sql.ast.expr.SQLAllColumnExpr;
import com.alibaba.druid.sql.ast.expr.SQLAllExpr;
import com.alibaba.druid.sql.ast.expr.SQLAnyExpr;
import com.alibaba.druid.sql.ast.expr.SQLArrayExpr;
import com.alibaba.druid.sql.ast.expr.SQLBetweenExpr;
import com.alibaba.druid.sql.ast.expr.SQLBigIntExpr;
import com.alibaba.druid.sql.ast.expr.SQLBinaryExpr;
import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr;
import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExprGroup;
import com.alibaba.druid.sql.ast.expr.SQLBooleanExpr;
import com.alibaba.druid.sql.ast.expr.SQLCaseExpr;
import com.alibaba.druid.sql.ast.expr.SQLCaseStatement;
import com.alibaba.druid.sql.ast.expr.SQLCastExpr;
import com.alibaba.druid.sql.ast.expr.SQLCharExpr;
import com.alibaba.druid.sql.ast.expr.SQLContainsExpr;
import com.alibaba.druid.sql.ast.expr.SQLCurrentOfCursorExpr;
import com.alibaba.druid.sql.ast.expr.SQLDateExpr;
import com.alibaba.druid.sql.ast.expr.SQLDateTimeExpr;
import com.alibaba.druid.sql.ast.expr.SQLDbLinkExpr;
import com.alibaba.druid.sql.ast.expr.SQLDecimalExpr;
import com.alibaba.druid.sql.ast.expr.SQLDefaultExpr;
import com.alibaba.druid.sql.ast.expr.SQLDoubleExpr;
import com.alibaba.druid.sql.ast.expr.SQLExistsExpr;
import com.alibaba.druid.sql.ast.expr.SQLExtractExpr;
import com.alibaba.druid.sql.ast.expr.SQLFlashbackExpr;
import com.alibaba.druid.sql.ast.expr.SQLFloatExpr;
import com.alibaba.druid.sql.ast.expr.SQLGroupingSetExpr;
import com.alibaba.druid.sql.ast.expr.SQLHexExpr;
import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
import com.alibaba.druid.sql.ast.expr.SQLInListExpr;
import com.alibaba.druid.sql.ast.expr.SQLInSubQueryExpr;
import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr;
import com.alibaba.druid.sql.ast.expr.SQLIntervalExpr;
import com.alibaba.druid.sql.ast.expr.SQLJSONExpr;
import com.alibaba.druid.sql.ast.expr.SQLListExpr;
import com.alibaba.druid.sql.ast.expr.SQLMatchAgainstExpr;
import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr;
import com.alibaba.druid.sql.ast.expr.SQLNCharExpr;
import com.alibaba.druid.sql.ast.expr.SQLNotExpr;
import com.alibaba.druid.sql.ast.expr.SQLNullExpr;
import com.alibaba.druid.sql.ast.expr.SQLNumberExpr;
import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr;
import com.alibaba.druid.sql.ast.expr.SQLQueryExpr;
import com.alibaba.druid.sql.ast.expr.SQLRealExpr;
import com.alibaba.druid.sql.ast.expr.SQLSequenceExpr;
import com.alibaba.druid.sql.ast.expr.SQLSizeExpr;
import com.alibaba.druid.sql.ast.expr.SQLSmallIntExpr;
import com.alibaba.druid.sql.ast.expr.SQLSomeExpr;
import com.alibaba.druid.sql.ast.expr.SQLTimeExpr;
import com.alibaba.druid.sql.ast.expr.SQLTimestampExpr;
import com.alibaba.druid.sql.ast.expr.SQLTinyIntExpr;
import com.alibaba.druid.sql.ast.expr.SQLUnaryExpr;
import com.alibaba.druid.sql.ast.expr.SQLValuesExpr;
import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr;
import com.alibaba.druid.sql.ast.statement.SQLAlterCharacter;
import com.alibaba.druid.sql.ast.statement.SQLAlterDatabaseStatement;
import com.alibaba.druid.sql.ast.statement.SQLAlterFunctionStatement;
import com.alibaba.druid.sql.ast.statement.SQLAlterIndexStatement;
import com.alibaba.druid.sql.ast.statement.SQLAlterMaterializedViewStatement;
import com.alibaba.druid.sql.ast.statement.SQLAlterOutlineStatement;
import com.alibaba.druid.sql.ast.statement.SQLAlterProcedureStatement;
import com.alibaba.druid.sql.ast.statement.SQLAlterSequenceStatement;
import com.alibaba.druid.sql.ast.statement.SQLAlterSetDateFormatStatement;
import com.alibaba.druid.sql.ast.statement.SQLAlterSetNlsDateLanguageStatement;
import com.alibaba.druid.sql.ast.statement.SQLAlterSystemGetConfigStatement;
import com.alibaba.druid.sql.ast.statement.SQLAlterSystemSetConfigStatement;
import com.alibaba.druid.sql.ast.statement.SQLAlterSystemStatement;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddClusteringKey;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddColumn;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddConstraint;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddExtPartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddIndex;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddPartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddSupplemental;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAlterColumn;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAnalyzePartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableArchivePartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableBlockSize;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableCheckPartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableCoalescePartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableCompression;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableConvertCharSet;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDeleteByCondition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableConstraint;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableKeys;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableLifecycle;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableTriggers;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDiscardPartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropCheck;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropClusteringKey;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropColumnItem;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropConstraint;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropExtPartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropForeignKey;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropIndex;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropKey;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropPartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropPrimaryKey;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropSubpartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableConstraint;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableKeys;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableLifecycle;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableTriggers;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableExchangePartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableGroupStatement;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableImportPartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableMergePartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableModifyClusteredBy;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableOptimizePartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTablePartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTablePartitionCount;
import com.alibaba.druid.sql.ast.statement.SQLAlterTablePartitionLifecycle;
import com.alibaba.druid.sql.ast.statement.SQLAlterTablePartitionSetProperties;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableReOrganizePartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableRebuildPartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableRecoverPartitions;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableRename;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableRenameColumn;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableRenameIndex;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableRenamePartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableRepairPartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableReplaceColumn;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableSetComment;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableSetLifecycle;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableSetLocation;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableSetOption;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableStatement;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableSubpartitionAvailablePartitionNum;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableSubpartitionLifecycle;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableTouch;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableTruncatePartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableUnarchivePartition;
import com.alibaba.druid.sql.ast.statement.SQLAlterTablespaceAddDatafile;
import com.alibaba.druid.sql.ast.statement.SQLAlterTablespaceCache;
import com.alibaba.druid.sql.ast.statement.SQLAlterTablespaceDatafile;
import com.alibaba.druid.sql.ast.statement.SQLAlterTablespaceRename;
import com.alibaba.druid.sql.ast.statement.SQLAlterTablespaceRenameDatafile;
import com.alibaba.druid.sql.ast.statement.SQLAlterTablespaceResizeDatafile;
import com.alibaba.druid.sql.ast.statement.SQLAlterTablespaceStatement;
import com.alibaba.druid.sql.ast.statement.SQLAlterTypeStatement;
import com.alibaba.druid.sql.ast.statement.SQLAlterUserStatement;
import com.alibaba.druid.sql.ast.statement.SQLAlterViewRenameStatement;
import com.alibaba.druid.sql.ast.statement.SQLAlterViewStatement;
import com.alibaba.druid.sql.ast.statement.SQLAnalyzeTableStatement;
import com.alibaba.druid.sql.ast.statement.SQLArchiveTableStatement;
import com.alibaba.druid.sql.ast.statement.SQLAssignItem;
import com.alibaba.druid.sql.ast.statement.SQLBackupStatement;
import com.alibaba.druid.sql.ast.statement.SQLBlockStatement;
import com.alibaba.druid.sql.ast.statement.SQLBuildTableStatement;
import com.alibaba.druid.sql.ast.statement.SQLCallStatement;
import com.alibaba.druid.sql.ast.statement.SQLCancelJobStatement;
import com.alibaba.druid.sql.ast.statement.SQLCharacterDataType;
import com.alibaba.druid.sql.ast.statement.SQLCheck;
import com.alibaba.druid.sql.ast.statement.SQLCloseStatement;
import com.alibaba.druid.sql.ast.statement.SQLColumnCheck;
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
import com.alibaba.druid.sql.ast.statement.SQLColumnPrimaryKey;
import com.alibaba.druid.sql.ast.statement.SQLColumnReference;
import com.alibaba.druid.sql.ast.statement.SQLColumnUniqueKey;
import com.alibaba.druid.sql.ast.statement.SQLCommentStatement;
import com.alibaba.druid.sql.ast.statement.SQLCommitStatement;
import com.alibaba.druid.sql.ast.statement.SQLCopyFromStatement;
import com.alibaba.druid.sql.ast.statement.SQLCreateContextStatement;
import com.alibaba.druid.sql.ast.statement.SQLCreateDatabaseStatement;
import com.alibaba.druid.sql.ast.statement.SQLCreateDirectoryStatement;
import com.alibaba.druid.sql.ast.statement.SQLCreateDomainStatement;
import com.alibaba.druid.sql.ast.statement.SQLCreateFunctionStatement;
import com.alibaba.druid.sql.ast.statement.SQLCreateIndexStatement;
import com.alibaba.druid.sql.ast.statement.SQLCreateMaterializedViewStatement;
import com.alibaba.druid.sql.ast.statement.SQLCreateOutlineStatement;
import com.alibaba.druid.sql.ast.statement.SQLCreateProcedureStatement;
import com.alibaba.druid.sql.ast.statement.SQLCreateRoleStatement;
import com.alibaba.druid.sql.ast.statement.SQLCreateSequenceStatement;
import com.alibaba.druid.sql.ast.statement.SQLCreateTableGroupStatement;
import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement;
import com.alibaba.druid.sql.ast.statement.SQLCreateTablespaceStatement;
import com.alibaba.druid.sql.ast.statement.SQLCreateTriggerStatement;
import com.alibaba.druid.sql.ast.statement.SQLCreateUserStatement;
import com.alibaba.druid.sql.ast.statement.SQLCreateViewStatement;
import com.alibaba.druid.sql.ast.statement.SQLDeclareStatement;
import com.alibaba.druid.sql.ast.statement.SQLDefault;
import com.alibaba.druid.sql.ast.statement.SQLDeleteStatement;
import com.alibaba.druid.sql.ast.statement.SQLDescribeStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropCatalogStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropContextStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropDatabaseStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropDirectoryStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropDomainStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropEventStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropFunctionStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropIndexStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropLogFileGroupStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropMaterializedViewStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropOutlineStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropPackageStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropProcedureStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropResourceGroupStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropResourceStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropRoleStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropSequenceStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropServerStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropSynonymStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropTableGroupStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropTableSpaceStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropTableStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropTriggerStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropTypeStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropUserStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropViewStatement;
import com.alibaba.druid.sql.ast.statement.SQLDumpStatement;
import com.alibaba.druid.sql.ast.statement.SQLErrorLoggingClause;
import com.alibaba.druid.sql.ast.statement.SQLExplainAnalyzeStatement;
import com.alibaba.druid.sql.ast.statement.SQLExplainStatement;
import com.alibaba.druid.sql.ast.statement.SQLExportDatabaseStatement;
import com.alibaba.druid.sql.ast.statement.SQLExportTableStatement;
import com.alibaba.druid.sql.ast.statement.SQLExprHint;
import com.alibaba.druid.sql.ast.statement.SQLExprStatement;
import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
import com.alibaba.druid.sql.ast.statement.SQLExternalRecordFormat;
import com.alibaba.druid.sql.ast.statement.SQLFetchStatement;
import com.alibaba.druid.sql.ast.statement.SQLForStatement;
import com.alibaba.druid.sql.ast.statement.SQLForeignKeyImpl;
import com.alibaba.druid.sql.ast.statement.SQLGrantStatement;
import com.alibaba.druid.sql.ast.statement.SQLIfStatement;
import com.alibaba.druid.sql.ast.statement.SQLImportDatabaseStatement;
import com.alibaba.druid.sql.ast.statement.SQLImportTableStatement;
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement;
import com.alibaba.druid.sql.ast.statement.SQLJoinTableSource;
import com.alibaba.druid.sql.ast.statement.SQLLateralViewTableSource;
import com.alibaba.druid.sql.ast.statement.SQLLoadIndexIntoCacheStatement;
import com.alibaba.druid.sql.ast.statement.SQLLoopStatement;
import com.alibaba.druid.sql.ast.statement.SQLMergeStatement;
import com.alibaba.druid.sql.ast.statement.SQLNotNullConstraint;
import com.alibaba.druid.sql.ast.statement.SQLNullConstraint;
import com.alibaba.druid.sql.ast.statement.SQLOpenStatement;
import com.alibaba.druid.sql.ast.statement.SQLPartitionRef;
import com.alibaba.druid.sql.ast.statement.SQLPrimaryKeyImpl;
import com.alibaba.druid.sql.ast.statement.SQLPrivilegeItem;
import com.alibaba.druid.sql.ast.statement.SQLPurgeLogsStatement;
import com.alibaba.druid.sql.ast.statement.SQLPurgeRecyclebinStatement;
import com.alibaba.druid.sql.ast.statement.SQLPurgeTableStatement;
import com.alibaba.druid.sql.ast.statement.SQLRefreshMaterializedViewStatement;
import com.alibaba.druid.sql.ast.statement.SQLReleaseSavePointStatement;
import com.alibaba.druid.sql.ast.statement.SQLRenameUserStatement;
import com.alibaba.druid.sql.ast.statement.SQLReplaceStatement;
import com.alibaba.druid.sql.ast.statement.SQLRestoreStatement;
import com.alibaba.druid.sql.ast.statement.SQLReturnStatement;
import com.alibaba.druid.sql.ast.statement.SQLRevokeStatement;
import com.alibaba.druid.sql.ast.statement.SQLRollbackStatement;
import com.alibaba.druid.sql.ast.statement.SQLSavePointStatement;
import com.alibaba.druid.sql.ast.statement.SQLScriptCommitStatement;
import com.alibaba.druid.sql.ast.statement.SQLSelect;
import com.alibaba.druid.sql.ast.statement.SQLSelectGroupByClause;
import com.alibaba.druid.sql.ast.statement.SQLSelectItem;
import com.alibaba.druid.sql.ast.statement.SQLSelectOrderByItem;
import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock;
import com.alibaba.druid.sql.ast.statement.SQLSelectStatement;
import com.alibaba.druid.sql.ast.statement.SQLSetSchemaStatement;
import com.alibaba.druid.sql.ast.statement.SQLSetStatement;
import com.alibaba.druid.sql.ast.statement.SQLSetTimeZoneStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowCatalogsStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowColumnsStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowCreateMaterializedViewStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowCreateTableStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowCreateViewStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowDatabasesStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowErrorsStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowFunctionsStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowGrantsStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowIndexesStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowMaterializedViewStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowOutlinesStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowPackagesStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowPartitionsStmt;
import com.alibaba.druid.sql.ast.statement.SQLShowProcessListStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowQueryTaskStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowRecylebinStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowSessionStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowStatisticListStmt;
import com.alibaba.druid.sql.ast.statement.SQLShowStatisticStmt;
import com.alibaba.druid.sql.ast.statement.SQLShowTableGroupsStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowTablesStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowUsersStatement;
import com.alibaba.druid.sql.ast.statement.SQLShowViewsStatement;
import com.alibaba.druid.sql.ast.statement.SQLStartTransactionStatement;
import com.alibaba.druid.sql.ast.statement.SQLSubmitJobStatement;
import com.alibaba.druid.sql.ast.statement.SQLSubqueryTableSource;
import com.alibaba.druid.sql.ast.statement.SQLSyncMetaStatement;
import com.alibaba.druid.sql.ast.statement.SQLTableLike;
import com.alibaba.druid.sql.ast.statement.SQLTableSampling;
import com.alibaba.druid.sql.ast.statement.SQLTruncateStatement;
import com.alibaba.druid.sql.ast.statement.SQLUnionQuery;
import com.alibaba.druid.sql.ast.statement.SQLUnionQueryTableSource;
import com.alibaba.druid.sql.ast.statement.SQLUnique;
import com.alibaba.druid.sql.ast.statement.SQLUnnestTableSource;
import com.alibaba.druid.sql.ast.statement.SQLUpdateSetItem;
import com.alibaba.druid.sql.ast.statement.SQLUpdateStatement;
import com.alibaba.druid.sql.ast.statement.SQLUseStatement;
import com.alibaba.druid.sql.ast.statement.SQLValuesQuery;
import com.alibaba.druid.sql.ast.statement.SQLValuesTableSource;
import com.alibaba.druid.sql.ast.statement.SQLWhileStatement;
import com.alibaba.druid.sql.ast.statement.SQLWhoamiStatement;
import com.alibaba.druid.sql.ast.statement.SQLWithSubqueryClause;
import com.alibaba.druid.sql.dialect.hive.ast.HiveInputOutputFormat;
import com.alibaba.druid.sql.dialect.hive.ast.stmt.HiveCreateTableStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlForceIndexHint;
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlIgnoreIndexHint;
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlKey;
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlPrimaryKey;
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlUnique;
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlUseIndexHint;
import com.alibaba.druid.sql.dialect.mysql.ast.MysqlForeignKey;
import com.alibaba.druid.sql.dialect.mysql.ast.clause.MySqlCaseStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.clause.MySqlCursorDeclareStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.clause.MySqlDeclareConditionStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.clause.MySqlDeclareHandlerStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.clause.MySqlDeclareStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.clause.MySqlIterateStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.clause.MySqlLeaveStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.clause.MySqlRepeatStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.clause.MySqlSelectIntoStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.clause.MySqlTableTableSource;
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlCharExpr;
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlIntervalExpr;
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlJSONTableExpr;
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlOrderingExpr;
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlOutFileExpr;
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlUserName;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.CobarShowStatus;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.DrdsBaselineStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.DrdsCancelDDLJob;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.DrdsChangeDDLJob;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.DrdsClearDDLJobCache;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.DrdsInspectDDLJobCache;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.DrdsRecoverDDLJob;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.DrdsRemoveDDLJob;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.DrdsRollbackDDLJob;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.DrdsShowDDLJobs;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.DrdsShowGlobalIndex;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.DrdsShowMetadataLock;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySQLImportTableStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqLCacheIndexStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqLGrantStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqLRevokeStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqLShowColumnStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqLShowCreateTableStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterDatabaseKillJob;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterDatabaseSetOption;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterEventStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterLogFileGroupStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterServerStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterTableAlterColumn;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterTableAlterFullTextIndex;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterTableAlterIndex;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterTableChangeColumn;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterTableDiscardTablespace;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterTableForce;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterTableImportTablespace;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterTableLock;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterTableModifyColumn;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterTableOption;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterTableOrderBy;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterTableValidation;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterTablespaceStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterUserStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAnalyzeStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlBinlogStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCheckTableStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlChecksumTableStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlClearPlanCacheStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateAddLogFileGroupStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateEventStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateExternalCatalogStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateServerStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateTableSpaceStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateTableStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateUserStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlDeleteStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlDisabledPlanCacheStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlEventSchedule;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlExecuteForAdsStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlExecuteStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlExplainPlanCacheStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlExplainStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlExtPartition;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlFlashbackStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlFlushStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlHelpStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlHintStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlInsertStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlKillStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlLoadDataInFileStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlLoadXmlStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlLockTableStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlManageInstanceGroupStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlMigrateStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlOptimizeStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlPartitionByKey;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlPrepareStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlRaftLeaderTransferStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlRaftMemberChangeStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlRenameSequenceStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlRenameTableStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlRepairTableStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlResetStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSetTransactionStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowAuthorsStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowBinLogEventsStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowBinaryLogsStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowBroadcastsStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowCharacterSetStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowClusterNameStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowCollationStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowConfigStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowContributorsStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowCreateDatabaseStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowCreateEventStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowCreateFunctionStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowCreateProcedureStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowCreateTriggerStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowDatabaseStatusStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowDatasourcesStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowDdlStatusStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowDsStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowEngineStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowEnginesStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowErrorsStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowEventsStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowFunctionCodeStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowFunctionStatusStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowGrantsStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowHMSMetaStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowHelpStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowJobStatusStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowMasterLogsStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowMasterStatusStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowMigrateTaskStatusStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowNodeStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowOpenTablesStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowPartitionsStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowPhysicalProcesslistStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowPlanCacheStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowPlanCacheStatusStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowPluginsStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowPrivilegesStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowProcedureCodeStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowProcedureStatusStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowProcessListStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowProfileStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowProfilesStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowRelayLogEventsStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowRuleStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowRuleStatusStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowSequencesStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowSlaveHostsStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowSlaveStatusStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowSlowStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowStatusStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowTableStatusStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowTopologyStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowTraceStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowTriggersStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowVariantsStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowWarningsStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSubPartitionByKey;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSubPartitionByList;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSubPartitionByValue;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlTableIndex;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlUnlockTablesStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlUpdatePlanCacheStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlUpdateStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlUpdateTableSource;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MysqlAlterFullTextStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MysqlAlterTableAlterCheck;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MysqlCreateFullTextAnalyzerStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MysqlCreateFullTextCharFilterStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MysqlCreateFullTextDictionaryStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MysqlCreateFullTextTokenFilterStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MysqlCreateFullTextTokenizerStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MysqlDeallocatePrepareStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MysqlDropFullTextStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MysqlShowCreateFullTextStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MysqlShowDbLockStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MysqlShowFullTextStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MysqlShowHtcStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MysqlShowStcStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.SQLAlterResourceGroupStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.SQLCreateResourceGroupStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.SQLListResourceGroupStatement;
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
import com.alibaba.druid.wall.WallProvider;
import com.alibaba.druid.wall.WallVisitor;
import com.alibaba.druid.wall.violation.IllegalSQLObjectViolation;

public class MySqlWallVisitor extends WallVisitorBase implements WallVisitor, MySqlASTVisitor {
   public MySqlWallVisitor(WallProvider provider) {
      super(provider);
   }

   public DbType getDbType() {
      return DbType.mysql;
   }

   public boolean visit(MySqlSelectQueryBlock x) {
      WallVisitorUtils.checkSelelct(this, x);
      return true;
   }

   public boolean visit(MySqlDeleteStatement x) {
      WallVisitorUtils.checkReadOnly(this, x.getFrom());
      return this.visit((SQLDeleteStatement)x);
   }

   public boolean visit(MySqlUpdateStatement x) {
      return this.visit((SQLUpdateStatement)x);
   }

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

   public boolean visit(SQLPropertyExpr x) {
      if (x.getOwner() instanceof SQLVariantRefExpr) {
         SQLVariantRefExpr varExpr = (SQLVariantRefExpr)x.getOwner();
         SQLObject parent = x.getParent();
         String varName = varExpr.getName();
         if (varName.equalsIgnoreCase("@@session") || varName.equalsIgnoreCase("@@global")) {
            if (!(parent instanceof SQLSelectItem) && !(parent instanceof SQLAssignItem)) {
               this.violations.add(new IllegalSQLObjectViolation(2003, "variable in condition not allow", this.toSQL(x)));
               return false;
            }

            if (!this.checkVar(x.getParent(), x.getName())) {
               boolean isTop = WallVisitorUtils.isTopNoneFromSelect(this, x);
               if (!isTop) {
                  boolean allow = true;
                  if (this.isDeny(varName) && (WallVisitorUtils.isWhereOrHaving(x) || WallVisitorUtils.checkSqlExpr(varExpr))) {
                     allow = false;
                  }

                  if (!allow) {
                     this.violations.add(new IllegalSQLObjectViolation(2003, "variable not allow : " + x.getName(), this.toSQL(x)));
                  }
               }
            }

            return false;
         }
      }

      WallVisitorUtils.check(this, (SQLPropertyExpr)x);
      return true;
   }

   public boolean checkVar(SQLObject parent, String varName) {
      if (varName == null) {
         return false;
      } else if (varName.equals("?")) {
         return true;
      } else if (!this.config.isVariantCheck()) {
         return true;
      } else {
         if (varName.startsWith("@@")) {
            if (!(parent instanceof SQLSelectItem) && !(parent instanceof SQLAssignItem)) {
               return false;
            }

            varName = varName.substring(2);
         }

         return this.config.getPermitVariants().contains(varName);
      }
   }

   public boolean isDeny(String varName) {
      if (varName.startsWith("@@")) {
         varName = varName.substring(2);
      }

      varName = varName.toLowerCase();
      return this.config.getDenyVariants().contains(varName);
   }

   public boolean visit(SQLVariantRefExpr x) {
      String varName = x.getName();
      if (varName == null) {
         return false;
      } else {
         if (varName.startsWith("@@") && !this.checkVar(x.getParent(), x.getName())) {
            WallVisitorUtils.WallTopStatementContext topStatementContext = WallVisitorUtils.getWallTopStatementContext();
            if (topStatementContext != null && (topStatementContext.fromSysSchema() || topStatementContext.fromSysTable())) {
               return false;
            }

            boolean isTop = WallVisitorUtils.isTopNoneFromSelect(this, x);
            if (!isTop) {
               boolean allow = true;
               if (this.isDeny(varName) && (WallVisitorUtils.isWhereOrHaving(x) || WallVisitorUtils.checkSqlExpr(x))) {
                  allow = false;
               }

               if (!allow) {
                  this.violations.add(new IllegalSQLObjectViolation(2003, "variable not allow : " + x.getName(), this.toSQL(x)));
               }
            }
         }

         return false;
      }
   }

   public boolean visit(MySqlOutFileExpr x) {
      if (!this.config.isSelectIntoOutfileAllow() && !WallVisitorUtils.isTopSelectOutFile(x)) {
         this.violations.add(new IllegalSQLObjectViolation(3000, "into out file not allow", this.toSQL(x)));
      }

      return true;
   }

   public boolean isDenyTable(String name) {
      if (!this.config.isTableCheck()) {
         return false;
      } else {
         return !this.provider.checkDenyTable(name);
      }
   }

   public boolean visit(MySqlCreateTableStatement x) {
      WallVisitorUtils.check(this, (SQLCreateTableStatement)x);
      return true;
   }

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

   public void endVisit(MySqlTableIndex x) {
   }

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

   public void endVisit(MySqlKey x) {
   }

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

   public void endVisit(MySqlPrimaryKey x) {
   }

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

   public void endVisit(MySqlUnique x) {
   }

   public boolean visit(MysqlForeignKey x) {
      return this.visit((SQLForeignKeyImpl)x);
   }

   public void endVisit(MysqlForeignKey x) {
      this.endVisit((SQLForeignKeyImpl)x);
   }

   public void endVisit(MySqlPrepareStatement x) {
   }

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

   public void endVisit(MySqlExecuteStatement x) {
   }

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

   public void endVisit(MysqlDeallocatePrepareStatement x) {
   }

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

   public void endVisit(MySqlDeleteStatement x) {
   }

   public void endVisit(MySqlInsertStatement x) {
   }

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

   public void endVisit(MySqlLoadDataInFileStatement x) {
   }

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

   public void endVisit(MySqlLoadXmlStatement x) {
   }

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

   public void endVisit(MySqlShowWarningsStatement x) {
   }

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

   public void endVisit(MySqlShowStatusStatement x) {
   }

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

   public void endVisit(MySqlShowAuthorsStatement x) {
   }

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

   public void endVisit(MysqlShowHtcStatement x) {
   }

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

   public void endVisit(MysqlShowStcStatement x) {
   }

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

   public void endVisit(CobarShowStatus x) {
   }

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

   public void endVisit(DrdsShowDDLJobs x) {
   }

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

   public void endVisit(DrdsCancelDDLJob x) {
   }

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

   public void endVisit(DrdsRecoverDDLJob x) {
   }

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

   public void endVisit(DrdsRollbackDDLJob x) {
   }

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

   public void endVisit(DrdsRemoveDDLJob x) {
   }

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

   public void endVisit(DrdsInspectDDLJobCache x) {
   }

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

   public void endVisit(DrdsClearDDLJobCache x) {
   }

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

   public void endVisit(DrdsChangeDDLJob x) {
   }

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

   public void endVisit(DrdsBaselineStatement x) {
   }

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

   public void endVisit(DrdsShowGlobalIndex x) {
   }

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

   public void endVisit(DrdsShowMetadataLock x) {
   }

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

   public void endVisit(MySqlBinlogStatement x) {
   }

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

   public void endVisit(MySqlResetStatement x) {
   }

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

   public void endVisit(MySqlCreateUserStatement x) {
   }

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

   public void endVisit(MySqlCreateUserStatement.UserSpecification x) {
   }

   public boolean visit(MySqlCreateUserStatement.UserSpecification x) {
      return true;
   }

   public void endVisit(MySqlPartitionByKey x) {
   }

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

   public void endVisit(MySqlUpdatePlanCacheStatement x) {
   }

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

   public void endVisit(MySqlShowPlanCacheStatusStatement x) {
   }

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

   public void endVisit(MySqlClearPlanCacheStatement x) {
   }

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

   public void endVisit(MySqlDisabledPlanCacheStatement x) {
   }

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

   public void endVisit(MySqlExplainPlanCacheStatement x) {
   }

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

   public void endVisit(MySqlSelectQueryBlock x) {
      this.endVisit((SQLSelectQueryBlock)x);
   }

   public void endVisit(MySqlOutFileExpr x) {
   }

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

   public void endVisit(MySqlExplainStatement x) {
   }

   public void endVisit(MySqlUpdateStatement x) {
   }

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

   public void endVisit(MySqlSetTransactionStatement x) {
   }

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

   public void endVisit(MySqlShowHMSMetaStatement x) {
   }

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

   public void endVisit(MySqlShowBinaryLogsStatement x) {
   }

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

   public void endVisit(MySqlShowMasterLogsStatement x) {
   }

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

   public void endVisit(MySqlShowCharacterSetStatement x) {
   }

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

   public void endVisit(MySqlShowCollationStatement x) {
   }

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

   public void endVisit(MySqlShowBinLogEventsStatement x) {
   }

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

   public void endVisit(MySqlShowContributorsStatement x) {
   }

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

   public void endVisit(MySqlShowCreateDatabaseStatement x) {
   }

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

   public void endVisit(MySqlShowCreateEventStatement x) {
   }

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

   public void endVisit(MySqlShowCreateFunctionStatement x) {
   }

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

   public void endVisit(MySqlShowCreateProcedureStatement x) {
   }

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

   public void endVisit(MySqlShowCreateTriggerStatement x) {
   }

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

   public void endVisit(MySqlShowEngineStatement x) {
   }

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

   public void endVisit(MySqlShowEnginesStatement x) {
   }

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

   public void endVisit(MySqlShowErrorsStatement x) {
   }

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

   public void endVisit(MySqlShowEventsStatement x) {
   }

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

   public void endVisit(MySqlShowFunctionCodeStatement x) {
   }

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

   public void endVisit(MySqlShowFunctionStatusStatement x) {
   }

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

   public void endVisit(MySqlShowGrantsStatement x) {
   }

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

   public void endVisit(MySqlUserName x) {
   }

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

   public void endVisit(MySqlAlterDatabaseSetOption x) {
   }

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

   public void endVisit(MySqlAlterDatabaseKillJob x) {
   }

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

   public void endVisit(MySqlShowMasterStatusStatement x) {
   }

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

   public void endVisit(MySqlShowOpenTablesStatement x) {
   }

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

   public void endVisit(MySqlShowPluginsStatement x) {
   }

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

   public void endVisit(MySqlShowPartitionsStatement x) {
   }

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

   public void endVisit(MySqlShowPrivilegesStatement x) {
   }

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

   public void endVisit(MySqlShowProcedureCodeStatement x) {
   }

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

   public void endVisit(MySqlShowProcedureStatusStatement x) {
   }

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

   public void endVisit(MySqlShowProcessListStatement x) {
   }

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

   public void endVisit(MySqlShowProfileStatement x) {
   }

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

   public void endVisit(MySqlShowProfilesStatement x) {
   }

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

   public void endVisit(MySqlShowRelayLogEventsStatement x) {
   }

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

   public void endVisit(MySqlShowSlaveHostsStatement x) {
   }

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

   public void endVisit(MySqlShowSequencesStatement x) {
   }

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

   public void endVisit(MySqlShowSlaveStatusStatement x) {
   }

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

   public void endVisit(MySqlShowSlowStatement x) {
   }

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

   public void endVisit(MySqlShowTableStatusStatement x) {
   }

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

   public void endVisit(MySqlShowTriggersStatement x) {
   }

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

   public void endVisit(MySqlShowVariantsStatement x) {
   }

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

   public void endVisit(MySqlShowTraceStatement x) {
   }

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

   public void endVisit(MySqlShowBroadcastsStatement x) {
   }

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

   public void endVisit(MySqlShowRuleStatement x) {
   }

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

   public void endVisit(MySqlShowRuleStatusStatement x) {
   }

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

   public void endVisit(MySqlShowDsStatement x) {
   }

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

   public void endVisit(MySqlShowDdlStatusStatement x) {
   }

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

   public void endVisit(MySqlShowTopologyStatement x) {
   }

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

   public void endVisit(MySqlRenameTableStatement.Item x) {
   }

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

   public void endVisit(MySqlRenameTableStatement x) {
   }

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

   public void endVisit(MysqlShowDbLockStatement x) {
   }

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

   public void endVisit(MySqlShowDatabaseStatusStatement x) {
   }

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

   public void endVisit(MySqlUseIndexHint x) {
   }

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

   public void endVisit(MySqlIgnoreIndexHint x) {
   }

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

   public void endVisit(MySqlLockTableStatement x) {
   }

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

   public void endVisit(MySqlLockTableStatement.Item x) {
   }

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

   public void endVisit(MySqlUnlockTablesStatement x) {
   }

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

   public void endVisit(MySqlForceIndexHint x) {
   }

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

   public void endVisit(MySqlAlterTableChangeColumn x) {
   }

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

   public void endVisit(MySqlAlterTableOption x) {
   }

   public void endVisit(MySqlCreateTableStatement x) {
   }

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

   public void endVisit(MySqlHelpStatement x) {
   }

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

   public void endVisit(MySqlCharExpr x) {
   }

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

   public void endVisit(MySqlAlterTableModifyColumn x) {
   }

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

   public void endVisit(MySqlAlterTableDiscardTablespace x) {
   }

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

   public void endVisit(MySqlAlterTableImportTablespace x) {
   }

   public boolean visit(MySqlCreateTableStatement.TableSpaceOption x) {
      return true;
   }

   public void endVisit(MySqlCreateTableStatement.TableSpaceOption x) {
   }

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

   public void endVisit(MySqlAnalyzeStatement x) {
   }

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

   public void endVisit(MySqlCreateExternalCatalogStatement x) {
   }

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

   public void endVisit(MySqlAlterUserStatement x) {
   }

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

   public void endVisit(MySqlOptimizeStatement x) {
   }

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

   public void endVisit(MySqlHintStatement x) {
   }

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

   public void endVisit(MySqlOrderingExpr x) {
   }

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

   public void endVisit(MySqlCaseStatement x) {
   }

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

   public void endVisit(MySqlDeclareStatement x) {
   }

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

   public void endVisit(MySqlSelectIntoStatement x) {
   }

   public boolean visit(MySqlCaseStatement.MySqlWhenStatement x) {
      return true;
   }

   public void endVisit(MySqlCaseStatement.MySqlWhenStatement x) {
   }

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

   public void endVisit(MySqlLeaveStatement x) {
   }

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

   public void endVisit(MySqlIterateStatement x) {
   }

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

   public void endVisit(MySqlRepeatStatement x) {
   }

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

   public void endVisit(MySqlCursorDeclareStatement x) {
   }

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

   public void endVisit(MySqlUpdateTableSource x) {
   }

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

   public void endVisit(MySqlAlterTableAlterColumn x) {
   }

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

   public void endVisit(MySqlAlterTableForce x) {
   }

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

   public void endVisit(MySqlAlterTableLock x) {
   }

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

   public void endVisit(MySqlAlterTableOrderBy x) {
   }

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

   public void endVisit(MySqlAlterTableValidation x) {
   }

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

   public void endVisit(MySqlSubPartitionByKey x) {
   }

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

   public void endVisit(MySqlSubPartitionByList x) {
   }

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

   public void endVisit(MySqlDeclareHandlerStatement x) {
   }

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

   public void endVisit(MySqlDeclareConditionStatement x) {
   }

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

   public void endVisit(MySqlFlushStatement x) {
   }

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

   public void endVisit(MySqlEventSchedule x) {
   }

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

   public void endVisit(MySqlCreateEventStatement x) {
   }

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

   public void endVisit(MySqlCreateAddLogFileGroupStatement x) {
   }

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

   public void endVisit(MySqlCreateServerStatement x) {
   }

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

   public void endVisit(MySqlCreateTableSpaceStatement x) {
   }

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

   public void endVisit(MySqlAlterEventStatement x) {
   }

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

   public void endVisit(MySqlAlterLogFileGroupStatement x) {
   }

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

   public void endVisit(MySqlAlterServerStatement x) {
   }

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

   public void endVisit(MySqlAlterTablespaceStatement x) {
   }

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

   public void endVisit(MySqlChecksumTableStatement x) {
   }

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

   public void endVisit(MySqlShowDatasourcesStatement x) {
   }

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

   public void endVisit(MySqlShowNodeStatement x) {
   }

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

   public void endVisit(MySqlShowHelpStatement x) {
   }

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

   public void endVisit(MySqlFlashbackStatement x) {
   }

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

   public void endVisit(MySqlShowConfigStatement x) {
   }

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

   public void endVisit(MySqlShowPlanCacheStatement x) {
   }

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

   public void endVisit(MySqlShowPhysicalProcesslistStatement x) {
   }

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

   public void endVisit(MySqlRenameSequenceStatement x) {
   }

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

   public void endVisit(MySqlCheckTableStatement x) {
   }

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

   public void endVisit(MysqlCreateFullTextCharFilterStatement x) {
   }

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

   public void endVisit(MysqlShowFullTextStatement x) {
   }

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

   public void endVisit(MysqlShowCreateFullTextStatement x) {
   }

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

   public void endVisit(MysqlAlterFullTextStatement x) {
   }

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

   public void endVisit(MysqlDropFullTextStatement x) {
   }

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

   public void endVisit(MysqlCreateFullTextTokenizerStatement x) {
   }

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

   public void endVisit(MysqlCreateFullTextTokenFilterStatement x) {
   }

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

   public void endVisit(MysqlCreateFullTextAnalyzerStatement x) {
   }

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

   public void endVisit(MysqlCreateFullTextDictionaryStatement x) {
   }

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

   public void endVisit(MySqlAlterTableAlterFullTextIndex x) {
   }

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

   public void endVisit(MySqlExecuteForAdsStatement x) {
   }

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

   public void endVisit(MySqlManageInstanceGroupStatement x) {
   }

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

   public void endVisit(MySqlRaftMemberChangeStatement x) {
   }

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

   public void endVisit(MySqlRaftLeaderTransferStatement x) {
   }

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

   public void endVisit(MySqlMigrateStatement x) {
   }

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

   public void endVisit(MySqlShowClusterNameStatement x) {
   }

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

   public void endVisit(MySqlShowJobStatusStatement x) {
   }

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

   public void endVisit(MySqlShowMigrateTaskStatusStatement x) {
   }

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

   public void endVisit(MySqlSubPartitionByValue x) {
   }

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

   public void endVisit(MySqlExtPartition x) {
   }

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

   public void endVisit(MySqlExtPartition.Item x) {
   }

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

   public void endVisit(MySqlJSONTableExpr x) {
   }

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

   public void endVisit(MySqlJSONTableExpr.Column x) {
   }

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

   public void endVisit(MysqlAlterTableAlterCheck x) {
   }

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

   public void endVisit(MySqlIntervalExpr x) {
   }

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

   public void endVisit(MySqlTableTableSource x) {
   }

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

   public void endVisit(MySqlAlterTableAlterIndex x) {
   }

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

   public void endVisit(MySqLGrantStatement x) {
   }

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

   public void endVisit(MySqLRevokeStatement x) {
   }

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

   public void endVisit(MySqlRepairTableStatement x) {
   }

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

   public void endVisit(MySQLImportTableStatement x) {
   }

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

   public void endVisit(MySqLShowColumnStatement x) {
   }

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

   public void endVisit(MySqLShowCreateTableStatement x) {
   }

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

   public void endVisit(MySqLCacheIndexStatement x) {
   }

   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(SQLBetweenExpr x) {
      return true;
   }

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

   public boolean visit(SQLCaseExpr 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(SQLInListExpr 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(SQLSelectGroupByClause x) {
      return true;
   }

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

   public void endVisit(SQLCastExpr x) {
   }

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

   public void endVisit(SQLAggregateExpr x) {
   }

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

   public void endVisit(SQLVariantRefExpr x) {
   }

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

   public void endVisit(SQLQueryExpr x) {
   }

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

   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 boolean visit(SQLOrderBy x) {
      return true;
   }

   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 boolean visit(SQLInsertStatement.ValuesClause x) {
      return true;
   }

   public void endVisit(SQLInsertStatement.ValuesClause x) {
   }

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

   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 boolean visit(SQLMethodInvokeExpr x) {
      return true;
   }

   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 boolean visit(SQLLimit x) {
      return true;
   }

   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) {
   }
}
