content: /*
   * Copyright 1999-2012 Alibaba Group.
   *  
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *  
   *      http://www.apache.org/licenses/LICENSE-2.0
   *  
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  /**
   * (created at 2011-5-30)
   */
  package com.alibaba.cobar.parser.visitor;
  
  import com.alibaba.cobar.parser.ast.expression.BinaryOperatorExpression;
  import com.alibaba.cobar.parser.ast.expression.PolyadicOperatorExpression;
  import com.alibaba.cobar.parser.ast.expression.UnaryOperatorExpression;
  import com.alibaba.cobar.parser.ast.expression.comparison.BetweenAndExpression;
  import com.alibaba.cobar.parser.ast.expression.comparison.ComparisionEqualsExpression;
  import com.alibaba.cobar.parser.ast.expression.comparison.ComparisionIsExpression;
  import com.alibaba.cobar.parser.ast.expression.comparison.ComparisionNullSafeEqualsExpression;
  import com.alibaba.cobar.parser.ast.expression.comparison.InExpression;
  import com.alibaba.cobar.parser.ast.expression.logical.LogicalAndExpression;
  import com.alibaba.cobar.parser.ast.expression.logical.LogicalOrExpression;
  import com.alibaba.cobar.parser.ast.expression.misc.InExpressionList;
  import com.alibaba.cobar.parser.ast.expression.misc.UserExpression;
  import com.alibaba.cobar.parser.ast.expression.primary.CaseWhenOperatorExpression;
  import com.alibaba.cobar.parser.ast.expression.primary.DefaultValue;
  import com.alibaba.cobar.parser.ast.expression.primary.ExistsPrimary;
  import com.alibaba.cobar.parser.ast.expression.primary.Identifier;
  import com.alibaba.cobar.parser.ast.expression.primary.MatchExpression;
  import com.alibaba.cobar.parser.ast.expression.primary.ParamMarker;
  import com.alibaba.cobar.parser.ast.expression.primary.PlaceHolder;
  import com.alibaba.cobar.parser.ast.expression.primary.RowExpression;
  import com.alibaba.cobar.parser.ast.expression.primary.SysVarPrimary;
  import com.alibaba.cobar.parser.ast.expression.primary.UsrDefVarPrimary;
  import com.alibaba.cobar.parser.ast.expression.primary.function.FunctionExpression;
  import com.alibaba.cobar.parser.ast.expression.primary.function.cast.Cast;
  import com.alibaba.cobar.parser.ast.expression.primary.function.cast.Convert;
  import com.alibaba.cobar.parser.ast.expression.primary.function.datetime.Extract;
  import com.alibaba.cobar.parser.ast.expression.primary.function.datetime.GetFormat;
  import com.alibaba.cobar.parser.ast.expression.primary.function.datetime.Timestampadd;
  import com.alibaba.cobar.parser.ast.expression.primary.function.datetime.Timestampdiff;
  import com.alibaba.cobar.parser.ast.expression.primary.function.groupby.Avg;
  import com.alibaba.cobar.parser.ast.expression.primary.function.groupby.Count;
  import com.alibaba.cobar.parser.ast.expression.primary.function.groupby.GroupConcat;
  import com.alibaba.cobar.parser.ast.expression.primary.function.groupby.Max;
  import com.alibaba.cobar.parser.ast.expression.primary.function.groupby.Min;
  import com.alibaba.cobar.parser.ast.expression.primary.function.groupby.Sum;
  import com.alibaba.cobar.parser.ast.expression.primary.function.string.Char;
  import com.alibaba.cobar.parser.ast.expression.primary.function.string.Trim;
  import com.alibaba.cobar.parser.ast.expression.primary.literal.IntervalPrimary;
  import com.alibaba.cobar.parser.ast.expression.primary.literal.LiteralBitField;
  import com.alibaba.cobar.parser.ast.expression.primary.literal.LiteralBoolean;
  import com.alibaba.cobar.parser.ast.expression.primary.literal.LiteralHexadecimal;
  import com.alibaba.cobar.parser.ast.expression.primary.literal.LiteralNull;
  import com.alibaba.cobar.parser.ast.expression.primary.literal.LiteralNumber;
  import com.alibaba.cobar.parser.ast.expression.primary.literal.LiteralString;
  import com.alibaba.cobar.parser.ast.expression.string.LikeExpression;
  import com.alibaba.cobar.parser.ast.expression.type.CollateExpression;
  import com.alibaba.cobar.parser.ast.fragment.GroupBy;
  import com.alibaba.cobar.parser.ast.fragment.Limit;
  import com.alibaba.cobar.parser.ast.fragment.OrderBy;
  import com.alibaba.cobar.parser.ast.fragment.ddl.ColumnDefinition;
  import com.alibaba.cobar.parser.ast.fragment.ddl.TableOptions;
  import com.alibaba.cobar.parser.ast.fragment.ddl.datatype.DataType;
  import com.alibaba.cobar.parser.ast.fragment.ddl.index.IndexColumnName;
  import com.alibaba.cobar.parser.ast.fragment.ddl.index.IndexOption;
  import com.alibaba.cobar.parser.ast.fragment.tableref.Dual;
  import com.alibaba.cobar.parser.ast.fragment.tableref.IndexHint;
  import com.alibaba.cobar.parser.ast.fragment.tableref.InnerJoin;
  import com.alibaba.cobar.parser.ast.fragment.tableref.NaturalJoin;
  import com.alibaba.cobar.parser.ast.fragment.tableref.OuterJoin;
  import com.alibaba.cobar.parser.ast.fragment.tableref.StraightJoin;
  import com.alibaba.cobar.parser.ast.fragment.tableref.SubqueryFactor;
  import com.alibaba.cobar.parser.ast.fragment.tableref.TableRefFactor;
  import com.alibaba.cobar.parser.ast.fragment.tableref.TableReferences;
  import com.alibaba.cobar.parser.ast.stmt.dal.DALSetCharacterSetStatement;
  import com.alibaba.cobar.parser.ast.stmt.dal.DALSetNamesStatement;
  import com.alibaba.cobar.parser.ast.stmt.dal.DALSetStatement;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowAuthors;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowBinLogEvent;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowBinaryLog;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowCharaterSet;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowCollation;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowColumns;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowContributors;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowCreate;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowDatabases;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowEngine;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowEngines;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowErrors;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowEvents;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowFunctionCode;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowFunctionStatus;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowGrants;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowIndex;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowMasterStatus;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowOpenTables;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowPlugins;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowPrivileges;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowProcedureCode;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowProcedureStatus;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowProcesslist;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowProfile;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowProfiles;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowSlaveHosts;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowSlaveStatus;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowStatus;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowTableStatus;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowTables;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowTriggers;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowVariables;
  import com.alibaba.cobar.parser.ast.stmt.dal.ShowWarnings;
  import com.alibaba.cobar.parser.ast.stmt.ddl.DDLAlterTableStatement;
  import com.alibaba.cobar.parser.ast.stmt.ddl.DDLAlterTableStatement.AlterSpecification;
  import com.alibaba.cobar.parser.ast.stmt.ddl.DDLCreateIndexStatement;
  import com.alibaba.cobar.parser.ast.stmt.ddl.DDLCreateTableStatement;
  import com.alibaba.cobar.parser.ast.stmt.ddl.DDLDropIndexStatement;
  import com.alibaba.cobar.parser.ast.stmt.ddl.DDLDropTableStatement;
  import com.alibaba.cobar.parser.ast.stmt.ddl.DDLRenameTableStatement;
  import com.alibaba.cobar.parser.ast.stmt.ddl.DDLTruncateStatement;
  import com.alibaba.cobar.parser.ast.stmt.ddl.DescTableStatement;
  import com.alibaba.cobar.parser.ast.stmt.dml.DMLCallStatement;
  import com.alibaba.cobar.parser.ast.stmt.dml.DMLDeleteStatement;
  import com.alibaba.cobar.parser.ast.stmt.dml.DMLInsertStatement;
  import com.alibaba.cobar.parser.ast.stmt.dml.DMLReplaceStatement;
  import com.alibaba.cobar.parser.ast.stmt.dml.DMLSelectStatement;
  import com.alibaba.cobar.parser.ast.stmt.dml.DMLSelectUnionStatement;
  import com.alibaba.cobar.parser.ast.stmt.dml.DMLUpdateStatement;
  import com.alibaba.cobar.parser.ast.stmt.extension.ExtDDLCreatePolicy;
  import com.alibaba.cobar.parser.ast.stmt.extension.ExtDDLDropPolicy;
  import com.alibaba.cobar.parser.ast.stmt.mts.MTSReleaseStatement;
  import com.alibaba.cobar.parser.ast.stmt.mts.MTSRollbackStatement;
  import com.alibaba.cobar.parser.ast.stmt.mts.MTSSavepointStatement;
  import com.alibaba.cobar.parser.ast.stmt.mts.MTSSetTransactionStatement;
  
  /**
   * @author <a href="mailto:shuo.qius@alibaba-inc.com">QIU Shuo</a>
   */
  public interface SQLASTVisitor {
  
      void visit(BetweenAndExpression node);
  
      void visit(ComparisionIsExpression node);
  
      void visit(InExpressionList node);
  
      void visit(LikeExpression node);
  
      void visit(CollateExpression node);
  
      void visit(UserExpression node);
  
      void visit(UnaryOperatorExpression node);
  
      void visit(BinaryOperatorExpression node);
  
      void visit(PolyadicOperatorExpression node);
  
      void visit(LogicalAndExpression node);
  
      void visit(LogicalOrExpression node);
  
      void visit(ComparisionEqualsExpression node);
  
      void visit(ComparisionNullSafeEqualsExpression node);
  
      void visit(InExpression node);
  
      // -------------------------------------------------------
      void visit(FunctionExpression node);
  
      void visit(Char node);
  
      void visit(Convert node);
  
      void visit(Trim node);
  
      void visit(Cast node);
  
      void visit(Avg node);
  
      void visit(Max node);
  
      void visit(Min node);
  
      void visit(Sum node);
  
      void visit(Count node);
  
      void visit(GroupConcat node);
  
      void visit(Extract node);
  
      void visit(Timestampdiff node);
  
      void visit(Timestampadd node);
  
      void visit(GetFormat node);
  
      // -------------------------------------------------------
      void visit(IntervalPrimary node);
  
      void visit(LiteralBitField node);
  
      void visit(LiteralBoolean node);
  
      void visit(LiteralHexadecimal node);
  
      void visit(LiteralNull node);
  
      void visit(LiteralNumber node);
  
      void visit(LiteralString node);
  
      void visit(CaseWhenOperatorExpression node);
  
      void visit(DefaultValue node);
  
      void visit(ExistsPrimary node);
  
      void visit(PlaceHolder node);
  
      void visit(Identifier node);
  
      void visit(MatchExpression node);
  
      void visit(ParamMarker node);
  
      void visit(RowExpression node);
  
      void visit(SysVarPrimary node);
  
      void visit(UsrDefVarPrimary node);
  
      // -------------------------------------------------------
      void visit(IndexHint node);
  
      void visit(InnerJoin node);
  
      void visit(NaturalJoin node);
  
      void visit(OuterJoin node);
  
      void visit(StraightJoin node);
  
      void visit(SubqueryFactor node);
  
      void visit(TableReferences node);
  
      void visit(TableRefFactor node);
  
      void visit(Dual dual);
  
      void visit(GroupBy node);
  
      void visit(Limit node);
  
      void visit(OrderBy node);
  
      void visit(ColumnDefinition node);
  
      void visit(IndexOption node);
  
      void visit(IndexColumnName node);
  
      void visit(TableOptions node);
  
      void visit(AlterSpecification node);
  
      void visit(DataType node);
  
      // -------------------------------------------------------
      void visit(ShowAuthors node);
  
      void visit(ShowBinaryLog node);
  
      void visit(ShowBinLogEvent node);
  
      void visit(ShowCharaterSet node);
  
      void visit(ShowCollation node);
  
      void visit(ShowColumns node);
  
      void visit(ShowContributors node);
  
      void visit(ShowCreate node);
  
      void visit(ShowDatabases node);
  
      void visit(ShowEngine node);
  
      void visit(ShowEngines node);
  
      void visit(ShowErrors node);
  
      void visit(ShowEvents node);
  
      void visit(ShowFunctionCode node);
  
      void visit(ShowFunctionStatus node);
  
      void visit(ShowGrants node);
  
      void visit(ShowIndex node);
  
      void visit(ShowMasterStatus node);
  
      void visit(ShowOpenTables node);
  
      void visit(ShowPlugins node);
  
      void visit(ShowPrivileges node);
  
      void visit(ShowProcedureCode node);
  
      void visit(ShowProcedureStatus node);
  
      void visit(ShowProcesslist node);
  
      void visit(ShowProfile node);
  
      void visit(ShowProfiles node);
  
      void visit(ShowSlaveHosts node);
  
      void visit(ShowSlaveStatus node);
  
      void visit(ShowStatus node);
  
      void visit(ShowTables node);
  
      void visit(ShowTableStatus node);
  
      void visit(ShowTriggers node);
  
      void visit(ShowVariables node);
  
      void visit(ShowWarnings node);
  
      void visit(DescTableStatement node);
  
      void visit(DALSetStatement node);
  
      void visit(DALSetNamesStatement node);
  
      void visit(DALSetCharacterSetStatement node);
  
      // -------------------------------------------------------
      void visit(DMLCallStatement node);
  
      void visit(DMLDeleteStatement node);
  
      void visit(DMLInsertStatement node);
  
      void visit(DMLReplaceStatement node);
  
      void visit(DMLSelectStatement node);
  
      void visit(DMLSelectUnionStatement node);
  
      void visit(DMLUpdateStatement node);
  
      void visit(MTSSetTransactionStatement node);
  
      void visit(MTSSavepointStatement node);
  
      void visit(MTSReleaseStatement node);
  
      void visit(MTSRollbackStatement node);
  
      void visit(DDLTruncateStatement node);
  
      void visit(DDLAlterTableStatement node);
  
      void visit(DDLCreateIndexStatement node);
  
      void visit(DDLCreateTableStatement node);
  
      void visit(DDLRenameTableStatement node);
  
      void visit(DDLDropIndexStatement node);
  
      void visit(DDLDropTableStatement node);
  
      void visit(ExtDDLCreatePolicy node);
  
      void visit(ExtDDLDropPolicy node);
  
  }
  