English | 简体中文

api-docs / org.ktorm.expression / SqlExpressionVisitor

SqlExpressionVisitor

interface SqlExpressionVisitor (source code)

Base interface designed to visit or modify SQL expression trees using visitor pattern.

This interface provides a general visit function to dispatch different type of expression nodes to their specific
visit* functions. Custom expression types that are unknown to Ktorm will be dispatched to visitUnknown.

For each expression type, there is a corresponding visit* function in this interface; for SelectExpression, it’s
visitSelect; for TableExpression, it’s visitTable; and so on. Those functions generally accept an expression
instance of the specific type and dispatch the children nodes to their own visit* functions. Finally, after all
children nodes are visited, the parent expression instance will be directly returned if no children are modified.

As SQL expressions are immutable, to modify an expression, we need to override a child visit* function, and return
a new-created expression in it. Then its parent’s visit* function will notice the change and create a new parent
expression using the modified child node returned by us. As the process is recursive, the ancestor nodes also returns
new-created instances. Finally, as a result of calling visit, a new expression tree will be returned with our
modifications applied.

SqlFormatter is a typical example used to format expressions as executable SQL strings.

Functions

NameSummary

visit

open fun visit(expr: SqlExpression): SqlExpression

Dispatch different type of expression nodes to their specific visit* functions. Custom expression types that
are unknown to Ktorm will be dispatched to visitUnknown.

visitAggregate

open fun <T : Any> visitAggregate(
    expr: AggregateExpression<T>
): AggregateExpression<T>

Function that visits an AggregateExpression.

visitArgument

open fun <T : Any> visitArgument(
    expr: ArgumentExpression<T>
): ArgumentExpression<T>

Function that visits an ArgumentExpression.

visitBetween

open fun visitBetween(
    expr: BetweenExpression
): BetweenExpression

Function that visits a BetweenExpression.

visitBinary

open fun <T : Any> visitBinary(
    expr: BinaryExpression<T>
): BinaryExpression<T>

Function that visits a BinaryExpression.

visitCaseWhen

open fun <T : Any> visitCaseWhen(
    expr: CaseWhenExpression<T>
): CaseWhenExpression<T>

Function that visits a CaseWhenExpression.

visitCasting

open fun <T : Any> visitCasting(
    expr: CastingExpression<T>
): CastingExpression<T>

Function that visits a CastingExpression.

visitColumn

open fun <T : Any> visitColumn(
    expr: ColumnExpression<T>
): ColumnExpression<T>

Function that visits a ColumnExpression.

visitColumnAssignment

open fun <T : Any> visitColumnAssignment(
    expr: ColumnAssignmentExpression<T>
): ColumnAssignmentExpression<T>

Function that visits a ColumnAssignmentExpression.

visitColumnDeclaring

open fun <T : Any> visitColumnDeclaring(
    expr: ColumnDeclaringExpression<T>
): ColumnDeclaringExpression<T>

Function that visits a ColumnDeclaringExpression.

visitDelete

open fun visitDelete(
    expr: DeleteExpression
): DeleteExpression

Function that visits a DeleteExpression.

visitExists

open fun visitExists(
    expr: ExistsExpression
): ExistsExpression

Function that visits an ExistsExpression.

visitExpressionList

open fun <T : SqlExpression> visitExpressionList(
    original: List<T>,
    subVisitor: (T) -> T = { visit(it) as T }
): List<T>

Helper function for visiting a list of expressions.

visitFunction

open fun <T : Any> visitFunction(
    expr: FunctionExpression<T>
): FunctionExpression<T>

Function that visits a FunctionExpression.

visitInList

open fun visitInList(
    expr: InListExpression
): InListExpression

Function that visits an InListExpression.

visitInsert

open fun visitInsert(
    expr: InsertExpression
): InsertExpression

Function that visits an InsertExpression.

visitInsertFromQuery

open fun visitInsertFromQuery(
    expr: InsertFromQueryExpression
): InsertFromQueryExpression

