/* * Licensed to CRATE Technology GmbH ("Crate") under one or more contributor * license agreements. See the NOTICE file distributed with this work for * additional information regarding copyright ownership. Crate licenses * this file to you 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. * * However, if you have executed another commercial license agreement * with Crate these terms will supersede the license and you may use the * software solely pursuant to the terms of the relevant commercial agreement. */ package io.crate.sql.tree; import javax.annotation.Nullable; public abstract class AstVisitor<R, C> { public R process(Node node, @Nullable C context) { return node.accept(this, context); } protected R visitNode(Node node, C context) { return null; } protected R visitExpression(Expression node, C context) { return visitNode(node, context); } protected R visitCurrentTime(CurrentTime node, C context) { return visitExpression(node, context); } protected R visitExtract(Extract node, C context) { return visitExpression(node, context); } protected R visitArithmeticExpression(ArithmeticExpression node, C context) { return visitExpression(node, context); } protected R visitBetweenPredicate(BetweenPredicate node, C context) { return visitExpression(node, context); } protected R visitComparisonExpression(ComparisonExpression node, C context) { return visitExpression(node, context); } protected R visitLiteral(Literal node, C context) { return visitExpression(node, context); } protected R visitDateLiteral(DateLiteral node, C context) { return visitLiteral(node, context); } protected R visitDoubleLiteral(DoubleLiteral node, C context) { return visitLiteral(node, context); } protected R visitStatement(Statement node, C context) { return visitNode(node, context); } protected R visitQuery(Query node, C context) { return visitStatement(node, context); } protected R visitExplain(Explain node, C context) { return visitStatement(node, context); } protected R visitShowTables(ShowTables node, C context) { return visitStatement(node, context); } protected R visitShowSchemas(ShowSchemas node, C context) { return visitStatement(node, context); } protected R visitShowColumns(ShowColumns node, C context) { return visitStatement(node, context); } protected R visitTimeLiteral(TimeLiteral node, C context) { return visitLiteral(node, context); } protected R visitWith(With node, C context) { return visitNode(node, context); } protected R visitWithQuery(WithQuery node, C context) { return visitNode(node, context); } protected R visitSelect(Select node, C context) { return visitNode(node, context); } protected R visitRelation(Relation node, C context) { return visitNode(node, context); } protected R visitQueryBody(QueryBody node, C context) { return visitRelation(node, context); } protected R visitQuerySpecification(QuerySpecification node, C context) { return visitQueryBody(node, context); } protected R visitSetOperation(SetOperation node, C context) { return visitQueryBody(node, context); } protected R visitUnion(Union node, C context) { return visitSetOperation(node, context); } protected R visitIntersect(Intersect node, C context) { return visitSetOperation(node, context); } protected R visitExcept(Except node, C context) { return visitSetOperation(node, context); } protected R visitTimestampLiteral(TimestampLiteral node, C context) { return visitLiteral(node, context); } protected R visitWhenClause(WhenClause node, C context) { return visitExpression(node, context); } protected R visitInPredicate(InPredicate node, C context) { return visitExpression(node, context); } protected R visitFunctionCall(FunctionCall node, C context) { return visitExpression(node, context); } protected R visitSimpleCaseExpression(SimpleCaseExpression node, C context) { return visitExpression(node, context); } protected R visitStringLiteral(StringLiteral node, C context) { return visitLiteral(node, context); } protected R visitBooleanLiteral(BooleanLiteral node, C context) { return visitLiteral(node, context); } protected R visitInListExpression(InListExpression node, C context) { return visitExpression(node, context); } protected R visitQualifiedNameReference(QualifiedNameReference node, C context) { return visitExpression(node, context); } protected R visitIfExpression(IfExpression node, C context) { return visitExpression(node, context); } protected R visitNullLiteral(NullLiteral node, C context) { return visitLiteral(node, context); } protected R visitNegativeExpression(NegativeExpression node, C context) { return visitExpression(node, context); } protected R visitNotExpression(NotExpression node, C context) { return visitExpression(node, context); } protected R visitSelectItem(SelectItem node, C context) { return visitNode(node, context); } protected R visitSingleColumn(SingleColumn node, C context) { return visitSelectItem(node, context); } protected R visitAllColumns(AllColumns node, C context) { return visitSelectItem(node, context); } protected R visitSearchedCaseExpression(SearchedCaseExpression node, C context) { return visitExpression(node, context); } protected R visitLikePredicate(LikePredicate node, C context) { return visitExpression(node, context); } protected R visitIsNotNullPredicate(IsNotNullPredicate node, C context) { return visitExpression(node, context); } protected R visitIsNullPredicate(IsNullPredicate node, C context) { return visitExpression(node, context); } protected R visitLongLiteral(LongLiteral node, C context) { return visitLiteral(node, context); } protected R visitLogicalBinaryExpression(LogicalBinaryExpression node, C context) { return visitExpression(node, context); } protected R visitSubqueryExpression(SubqueryExpression node, C context) { return visitExpression(node, context); } protected R visitSortItem(SortItem node, C context) { return visitNode(node, context); } protected R visitTable(Table node, C context) { return visitQueryBody(node, context); } protected R visitTableSubquery(TableSubquery node, C context) { return visitQueryBody(node, context); } protected R visitAliasedRelation(AliasedRelation node, C context) { return visitRelation(node, context); } protected R visitJoin(Join node, C context) { return visitRelation(node, context); } protected R visitExists(ExistsPredicate node, C context) { return visitExpression(node, context); } protected R visitCast(Cast node, C context) { return visitExpression(node, context); } protected R visitTryCast(TryCast node, C context) { return visitExpression(node, context); } protected R visitSubscriptExpression(SubscriptExpression node, C context) { return visitExpression(node, context); } public R visitParameterExpression(ParameterExpression node, C context) { return visitExpression(node, context); } public R visitInsert(Insert node, C context) { return visitStatement(node, context); } public R visitValuesList(ValuesList node, C context) { return visitNode(node, context); } public R visitDelete(Delete node, C context) { return visitStatement(node, context); } public R visitUpdate(Update node, C context) { return visitStatement(node, context); } public R visitAssignment(Assignment node, C context) { return visitNode(node, context); } public R visitCopyFrom(CopyFrom node, C context) { return visitNode(node, context); } public R visitCreateTable(CreateTable node, C context) { return visitStatement(node, context); } public R visitCreateFunction(CreateFunction node, C context) { return visitStatement(node, context); } public R visitFunctionArgument(FunctionArgument node, C context) { return visitNode(node, context); } public R visitDropFunction(DropFunction node, C context) { return visitStatement(node, context); } public R visitShowCreateTable(ShowCreateTable node, C context) { return visitStatement(node, context); } public R visitTableElement(TableElement node, C context) { return visitNode(node, context); } public R visitClusteredBy(ClusteredBy node, C context) { return visitNode(node, context); } public R visitColumnDefinition(ColumnDefinition node, C context) { return visitNode(node, context); } public R visitColumnType(ColumnType node, C context) { return visitNode(node, context); } public R visitObjectColumnType(ObjectColumnType node, C context) { return visitNode(node, context); } public R visitColumnConstraint(ColumnConstraint node, C context) { return visitNode(node, context); } public R visitPrimaryKeyColumnConstraint(PrimaryKeyColumnConstraint node, C context) { return visitNode(node, context); } public R visitNotNullColumnConstraint(NotNullColumnConstraint node, C context) { return visitNode(node, context); } public R visitIndexColumnConstraint(IndexColumnConstraint node, C context) { return visitNode(node, context); } public R visitGenericProperties(GenericProperties node, C context) { return visitNode(node, context); } public R visitGenericProperty(GenericProperty node, C context) { return visitNode(node, context); } public R visitPrimaryKeyConstraint(PrimaryKeyConstraint node, C context) { return visitNode(node, context); } public R visitIndexDefinition(IndexDefinition node, C context) { return visitNode(node, context); } public R visitCollectionColumnType(CollectionColumnType node, C context) { return visitNode(node, context); } public R visitDropTable(DropTable node, C context) { return visitStatement(node, context); } public R visitCreateAnalyzer(CreateAnalyzer node, C context) { return visitStatement(node, context); } public R visitTokenizer(Tokenizer node, C context) { return visitNode(node, context); } public R visitCharFilters(CharFilters node, C context) { return visitNode(node, context); } public R visitTokenFilters(TokenFilters node, C context) { return visitNode(node, context); } public R visitCreateBlobTable(CreateBlobTable node, C context) { return visitNode(node, context); } public R visitDropBlobTable(DropBlobTable node, C context) { return visitNode(node, context); } public R visitRefreshStatement(RefreshStatement node, C context) { return visitStatement(node, context); } public R visitOptimizeStatement(OptimizeStatement node, C context) { return visitStatement(node, context); } public R visitAlterTable(AlterTable node, C context) { return visitStatement(node, context); } public R visitAlterBlobTable(AlterBlobTable node, C context) { return visitStatement(node, context); } public R visitCopyTo(CopyTo node, C context) { return visitStatement(node, context); } public R visitPartitionedBy(PartitionedBy node, C context) { return visitNode(node, context); } public R visitArrayComparisonExpression(ArrayComparisonExpression node, C context) { return visitExpression(node, context); } public R visitArrayLiteral(ArrayLiteral node, C context) { return visitLiteral(node, context); } public R visitObjectLiteral(ObjectLiteral node, C context) { return visitLiteral(node, context); } public R visitArrayLikePredicate(ArrayLikePredicate node, C context) { return visitExpression(node, context); } public R visitSetStatement(SetStatement node, C context) { return visitStatement(node, context); } public R visitResetStatement(ResetStatement node, C context) { return visitStatement(node, context); } public R visitAlterTableAddColumnStatement(AlterTableAddColumn node, C context) { return visitStatement(node, context); } public R visitAddColumnDefinition(AddColumnDefinition node, C context) { return visitTableElement(node, context); } public R visitInsertFromValues(InsertFromValues node, C context) { return visitInsert(node, context); } public R visitInsertFromSubquery(InsertFromSubquery node, C context) { return visitInsert(node, context); } public R visitMatchPredicate(MatchPredicate node, C context) { return visitExpression(node, context); } public R visitMatchPredicateColumnIdent(MatchPredicateColumnIdent node, C context) { return visitExpression(node, context); } public R visitKillStatement(KillStatement node, C context) { return visitStatement(node, context); } public R visitDropRepository(DropRepository node, C context) { return visitStatement(node, context); } public R visitCreateRepository(CreateRepository node, C context) { return visitStatement(node, context); } public R visitDropSnapshot(DropSnapshot node, C context) { return visitStatement(node, context); } public R visitCreateSnapshot(CreateSnapshot node, C context) { return visitStatement(node, context); } public R visitRestoreSnapshot(RestoreSnapshot node, C context) { return visitStatement(node, context); } public R visitTableFunction(TableFunction node, C context) { return visitQueryBody(node, context); } public R visitBegin(BeginStatement node, C context) { return visitStatement(node, context); } public R visitShowTransaction(ShowTransaction showTransaction, C context) { return visitStatement(showTransaction, context); } }