Function that visits an InsertFromQueryExpression.

visitJoin

open fun visitJoin(expr: JoinExpression): JoinExpression

Function that visits a JoinExpression.

visitOrderBy

open fun visitOrderBy(
    expr: OrderByExpression
): OrderByExpression

Function that visits an OrderByExpression.

visitQuery

open fun visitQuery(expr: QueryExpression): QueryExpression

Function that visits a QueryExpression.

visitQuerySource

open fun visitQuerySource(
    expr: QuerySourceExpression
): QuerySourceExpression

Function that visits a QuerySourceExpression.

visitScalar

open fun <T : Any> visitScalar(
    expr: ScalarExpression<T>
): ScalarExpression<T>

Function that visits a general ScalarExpression, this function dispatches different type of scalar expressions
to their specific visit* functions. Custom expression types that are unknown to Ktorm will be dispatched to
visitUnknown

visitSelect

open fun visitSelect(
    expr: SelectExpression
): SelectExpression

Function that visits a SelectExpression.

visitTable

open fun visitTable(expr: TableExpression): TableExpression

Function that visits a TableExpression.

visitUnary

open fun <T : Any> visitUnary(
    expr: UnaryExpression<T>
): UnaryExpression<T>

Function that visits an UnaryExpression.

visitUnion

open fun visitUnion(expr: UnionExpression): UnionExpression

Function that visits an UnionExpression.

visitUnknown

open fun visitUnknown(expr: SqlExpression): SqlExpression

Function that visits an unknown expression.

visitUpdate

open fun visitUpdate(
    expr: UpdateExpression
): UpdateExpression

Function that visits an UpdateExpression.

visitWhenClauses

open fun <T : Any> visitWhenClauses(
    originalClauses: List<Pair<ScalarExpression<*>, ScalarExpression<T>>>
): List<Pair<ScalarExpression<*>, ScalarExpression<T>>>

Helper function for visiting when clauses of CaseWhenExpression.

visitWindowFrameBound

open fun visitWindowFrameBound(
    expr: WindowFrameBoundExpression
): WindowFrameBoundExpression

Function that visits a WindowFrameBoundExpression.

visitWindowFunction

open fun <T : Any> visitWindowFunction(
    expr: WindowFunctionExpression<T>
): WindowFunctionExpression<T>

Function that visits a WindowFunctionExpression.

visitWindowSpecification

open fun visitWindowSpecification(
    expr: WindowSpecificationExpression
): WindowSpecificationExpression

Function that visits a WindowSpecificationExpression.

Extension Functions

NameSummary

eq

infix fun <T : Any> T.eq(
    expr: ColumnDeclaring<T>
): BinaryExpression<Boolean>

Equal operator, translated to = in SQL.

neq

infix fun <T : Any> T.neq(
    expr: ColumnDeclaring<T>
): BinaryExpression<Boolean>

Not-equal operator, translated to <> in SQL.

notEq

infix fun <T : Any> T.notEq(
    expr: ColumnDeclaring<T>
): BinaryExpression<Boolean>

Not-equal operator, translated to <> in SQL.

Inheritors

NameSummary

MySqlExpressionVisitor

interface MySqlExpressionVisitor : SqlExpressionVisitor

Base interface designed to visit or modify MySQL expression trees using visitor pattern.

PostgreSqlExpressionVisitor

interface PostgreSqlExpressionVisitor : SqlExpressionVisitor

Base interface designed to visit or modify PostgreSQL expression trees using visitor pattern.

SqlFormatter

abstract class SqlFormatter : SqlExpressionVisitor

Implementation of SqlExpressionVisitor, visiting SQL expression trees using visitor pattern. After a visit
completes, the executable SQL string will be generated in the sql property with its execution parameters
in parameters.

SQLiteExpressionVisitor

interface SQLiteExpressionVisitor : SqlExpressionVisitor

Base interface designed to visit or modify SQLite expression trees using visitor pattern.