Class AbstractSqlAstTranslator<T extends JdbcOperation>

java.lang.Object
org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T>
All Implemented Interfaces:
Appendable, SqlAppender, SqlAstTranslator<T>, SqlAstWalker
Direct Known Subclasses:
CockroachSqlAstTranslator, DB2SqlAstTranslator, HANASqlAstTranslator, HSQLSqlAstTranslator, MariaDBSqlAstTranslator, MySQLSqlAstTranslator, SpannerSqlAstTranslator, SqlAstTranslatorWithMerge, SqlAstTranslatorWithUpsert, StandardSqlAstTranslator, SybaseASESqlAstTranslator, SybaseSqlAstTranslator, TiDBSqlAstTranslator

public abstract class AbstractSqlAstTranslator<T extends JdbcOperation> extends Object implements SqlAstTranslator<T>, SqlAppender
  • Constructor Details

  • Method Details

    • getDialect

      public Dialect getDialect()
    • getSessionFactory

      public SessionFactoryImplementor getSessionFactory()
      Specified by:
      getSessionFactory in interface SqlAstTranslator<T extends JdbcOperation>
    • castFunction

      protected FunctionRenderer castFunction()
    • getWrapperOptions

      protected WrapperOptions getWrapperOptions()
    • getIntegerType

      public BasicType<Integer> getIntegerType()
    • getStringType

      public BasicType<String> getStringType()
    • getBooleanType

      public BasicType<Boolean> getBooleanType()
    • getSql

      public String getSql()
    • getSqlBuffer

      @Internal public StringBuilder getSqlBuffer()
    • cleanup

      protected void cleanup()
    • getParameterBinders

      public List<JdbcParameterBinder> getParameterBinders()
    • getSqlAppender

      protected SqlAppender getSqlAppender()
    • getAffectedTableNames

      public Set<String> getAffectedTableNames()
      Description copied from interface: SqlAstTranslator
      Not the best spot for this. Returns the table names collected while walking the SQL AST. It's ok here because the translator is consider a one-time-use. It just needs to be called after translation. A better option is probably to have "translation" objects that expose the affected table-names.
      Specified by:
      getAffectedTableNames in interface SqlAstTranslator<T extends JdbcOperation>
    • getStatement

      protected Statement getStatement()
    • getCurrentDmlStatement

      public MutationStatement getCurrentDmlStatement()
    • getParameterRenderingMode

      protected SqlAstNodeRenderingMode getParameterRenderingMode()
    • addAdditionalWherePredicate

      protected void addAdditionalWherePredicate(Predicate predicate)
    • supportsFilterClause

      public boolean supportsFilterClause()
      Description copied from interface: SqlAstTranslator
      Whether the FILTER clause for aggregate functions is supported.
      Specified by:
      supportsFilterClause in interface SqlAstTranslator<T extends JdbcOperation>
    • appendSql

      public void appendSql(String fragment)
      Description copied from interface: SqlAppender
      Add the passed fragment into the in-flight buffer
      Specified by:
      appendSql in interface SqlAppender
    • appendSql

      public void appendSql(char fragment)
      Specified by:
      appendSql in interface SqlAppender
    • appendSql

      public void appendSql(int value)
      Specified by:
      appendSql in interface SqlAppender
    • appendSql

      public void appendSql(long value)
      Specified by:
      appendSql in interface SqlAppender
    • appendSql

      public void appendSql(boolean value)
      Specified by:
      appendSql in interface SqlAppender
    • appendDoubleQuoteEscapedString

      public void appendDoubleQuoteEscapedString(String value)
      Specified by:
      appendDoubleQuoteEscapedString in interface SqlAppender
    • appendSingleQuoteEscapedString

      public void appendSingleQuoteEscapedString(String value)
      Specified by:
      appendSingleQuoteEscapedString in interface SqlAppender
    • append

      public Appendable append(CharSequence csq)
      Specified by:
      append in interface Appendable
      Specified by:
      append in interface SqlAppender
    • append

      public Appendable append(CharSequence csq, int start, int end)
      Specified by:
      append in interface Appendable
      Specified by:
      append in interface SqlAppender
    • append

      public Appendable append(char c)
      Specified by:
      append in interface Appendable
      Specified by:
      append in interface SqlAppender
    • getJdbcServices

      protected JdbcServices getJdbcServices()
    • addAppliedParameterBinding

      protected void addAppliedParameterBinding(JdbcParameter parameter, JdbcParameterBinding binding)
    • getAppliedParameterBindings

      protected Map<JdbcParameter,JdbcParameterBinding> getAppliedParameterBindings()
    • getJdbcLockStrategy

      protected JdbcLockStrategy getJdbcLockStrategy()
    • getJdbcParameterBindings

      protected JdbcParameterBindings getJdbcParameterBindings()
    • getLockOptions

      protected LockOptions getLockOptions()
    • getLimit

      protected Limit getLimit()
    • hasLimit

      protected boolean hasLimit()
    • hasLimit

      protected boolean hasLimit(QueryPart queryPart)
    • hasOffset

      protected boolean hasOffset(QueryPart queryPart)
    • useOffsetFetchClause

      protected boolean useOffsetFetchClause(QueryPart queryPart)
    • isRowsOnlyFetchClauseType

      protected boolean isRowsOnlyFetchClauseType(QueryPart queryPart)
    • getOffsetParameter

      protected JdbcParameter getOffsetParameter()
    • setOffsetParameter

      protected void setOffsetParameter(JdbcParameter offsetParameter)
    • getLimitParameter

      protected JdbcParameter getLimitParameter()
    • setLimitParameter

      protected void setLimitParameter(JdbcParameter limitParameter)
    • getLiteralValue

      public <X> X getLiteralValue(Expression expression)
      Description copied from interface: SqlAstTranslator
      Returns the literal value of the given expression, inlining a parameter value if necessary.
      Specified by:
      getLiteralValue in interface SqlAstTranslator<T extends JdbcOperation>
    • interpretExpression

      protected <R> R interpretExpression(Expression expression, JdbcParameterBindings jdbcParameterBindings)
    • renderExpressionAsLiteral

      protected void renderExpressionAsLiteral(Expression expression, JdbcParameterBindings jdbcParameterBindings)
    • getParameterBindValue

      protected Object getParameterBindValue(JdbcParameter parameter)
    • getLeftHandExpression

      protected Expression getLeftHandExpression(Predicate predicate)
    • inOverOrWithinGroupClause

      protected boolean inOverOrWithinGroupClause()
    • getClauseStack

      protected Stack<Clause> getClauseStack()
    • getStatementStack

      protected Stack<Statement> getStatementStack()
    • getQueryPartStack

      protected Stack<QueryPart> getQueryPartStack()
    • getCurrentQueryPart

      public QueryPart getCurrentQueryPart()
      Description copied from interface: SqlAstTranslator
      Returns the current query part that is translated.
      Specified by:
      getCurrentQueryPart in interface SqlAstTranslator<T extends JdbcOperation>
    • getCurrentClauseStack

      public Stack<Clause> getCurrentClauseStack()
      Specified by:
      getCurrentClauseStack in interface SqlAstTranslator<T extends JdbcOperation>
    • getCurrentCteStatement

      protected CteStatement getCurrentCteStatement()
    • getCteStatement

      protected CteStatement getCteStatement(String cteName)
    • translate

      public T translate(JdbcParameterBindings jdbcParameterBindings, QueryOptions queryOptions)
      Specified by:
      translate in interface SqlAstTranslator<T extends JdbcOperation>
    • translateDelete

      protected JdbcOperationQueryDelete translateDelete(DeleteStatement sqlAst)
    • translateUpdate

      protected JdbcOperationQueryUpdate translateUpdate(UpdateStatement sqlAst)
    • translateInsert

      protected JdbcOperationQueryInsert translateInsert(InsertSelectStatement sqlAst)
    • getUniqueConstraintNameThatMayFail

      protected String getUniqueConstraintNameThatMayFail(InsertSelectStatement sqlAst)
    • translateSelect

      protected JdbcOperationQuerySelect translateSelect(SelectStatement selectStatement)
    • getRowsToSkip

      protected int getRowsToSkip(SelectStatement sqlAstSelect, JdbcParameterBindings jdbcParameterBindings)
    • getMaxRows

      protected int getMaxRows(SelectStatement sqlAstSelect, JdbcParameterBindings jdbcParameterBindings, int rowsToSkip)
    • needsRowsToSkip

      protected boolean needsRowsToSkip()
    • needsMaxRows

      protected boolean needsMaxRows()
    • prepareLimitOffsetParameters

      protected void prepareLimitOffsetParameters()
    • visitSelectStatement

      public void visitSelectStatement(SelectStatement statement)
      Specified by:
      visitSelectStatement in interface SqlAstWalker
    • visitDeleteStatement

      public void visitDeleteStatement(DeleteStatement statement)
      Specified by:
      visitDeleteStatement in interface SqlAstWalker
    • visitUpdateStatement

      public void visitUpdateStatement(UpdateStatement statement)
      Specified by:
      visitUpdateStatement in interface SqlAstWalker
    • visitAssignment

      public void visitAssignment(Assignment assignment)
      Specified by:
      visitAssignment in interface SqlAstWalker
    • visitInsertStatement

      public void visitInsertStatement(InsertSelectStatement statement)
      Specified by:
      visitInsertStatement in interface SqlAstWalker
    • visitDeleteStatementOnly

      protected void visitDeleteStatementOnly(DeleteStatement statement)
    • supportsJoinsInDelete

      protected boolean supportsJoinsInDelete()
    • renderDeleteClause

      protected void renderDeleteClause(DeleteStatement statement)
    • visitUpdateStatementOnly

      protected void visitUpdateStatementOnly(UpdateStatement statement)
    • renderUpdateClause

      protected void renderUpdateClause(UpdateStatement updateStatement)
    • renderDmlTargetTableExpression

      protected void renderDmlTargetTableExpression(NamedTableReference tableReference)
    • hasNonTrivialFromClause

      protected static boolean hasNonTrivialFromClause(FromClause fromClause)
    • determineWhereClauseRestrictionWithJoinEmulation

      protected Predicate determineWhereClauseRestrictionWithJoinEmulation(AbstractUpdateOrDeleteStatement statement)
    • determineWhereClauseRestrictionWithJoinEmulation

      protected Predicate determineWhereClauseRestrictionWithJoinEmulation(AbstractUpdateOrDeleteStatement statement, String dmlTargetAlias)
    • renderSetClause

      protected void renderSetClause(List<Assignment> assignments)
    • visitSetAssignment

      protected void visitSetAssignment(Assignment assignment)
    • visitSetAssignmentEmulateJoin

      protected void visitSetAssignmentEmulateJoin(Assignment assignment, UpdateStatement statement)
    • isStruct

      protected boolean isStruct(JdbcMappingContainer expressionType)
    • visitInsertStatementOnly

      protected void visitInsertStatementOnly(InsertSelectStatement statement)
    • isIntegerDivisionEmulationRequired

      protected boolean isIntegerDivisionEmulationRequired(BinaryArithmeticExpression expression)
    • visitInsertSource

      protected void visitInsertSource(InsertSelectStatement statement)
    • visitInsertStatementEmulateMerge

      protected void visitInsertStatementEmulateMerge(InsertSelectStatement statement)
    • visitUpdateStatementEmulateMerge

      protected void visitUpdateStatementEmulateMerge(UpdateStatement statement)
    • visitUpdateStatementEmulateInlineView

      protected void visitUpdateStatementEmulateInlineView(UpdateStatement statement)
    • visitUpdateStatementEmulateTupleSet

      protected void visitUpdateStatementEmulateTupleSet(UpdateStatement statement)
    • renderMergeUpdateClause

      protected void renderMergeUpdateClause(List<Assignment> assignments, Predicate wherePredicate)
    • visitValuesList

      protected void visitValuesList(List<Values> valuesList)
    • visitValuesListStandard

      protected final void visitValuesListStandard(List<Values> valuesList)
    • visitValuesListEmulateSelectUnion

      protected void visitValuesListEmulateSelectUnion(List<Values> valuesList)
    • visitForUpdateClause

      protected void visitForUpdateClause(QuerySpec querySpec)
    • renderForUpdateClause

      protected void renderForUpdateClause(QuerySpec querySpec, AbstractSqlAstTranslator.ForUpdateClause forUpdateClause)
    • getForUpdate

      protected String getForUpdate()
    • getForShare

      protected String getForShare(int timeoutMillis)
    • getForUpdateWithClause

      protected String getForUpdateWithClause()
    • getNoWait

      protected String getNoWait()
    • getSkipLocked

      protected String getSkipLocked()
    • getEffectiveLockMode

      protected LockMode getEffectiveLockMode(String alias)
    • getEffectiveLockMode

      protected LockMode getEffectiveLockMode(String alias, boolean isRoot)
    • getEffectiveLockTimeout

      protected int getEffectiveLockTimeout(LockMode lockMode)
    • hasAggregateFunctions

      protected boolean hasAggregateFunctions(QuerySpec querySpec)
    • determineLockingStrategy

      protected AbstractSqlAstTranslator.LockStrategy determineLockingStrategy(QuerySpec querySpec, AbstractSqlAstTranslator.ForUpdateClause forUpdateClause, Boolean followOnLocking)
    • visitConflictClause

      protected void visitConflictClause(ConflictClause conflictClause)
    • visitStandardConflictClause

      protected void visitStandardConflictClause(ConflictClause conflictClause)
    • visitOnDuplicateKeyConflictClause

      protected void visitOnDuplicateKeyConflictClause(ConflictClause conflictClause)
    • visitReturningColumns

      protected void visitReturningColumns(Supplier<List<ColumnReference>> returningColumnsAccess)
    • visitReturningColumns

      protected void visitReturningColumns(List<ColumnReference> returningColumns)
    • visitCteContainer

      public void visitCteContainer(CteContainer cteContainer)
    • visitCteObject

      protected void visitCteObject(CteObject cteObject)
    • renderCteColumns

      protected void renderCteColumns(CteStatement cte)
    • determineCyclePathColumnName

      protected String determineCyclePathColumnName(CteStatement cte)
    • isInRecursiveQueryPart

      protected boolean isInRecursiveQueryPart()
    • isInSubquery

      protected boolean isInSubquery()
    • visitCteDefinition

      protected void visitCteDefinition(CteStatement cte)
    • supportsWithClause

      protected boolean supportsWithClause()
      Whether the SQL with clause is supported.
    • supportsNestedWithClause

      protected boolean supportsNestedWithClause()
      Whether the SQL with clause is supported within a CTE.
    • supportsWithClauseInSubquery

      protected boolean supportsWithClauseInSubquery()
      Whether the SQL with clause is supported within a subquery.
    • needsCteInlining

      protected boolean needsCteInlining()
      Whether CTEs should be inlined rather than rendered as CTEs.
    • shouldInlineCte

      protected boolean shouldInlineCte(TableGroup tableGroup)
      Whether CTEs should be inlined rather than rendered as CTEs.
    • needsRecursiveKeywordInWithClause

      protected boolean needsRecursiveKeywordInWithClause()
      Whether the SQL with clause requires the "recursive" keyword for recursive CTEs.
    • supportsRecursiveSearchClause

      protected boolean supportsRecursiveSearchClause()
      Whether the SQL search clause is supported, which can be used for recursive CTEs.
    • supportsRecursiveCycleClause

      protected boolean supportsRecursiveCycleClause()
      Whether the SQL cycle clause is supported, which can be used for recursive CTEs.
    • supportsRecursiveCycleUsingClause

      protected boolean supportsRecursiveCycleUsingClause()
      Whether the SQL cycle clause supports the using sub-clause.
    • supportsRecursiveClauseArrayAndRowEmulation

      protected boolean supportsRecursiveClauseArrayAndRowEmulation()
      Whether the recursive search and cycle clause emulations based on the array and row constructor is supported.
    • supportsRowConstructor

      protected boolean supportsRowConstructor()
      Whether the SQL row constructor is supported.
    • supportsArrayConstructor

      protected boolean supportsArrayConstructor()
      Whether the SQL array constructor is supported.
    • renderMaterializationHint

      protected void renderMaterializationHint(CteMaterialization materialization)
    • renderSearchClause

      protected void renderSearchClause(CteStatement cte)
    • renderStandardSearchClause

      protected void renderStandardSearchClause(CteStatement cte)
    • renderCycleClause

      protected void renderCycleClause(CteStatement cte)
    • renderStandardCycleClause

      protected void renderStandardCycleClause(CteStatement cte)
    • renderRecursiveCteVirtualSelections

      protected void renderRecursiveCteVirtualSelections(SelectClause selectClause)
    • emulateSearchClauseOrderWithRowAndArray

      protected void emulateSearchClauseOrderWithRowAndArray(SelectClause selectClause)
    • visitRecursivePath

      protected void visitRecursivePath(Expression recursivePath, int sizeEstimate)
      Renders the recursive path, possibly wrapping a cast expression around it, to make sure a type with proper size is chosen.
    • emulateCycleClauseWithRowAndArray

      protected void emulateCycleClauseWithRowAndArray(SelectClause selectClause)
    • getArrayContainsFunction

      protected String getArrayContainsFunction()
      Returns the name of the array_contains(array, element) function, which is used for emulating the cycle clause.
    • renderStringContainsExactlyPredicate

      protected void renderStringContainsExactlyPredicate(Expression haystack, Expression needle)
    • castNumberToString

      protected Expression castNumberToString(Expression expression, int precision, int scale)
      Casts a number expression to a string with the given precision and scale.
    • visitQueryGroup

      public void visitQueryGroup(QueryGroup queryGroup)
      Specified by:
      visitQueryGroup in interface SqlAstWalker
    • renderQueryGroup

      protected void renderQueryGroup(QueryGroup queryGroup, boolean renderOrderByAndOffsetFetchClause)
    • visitQuerySpec

      public void visitQuerySpec(QuerySpec querySpec)
      Specified by:
      visitQuerySpec in interface SqlAstWalker
    • supportsSimpleQueryGrouping

      protected boolean supportsSimpleQueryGrouping()
    • supportsDuplicateSelectItemsInQueryGroup

      protected boolean supportsDuplicateSelectItemsInQueryGroup()
    • visitWhereClause

      protected final void visitWhereClause(Predicate whereClauseRestrictions)
    • resolveAliasedExpression

      protected Expression resolveAliasedExpression(Expression expression)
    • resolveAliasedExpression

      protected Expression resolveAliasedExpression(List<SqlSelection> sqlSelections, Expression expression)
    • resolveExpressionToAlias

      protected Expression resolveExpressionToAlias(Expression expression)
    • visitGroupByClause

      protected final void visitGroupByClause(QuerySpec querySpec, SelectItemReferenceStrategy referenceStrategy)
    • visitPartitionByClause

      protected final void visitPartitionByClause(List<Expression> partitionExpressions)
    • visitPartitionExpressions

      protected final void visitPartitionExpressions(List<Expression> partitionExpressions, SelectItemReferenceStrategy referenceStrategy)
    • visitPartitionExpressions

      protected final void visitPartitionExpressions(List<Expression> partitionExpressions, Function<Expression,Expression> resolveAliasExpression, boolean inlineParametersOfAliasedExpressions)
    • renderPartitionItem

      protected void renderPartitionItem(Expression expression)
    • visitHavingClause

      protected final void visitHavingClause(QuerySpec querySpec)
    • visitOrderBy

      protected void visitOrderBy(List<SortSpecification> sortSpecifications)
    • renderOrderBy

      protected void renderOrderBy(boolean addWhitespace, List<SortSpecification> sortSpecifications)
    • emulateSelectTupleComparison

      protected void emulateSelectTupleComparison(List<SqlSelection> lhsSelections, List<? extends SqlAstNode> rhsExpressions, ComparisonOperator operator, boolean indexOptimized)
    • emulateTupleComparison

      protected void emulateTupleComparison(List<? extends SqlAstNode> lhsExpressions, List<? extends SqlAstNode> rhsExpressions, ComparisonOperator operator, boolean indexOptimized)
      A tuple comparison like (a, b) > (1, 2) can be emulated through it logical definition: a > 1 or a = 1 and b > 2. The normal tuple comparison emulation is not very index friendly though because of the top level OR predicate. Index optimized emulation of tuple comparisons puts an AND predicate on the top level. The effect of that is, that the database can do an index seek to efficiently find a superset of matching rows. Generally, it is sufficient to just add a broader predicate like for (a, b) > (1, 2) we add a >= 1 and (..). But we can further optimize this if we just remove the non-matching parts from this too broad predicate. For (a, b, c) > (1, 2, 3) we use the broad predicate a >= 1 and then want to remove rows where a = 1 and (b, c) <= (2, 3)
    • supportsIntersect

      protected boolean supportsIntersect()
    • supportsNestedSubqueryCorrelation

      protected boolean supportsNestedSubqueryCorrelation()
    • renderExpressionsAsSubquery

      protected void renderExpressionsAsSubquery(List<? extends Expression> expressions)
    • renderSelectSimpleComparison

      protected void renderSelectSimpleComparison(List<SqlSelection> lhsExpressions, Expression expression, ComparisonOperator operator)
    • renderSelectTupleComparison

      protected void renderSelectTupleComparison(List<SqlSelection> lhsExpressions, SqlTuple tuple, ComparisonOperator operator)
    • renderTupleComparisonStandard

      protected void renderTupleComparisonStandard(List<SqlSelection> lhsExpressions, SqlTuple tuple, ComparisonOperator operator)
    • renderComparison

      protected void renderComparison(Expression lhs, ComparisonOperator operator, Expression rhs)
    • renderComparisonStandard

      protected void renderComparisonStandard(Expression lhs, ComparisonOperator operator, Expression rhs)
    • renderComparisonDistinctOperator

      protected void renderComparisonDistinctOperator(Expression lhs, ComparisonOperator operator, Expression rhs)
    • renderComparisonEmulateDecode

      protected void renderComparisonEmulateDecode(Expression lhs, ComparisonOperator operator, Expression rhs)
    • renderComparisonEmulateDecode

      protected void renderComparisonEmulateDecode(Expression lhs, ComparisonOperator operator, Expression rhs, SqlAstNodeRenderingMode firstArgRenderingMode)
    • renderComparisonEmulateCase

      protected void renderComparisonEmulateCase(Expression lhs, ComparisonOperator operator, Expression rhs)
    • renderComparisonEmulateIntersect

      protected void renderComparisonEmulateIntersect(Expression lhs, ComparisonOperator operator, Expression rhs)
    • visitSortSpecification

      public void visitSortSpecification(SortSpecification sortSpecification)
      Specified by:
      visitSortSpecification in interface SqlAstWalker
    • visitSortSpecification

      protected void visitSortSpecification(Expression sortExpression, SortDirection sortOrder, Nulls nullPrecedence, boolean ignoreCase)
    • renderSortExpression

      protected void renderSortExpression(Expression sortExpression, boolean ignoreCase)
    • supportsNullPrecedence

      protected boolean supportsNullPrecedence()
    • emulateSortSpecificationNullPrecedence

      protected void emulateSortSpecificationNullPrecedence(Expression sortExpression, Nulls nullPrecedence)
    • visitOffsetFetchClause

      public void visitOffsetFetchClause(QueryPart queryPart)
      Specified by:
      visitOffsetFetchClause in interface SqlAstWalker
    • renderOffsetFetchClause

      protected void renderOffsetFetchClause(QueryPart queryPart, boolean renderOffsetRowsKeyword)
    • renderOffsetFetchClause

      protected void renderOffsetFetchClause(Expression offsetExpression, Expression fetchExpression, FetchClauseType fetchClauseType, boolean renderOffsetRowsKeyword)
    • renderOffset

      protected void renderOffset(Expression offsetExpression, boolean renderOffsetRowsKeyword)
    • renderFetch

      protected void renderFetch(Expression fetchExpression, Expression offsetExpressionToAdd, FetchClauseType fetchClauseType)
    • renderOffsetExpression

      protected void renderOffsetExpression(Expression offsetExpression)
    • renderFetchExpression

      protected void renderFetchExpression(Expression fetchExpression)
    • renderTopClause

      protected void renderTopClause(QuerySpec querySpec, boolean addOffset, boolean needsParenthesis)
    • renderTopClause

      protected void renderTopClause(Expression offsetExpression, Expression fetchExpression, FetchClauseType fetchClauseType, boolean addOffset, boolean needsParenthesis)
    • renderTopStartAtClause

      protected void renderTopStartAtClause(QuerySpec querySpec)
    • renderTopStartAtClause

      protected void renderTopStartAtClause(Expression offsetExpression, Expression fetchExpression, FetchClauseType fetchClauseType)
    • renderRowsToClause

      protected void renderRowsToClause(QuerySpec querySpec)
    • renderRowsToClause

      protected void renderRowsToClause(Expression offsetClauseExpression, Expression fetchClauseExpression)
    • renderFetchPlusOffsetExpression

      protected void renderFetchPlusOffsetExpression(Expression fetchClauseExpression, Expression offsetClauseExpression, int offset)
    • renderFetchPlusOffsetExpressionAsLiteral

      protected void renderFetchPlusOffsetExpressionAsLiteral(Expression fetchClauseExpression, Expression offsetClauseExpression, int offset)
    • renderFetchPlusOffsetExpressionAsSingleParameter

      protected void renderFetchPlusOffsetExpressionAsSingleParameter(Expression fetchClauseExpression, Expression offsetClauseExpression, int offset)
    • renderFirstSkipClause

      protected void renderFirstSkipClause(QuerySpec querySpec)
    • renderFirstSkipClause

      protected void renderFirstSkipClause(Expression offsetExpression, Expression fetchExpression)
    • renderSkipFirstClause

      protected void renderSkipFirstClause(QuerySpec querySpec)
    • renderSkipFirstClause

      protected void renderSkipFirstClause(Expression offsetExpression, Expression fetchExpression)
    • renderFirstClause

      protected void renderFirstClause(QuerySpec querySpec)
    • renderFirstClause

      protected void renderFirstClause(Expression offsetExpression, Expression fetchExpression)
    • renderCombinedLimitClause

      protected void renderCombinedLimitClause(QueryPart queryPart)
    • renderCombinedLimitClause

      protected void renderCombinedLimitClause(Expression offsetExpression, Expression fetchExpression)
    • renderLimitOffsetClause

      protected void renderLimitOffsetClause(QueryPart queryPart)
    • renderLimitOffsetClause

      protected void renderLimitOffsetClause(Expression offsetExpression, Expression fetchExpression)
    • assertRowsOnlyFetchClauseType

      protected void assertRowsOnlyFetchClauseType(QueryPart queryPart)
    • getQueryPartForRowNumbering

      protected QueryPart getQueryPartForRowNumbering()
    • isRowNumberingCurrentQueryPart

      protected boolean isRowNumberingCurrentQueryPart()
    • emulateFetchOffsetWithWindowFunctions

      protected void emulateFetchOffsetWithWindowFunctions(QueryPart queryPart, boolean emulateFetchClause)
    • emulateFetchOffsetWithWindowFunctions

      protected void emulateFetchOffsetWithWindowFunctions(QueryPart queryPart, Expression offsetExpression, Expression fetchExpression, FetchClauseType fetchClauseType, boolean emulateFetchClause)
    • emulateFetchOffsetWithWindowFunctionsVisitQueryPart

      protected void emulateFetchOffsetWithWindowFunctionsVisitQueryPart(QueryPart queryPart)
    • withRowNumbering

      protected final void withRowNumbering(QueryPart queryPart, boolean needsSelectAliases, Runnable r)
    • visitSelectClause

      public void visitSelectClause(SelectClause selectClause)
      Specified by:
      visitSelectClause in interface SqlAstWalker
    • visitSqlSelections

      protected void visitSqlSelections(SelectClause selectClause)
    • renderVirtualSelections

      protected void renderVirtualSelections(SelectClause selectClause)
    • getSelectItemReference

      protected final SqlSelectionExpression getSelectItemReference(Expression expression)
    • renderRowNumberingSelectItems

      protected void renderRowNumberingSelectItems(SelectClause selectClause, QueryPart queryPart)
    • getFetchClauseTypeForRowNumbering

      protected FetchClauseType getFetchClauseTypeForRowNumbering(QueryPart queryPartForRowNumbering)
    • visitOver

      public void visitOver(Over<?> over)
      Specified by:
      visitOver in interface SqlAstWalker
    • visitOverClause

      protected final void visitOverClause(List<Expression> partitionExpressions, List<SortSpecification> sortSpecifications)
    • visitOverClause

      protected void visitOverClause(List<Expression> partitionExpressions, List<SortSpecification> sortSpecifications, FrameMode mode, FrameKind startKind, Expression startExpression, FrameKind endKind, Expression endExpression, FrameExclusion exclusion, boolean orderedSetAggregate)
    • renderRowNumber

      protected void renderRowNumber(SelectClause selectClause, QueryPart queryPart)
    • isParameter

      public static final boolean isParameter(Expression expression)
    • isLiteral

      protected final boolean isLiteral(Expression expression)
    • getSortSpecificationsRowNumbering

      protected List<SortSpecification> getSortSpecificationsRowNumbering(SelectClause selectClause, QueryPart queryPart)
    • visitSqlSelection

      public void visitSqlSelection(SqlSelection sqlSelection)
      Specified by:
      visitSqlSelection in interface SqlAstWalker
    • visitSqlSelectExpression

      protected void visitSqlSelectExpression(Expression expression)
    • renderSelectExpression

      protected void renderSelectExpression(Expression expression)
    • renderExpressionAsClauseItem

      protected void renderExpressionAsClauseItem(Expression expression)
    • renderSelectExpressionWithCastedOrInlinedPlainParameters

      protected void renderSelectExpressionWithCastedOrInlinedPlainParameters(Expression expression)
    • renderCasted

      protected void renderCasted(Expression expression)
    • renderLiteral

      protected void renderLiteral(Literal literal, boolean castParameter)
    • visitFromClause

      public void visitFromClause(FromClause fromClause)
      Specified by:
      visitFromClause in interface SqlAstWalker
    • renderFromClauseSpaces

      protected void renderFromClauseSpaces(FromClause fromClause)
    • renderFromClauseAfterUpdateSet

      protected void renderFromClauseAfterUpdateSet(UpdateStatement statement)
    • renderFromClauseExcludingDmlTargetReference

      protected void renderFromClauseExcludingDmlTargetReference(UpdateStatement statement)
    • renderFromClauseJoiningDmlTargetReference

      protected void renderFromClauseJoiningDmlTargetReference(UpdateStatement statement)
    • createRowMatchingPredicate

      protected Predicate createRowMatchingPredicate(TableGroup dmlTargetTableGroup, String lhsAlias, String rhsAlias)
    • renderDmlTargetTableGroup

      protected void renderDmlTargetTableGroup(TableGroup tableGroup)
    • renderRootTableGroup

      protected void renderRootTableGroup(TableGroup tableGroup, List<TableGroupJoin> tableGroupJoinCollector)
    • renderTableGroup

      protected void renderTableGroup(TableGroup tableGroup, Predicate predicate, List<TableGroupJoin> tableGroupJoinCollector)
    • needsLocking

      protected boolean needsLocking(QuerySpec querySpec)
    • hasNestedTableGroupsToRender

      protected boolean hasNestedTableGroupsToRender(List<TableGroupJoin> nestedTableGroupJoins)
    • renderPrimaryTableReference

      protected boolean renderPrimaryTableReference(TableGroup tableGroup, LockMode lockMode)
    • renderDerivedTableReference

      protected void renderDerivedTableReference(DerivedTableReference tableReference)
    • inlineCteTableGroup

      protected void inlineCteTableGroup(TableGroup tableGroup, LockMode lockMode)
    • isCorrelated

      protected boolean isCorrelated(CteStatement cteStatement)
    • renderNamedTableReference

      protected boolean renderNamedTableReference(NamedTableReference tableReference, LockMode lockMode)
    • visitValuesTableReference

      public void visitValuesTableReference(ValuesTableReference tableReference)
      Specified by:
      visitValuesTableReference in interface SqlAstWalker
    • visitQueryPartTableReference

      public void visitQueryPartTableReference(QueryPartTableReference tableReference)
      Specified by:
      visitQueryPartTableReference in interface SqlAstWalker
    • visitFunctionTableReference

      public void visitFunctionTableReference(FunctionTableReference tableReference)
      Specified by:
      visitFunctionTableReference in interface SqlAstWalker
    • renderNamedSetReturningFunction

      public void renderNamedSetReturningFunction(String functionName, List<? extends SqlAstNode> sqlAstArguments, AnonymousTupleTableGroupProducer tupleType, String tableIdentifierVariable, SqlAstNodeRenderingMode argumentRenderingMode)
      Description copied from interface: SqlAstTranslator
      Renders a named set returning function.
      Specified by:
      renderNamedSetReturningFunction in interface SqlAstTranslator<T extends JdbcOperation>
    • renderSimpleNamedFunction

      protected final void renderSimpleNamedFunction(String functionName, List<? extends SqlAstNode> sqlAstArguments, SqlAstNodeRenderingMode argumentRenderingMode)
    • emulateQueryPartTableReferenceColumnAliasing

      protected void emulateQueryPartTableReferenceColumnAliasing(QueryPartTableReference tableReference)
    • emulateValuesTableReferenceColumnAliasing

      protected void emulateValuesTableReferenceColumnAliasing(ValuesTableReference tableReference)
    • renderDerivedTableReferenceIdentificationVariable

      protected void renderDerivedTableReferenceIdentificationVariable(DerivedTableReference tableReference)
    • renderTableReferenceIdentificationVariable

      protected void renderTableReferenceIdentificationVariable(TableReference tableReference)
    • registerAffectedTable

      protected void registerAffectedTable(NamedTableReference tableReference)
    • registerAffectedTable

      protected void registerAffectedTable(String tableExpression)
    • renderTableReferenceJoins

      protected void renderTableReferenceJoins(TableGroup tableGroup)
    • renderTableReferenceJoins

      protected void renderTableReferenceJoins(TableGroup tableGroup, int swappedJoinIndex, boolean forceLeftJoin)
    • processTableGroupJoins

      protected void processTableGroupJoins(TableGroup source)
    • processNestedTableGroupJoins

      protected void processNestedTableGroupJoins(TableGroup source, List<TableGroupJoin> tableGroupJoinCollector)
    • processTableGroupJoin

      protected void processTableGroupJoin(TableGroupJoin tableGroupJoin, List<TableGroupJoin> tableGroupJoinCollector)
    • renderTableGroupJoin

      protected void renderTableGroupJoin(TableGroupJoin tableGroupJoin, List<TableGroupJoin> tableGroupJoinCollector)
    • determineLateralEmulationPredicate

      protected Predicate determineLateralEmulationPredicate(TableGroup tableGroup)
    • shouldEmulateLateralWithIntersect

      protected boolean shouldEmulateLateralWithIntersect(QueryPart queryPart)
    • visitTableGroup

      public void visitTableGroup(TableGroup tableGroup)
      Specified by:
      visitTableGroup in interface SqlAstWalker
    • visitTableGroupJoin

      public void visitTableGroupJoin(TableGroupJoin tableGroupJoin)
      Specified by:
      visitTableGroupJoin in interface SqlAstWalker
    • visitNamedTableReference

      public void visitNamedTableReference(NamedTableReference tableReference)
      Specified by:
      visitNamedTableReference in interface SqlAstWalker
    • visitTableReferenceJoin

      public void visitTableReferenceJoin(TableReferenceJoin tableReferenceJoin)
      Specified by:
      visitTableReferenceJoin in interface SqlAstWalker
    • visitColumnReference

      public void visitColumnReference(ColumnReference columnReference)
      Specified by:
      visitColumnReference in interface SqlAstWalker
    • visitNestedColumnReference

      public void visitNestedColumnReference(NestedColumnReference nestedColumnReference)
      Specified by:
      visitNestedColumnReference in interface SqlAstWalker
    • visitAggregateColumnWriteExpression

      public void visitAggregateColumnWriteExpression(AggregateColumnWriteExpression aggregateColumnWriteExpression)
      Specified by:
      visitAggregateColumnWriteExpression in interface SqlAstWalker
    • determineColumnReferenceQualifier

      protected String determineColumnReferenceQualifier(ColumnReference columnReference)
    • visitExtractUnit

      public void visitExtractUnit(ExtractUnit extractUnit)
      Specified by:
      visitExtractUnit in interface SqlAstWalker
    • visitDurationUnit

      public void visitDurationUnit(DurationUnit unit)
      Specified by:
      visitDurationUnit in interface SqlAstWalker
    • visitFormat

      public void visitFormat(Format format)
      Specified by:
      visitFormat in interface SqlAstWalker
    • visitStar

      public void visitStar(Star star)
      Specified by:
      visitStar in interface SqlAstWalker
    • visitTrimSpecification

      public void visitTrimSpecification(TrimSpecification trimSpecification)
      Specified by:
      visitTrimSpecification in interface SqlAstWalker
    • visitCastTarget

      public void visitCastTarget(CastTarget castTarget)
      Specified by:
      visitCastTarget in interface SqlAstWalker
    • getSqlTypeName

      public static String getSqlTypeName(SqlTypedMapping castTarget, TypeConfiguration typeConfiguration)
    • getCastTypeName

      public static String getCastTypeName(SqlTypedMapping castTarget, TypeConfiguration typeConfiguration)
    • visitDistinct

      public void visitDistinct(Distinct distinct)
      Specified by:
      visitDistinct in interface SqlAstWalker
    • visitOverflow

      public void visitOverflow(Overflow overflow)
      Specified by:
      visitOverflow in interface SqlAstWalker
    • visitParameter

      public void visitParameter(JdbcParameter jdbcParameter)
      Specified by:
      visitParameter in interface SqlAstWalker
    • visitParameterAsParameter

      protected void visitParameterAsParameter(JdbcParameter jdbcParameter)
    • renderParameterAsParameter

      protected final void renderParameterAsParameter(JdbcParameter jdbcParameter)
    • renderWrappedParameter

      protected void renderWrappedParameter(JdbcParameter jdbcParameter)
    • renderParameterAsParameter

      protected void renderParameterAsParameter(int position, JdbcParameter jdbcParameter)
      Renders a parameter marker for the given position
    • render

      public void render(SqlAstNode sqlAstNode, SqlAstNodeRenderingMode renderingMode)
      Description copied from interface: SqlAstTranslator
      Renders the given SQL AST node with the given rendering mode.
      Specified by:
      render in interface SqlAstTranslator<T extends JdbcOperation>
    • withParameterRenderingMode

      protected void withParameterRenderingMode(SqlAstNodeRenderingMode renderingMode, Runnable runnable)
    • visitTuple

      public void visitTuple(SqlTuple tuple)
      Specified by:
      visitTuple in interface SqlAstWalker
    • renderCommaSeparated

      protected final void renderCommaSeparated(Iterable<? extends SqlAstNode> expressions)
    • renderCommaSeparatedSelectExpression

      protected final void renderCommaSeparatedSelectExpression(Iterable<? extends SqlAstNode> expressions)
    • renderCommaSeparatedSelectExpression

      protected final void renderCommaSeparatedSelectExpression(Iterable<? extends SqlAstNode> expressions, Iterable<String> aliases)
    • visitCollation

      public void visitCollation(Collation collation)
      Specified by:
      visitCollation in interface SqlAstWalker
    • visitSqlSelectionExpression

      public void visitSqlSelectionExpression(SqlSelectionExpression expression)
      Specified by:
      visitSqlSelectionExpression in interface SqlAstWalker
    • visitEntityTypeLiteral

      public void visitEntityTypeLiteral(EntityTypeLiteral expression)
      Specified by:
      visitEntityTypeLiteral in interface SqlAstWalker
    • visitEmbeddableTypeLiteral

      public void visitEmbeddableTypeLiteral(EmbeddableTypeLiteral expression)
      Specified by:
      visitEmbeddableTypeLiteral in interface SqlAstWalker
    • visitBinaryArithmeticExpression

      public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression)
      Specified by:
      visitBinaryArithmeticExpression in interface SqlAstWalker
    • visitArithmeticOperand

      protected void visitArithmeticOperand(Expression expression)
    • visitDuration

      public void visitDuration(Duration duration)
      Specified by:
      visitDuration in interface SqlAstWalker
    • renderInterval

      protected void renderInterval(Duration duration)
    • renderIntervalLiteral

      protected void renderIntervalLiteral(Literal literal, TemporalUnit unit)
    • visitConversion

      public void visitConversion(Conversion conversion)
      Specified by:
      visitConversion in interface SqlAstWalker
    • visitCaseSearchedExpression

      public final void visitCaseSearchedExpression(CaseSearchedExpression caseSearchedExpression)
      Specified by:
      visitCaseSearchedExpression in interface SqlAstWalker
    • visitCaseSearchedExpression

      protected void visitCaseSearchedExpression(CaseSearchedExpression caseSearchedExpression, boolean inSelect)
    • visitAnsiCaseSearchedExpression

      protected void visitAnsiCaseSearchedExpression(CaseSearchedExpression caseSearchedExpression, Consumer<Expression> resultRenderer)
    • visitDecodeCaseSearchedExpression

      protected void visitDecodeCaseSearchedExpression(CaseSearchedExpression caseSearchedExpression)
    • visitCaseSimpleExpression

      public final void visitCaseSimpleExpression(CaseSimpleExpression caseSimpleExpression)
      Specified by:
      visitCaseSimpleExpression in interface SqlAstWalker
    • visitCaseSimpleExpression

      protected void visitCaseSimpleExpression(CaseSimpleExpression caseSimpleExpression, boolean inSelect)
    • visitAnsiCaseSimpleExpression

      protected void visitAnsiCaseSimpleExpression(CaseSimpleExpression caseSimpleExpression, Consumer<Expression> resultRenderer)
    • areAllResultsParameters

      protected boolean areAllResultsParameters(CaseSearchedExpression caseSearchedExpression)
    • areAllResultsParameters

      protected boolean areAllResultsParameters(CaseSimpleExpression caseSimpleExpression)
    • visitAny

      public void visitAny(Any any)
      Specified by:
      visitAny in interface SqlAstWalker
    • visitEvery

      public void visitEvery(Every every)
      Specified by:
      visitEvery in interface SqlAstWalker
    • visitSummarization

      public void visitSummarization(Summarization every)
      Specified by:
      visitSummarization in interface SqlAstWalker
    • visitJdbcLiteral

      public void visitJdbcLiteral(JdbcLiteral<?> jdbcLiteral)
      Specified by:
      visitJdbcLiteral in interface SqlAstWalker
    • visitQueryLiteral

      public void visitQueryLiteral(QueryLiteral<?> queryLiteral)
      Specified by:
      visitQueryLiteral in interface SqlAstWalker
    • visitUnparsedNumericLiteral

      public <N extends Number> void visitUnparsedNumericLiteral(UnparsedNumericLiteral<N> literal)
      Specified by:
      visitUnparsedNumericLiteral in interface SqlAstWalker
    • renderNull

      protected void renderNull(Literal literal)
    • renderAsLiteral

      protected void renderAsLiteral(JdbcParameter jdbcParameter, Object literalValue)
    • visitUnaryOperationExpression

      public void visitUnaryOperationExpression(UnaryOperation unaryOperationExpression)
      Specified by:
      visitUnaryOperationExpression in interface SqlAstWalker
    • visitModifiedSubQueryExpression

      public void visitModifiedSubQueryExpression(ModifiedSubQueryExpression expression)
      Specified by:
      visitModifiedSubQueryExpression in interface SqlAstWalker
    • visitSelfRenderingPredicate

      public void visitSelfRenderingPredicate(SelfRenderingPredicate selfRenderingPredicate)
      Specified by:
      visitSelfRenderingPredicate in interface SqlAstWalker
    • visitSelfRenderingExpression

      public void visitSelfRenderingExpression(SelfRenderingExpression expression)
      Specified by:
      visitSelfRenderingExpression in interface SqlAstWalker
    • visitBooleanExpressionPredicate

      public void visitBooleanExpressionPredicate(BooleanExpressionPredicate booleanExpressionPredicate)
      Specified by:
      visitBooleanExpressionPredicate in interface SqlAstWalker
    • visitBetweenPredicate

      public void visitBetweenPredicate(BetweenPredicate betweenPredicate)
      Specified by:
      visitBetweenPredicate in interface SqlAstWalker
    • visitFilterPredicate

      public void visitFilterPredicate(FilterPredicate filterPredicate)
      Specified by:
      visitFilterPredicate in interface SqlAstWalker
    • visitFilterFragmentPredicate

      public void visitFilterFragmentPredicate(FilterPredicate.FilterFragmentPredicate filter)
      Specified by:
      visitFilterFragmentPredicate in interface SqlAstWalker
    • visitSqlFragmentPredicate

      public void visitSqlFragmentPredicate(SqlFragmentPredicate predicate)
      Specified by:
      visitSqlFragmentPredicate in interface SqlAstWalker
    • visitGroupedPredicate

      public void visitGroupedPredicate(GroupedPredicate groupedPredicate)
      Specified by:
      visitGroupedPredicate in interface SqlAstWalker
    • visitInListPredicate

      public void visitInListPredicate(InListPredicate inListPredicate)
      Specified by:
      visitInListPredicate in interface SqlAstWalker
    • visitInArrayPredicate

      public void visitInArrayPredicate(InArrayPredicate inArrayPredicate)
      Specified by:
      visitInArrayPredicate in interface SqlAstWalker
    • visitInSubQueryPredicate

      public void visitInSubQueryPredicate(InSubQueryPredicate inSubQueryPredicate)
      Specified by:
      visitInSubQueryPredicate in interface SqlAstWalker
    • emulateSubQueryRelationalRestrictionPredicate

      protected <X extends Expression> void emulateSubQueryRelationalRestrictionPredicate(Predicate predicate, boolean negated, SelectStatement selectStatement, X lhsTuple, AbstractSqlAstTranslator.SubQueryRelationalRestrictionEmulationRenderer<X> renderer, ComparisonOperator tupleComparisonOperator)
    • emulateQuantifiedTupleSubQueryPredicate

      protected void emulateQuantifiedTupleSubQueryPredicate(Predicate predicate, SelectStatement selectStatement, SqlTuple lhsTuple, ComparisonOperator tupleComparisonOperator)
      An optimized emulation for relational tuple sub-query comparisons. The idea of this method is to use limit 1 to select the max or min tuple and only compare against that.
    • visitExistsPredicate

      public void visitExistsPredicate(ExistsPredicate existsPredicate)
      Specified by:
      visitExistsPredicate in interface SqlAstWalker
    • visitJunction

      public void visitJunction(Junction junction)
      Specified by:
      visitJunction in interface SqlAstWalker
    • visitLikePredicate

      public void visitLikePredicate(LikePredicate likePredicate)
      Specified by:
      visitLikePredicate in interface SqlAstWalker
    • renderCaseInsensitiveLikeEmulation

      protected void renderCaseInsensitiveLikeEmulation(Expression lhs, Expression rhs, Expression escapeCharacter, boolean negated)
    • renderBackslashEscapedLikePattern

      protected void renderBackslashEscapedLikePattern(Expression pattern, Expression escapeCharacter, boolean noBackslashEscapes)
    • appendBackslashEscapedLikeLiteral

      protected void appendBackslashEscapedLikeLiteral(SqlAppender appender, String literal, boolean noBackslashEscapes)
    • visitNegatedPredicate

      public void visitNegatedPredicate(NegatedPredicate negatedPredicate)
      Specified by:
      visitNegatedPredicate in interface SqlAstWalker
    • visitNullnessPredicate

      public void visitNullnessPredicate(NullnessPredicate nullnessPredicate)
      Specified by:
      visitNullnessPredicate in interface SqlAstWalker
    • visitThruthnessPredicate

      public void visitThruthnessPredicate(ThruthnessPredicate thruthnessPredicate)
      Specified by:
      visitThruthnessPredicate in interface SqlAstWalker
    • visitRelationalPredicate

      public void visitRelationalPredicate(ComparisonPredicate comparisonPredicate)
      Specified by:
      visitRelationalPredicate in interface SqlAstWalker
    • supportsQuantifiedPredicates

      protected boolean supportsQuantifiedPredicates()
      Is this dialect known to support quantified predicates.

      Basically, does it support syntax like ... where FIRST_NAME > ALL (select ...) ...

      Returns:
      True if this SQL dialect is known to support quantified predicates; false otherwise.
    • supportsDistinctFromPredicate

      protected boolean supportsDistinctFromPredicate()
      Is this SQL dialect known to support some kind of distinct from predicate.

      Basically, does it support syntax like ... where FIRST_NAME IS DISTINCT FROM LAST_NAME

      Returns:
      True if this SQL dialect is known to support some kind of distinct from predicate; false otherwise
    • supportsRowValueConstructorSyntax

      protected boolean supportsRowValueConstructorSyntax()
      Is this dialect known to support what ANSI-SQL terms "row value constructor" syntax; sometimes called tuple syntax.

      Basically, does it support syntax like ... where (FIRST_NAME, LAST_NAME) = ('Steve', 'Ebersole') ...

      Returns:
      True if this SQL dialect is known to support "row value constructor" syntax; false otherwise.
    • supportsRowValueConstructorGtLtSyntax

      protected boolean supportsRowValueConstructorGtLtSyntax()
      Is this dialect known to support what ANSI-SQL terms "row value constructor" syntax; sometimes called tuple syntax with <, >, and operators.

      Basically, does it support syntax like ... where (FIRST_NAME, LAST_NAME) &lt; ('Steve', 'Ebersole') ...

      Returns:
      True if this SQL dialect is known to support "row value constructor" syntax with relational comparison operators; false otherwise.
    • supportsRowValueConstructorDistinctFromSyntax

      protected boolean supportsRowValueConstructorDistinctFromSyntax()
      Is this dialect known to support what ANSI-SQL terms "row value constructor" syntax; sometimes called tuple syntax with is distinct from and is not distinct from operators.

      Basically, does it support syntax like ... where (FIRST_NAME, LAST_NAME) is distinct from ('Steve', 'Ebersole') ...

      Returns:
      True if this SQL dialect is known to support "row value constructor" syntax with distinct from comparison operators; false otherwise.
    • supportsRowValueConstructorSyntaxInSet

      protected boolean supportsRowValueConstructorSyntaxInSet()
      Is this dialect known to support what ANSI-SQL terms "row value constructor" syntax, sometimes called tuple syntax, in the SET clause;

      Basically, does it support syntax like ... SET (FIRST_NAME, LAST_NAME) = ('Steve', 'Ebersole') ...

      Returns:
      True if this SQL dialect is known to support "row value constructor" syntax in the SET clause; false otherwise.
    • supportsRowValueConstructorSyntaxInQuantifiedPredicates

      protected boolean supportsRowValueConstructorSyntaxInQuantifiedPredicates()
      Is this dialect known to support what ANSI-SQL terms "row value constructor" syntax; sometimes called tuple syntax with quantified predicates.

      Basically, does it support syntax like ... where (FIRST_NAME, LAST_NAME) = ALL (select ...) ...

      Returns:
      True if this SQL dialect is known to support "row value constructor" syntax with quantified predicates; false otherwise.
    • supportsRowValueConstructorSyntaxInInList

      protected boolean supportsRowValueConstructorSyntaxInInList()
      If the dialect supports row values, does it offer such support in IN lists as well?

      For example, ... where (FIRST_NAME, LAST_NAME) IN ( (?, ?), (?, ?) ) ...

      Returns:
      True if this SQL dialect is known to support "row value constructor" syntax in the IN list; false otherwise.
    • supportsRowValueConstructorSyntaxInInSubQuery

      protected boolean supportsRowValueConstructorSyntaxInInSubQuery()
      If the dialect supports row values, does it offer such support in IN subqueries as well?

      For example, ... where (FIRST_NAME, LAST_NAME) IN ( select ... ) ...

      Returns:
      True if this SQL dialect is known to support "row value constructor" syntax in the IN subqueries; false otherwise.
    • supportsJoinInMutationStatementSubquery

      protected boolean supportsJoinInMutationStatementSubquery()
      If the dialect supports using joins in mutation statement subquery that could also use columns from the mutation target table
    • getDual

      protected String getDual()
      Returns a table expression that has one row.
      Returns:
      the SQL equivalent to Oracle's dual.
    • getFromDualForSelectOnly

      protected String getFromDualForSelectOnly()
    • visitStandardTableInsert

      public void visitStandardTableInsert(TableInsertStandard tableInsert)
      Specified by:
      visitStandardTableInsert in interface SqlAstWalker
    • renderIntoIntoAndTable

      protected void renderIntoIntoAndTable(TableInsertStandard tableInsert)
      Renders the insert into <table name> portion of an insert
    • renderInsertIntoNoColumns

      protected void renderInsertIntoNoColumns(TableInsertStandard tableInsert)
      Handle rendering an insert with no columns
    • visitCustomTableInsert

      public void visitCustomTableInsert(TableInsertCustomSql tableInsert)
      Specified by:
      visitCustomTableInsert in interface SqlAstWalker
    • visitStandardTableUpdate

      public void visitStandardTableUpdate(TableUpdateStandard tableUpdate)
      Specified by:
      visitStandardTableUpdate in interface SqlAstWalker
    • visitOptionalTableUpdate

      public void visitOptionalTableUpdate(OptionalTableUpdate tableUpdate)
      Specified by:
      visitOptionalTableUpdate in interface SqlAstWalker
    • visitCustomTableUpdate

      public void visitCustomTableUpdate(TableUpdateCustomSql tableUpdate)
      Specified by:
      visitCustomTableUpdate in interface SqlAstWalker
    • visitStandardTableDelete

      public void visitStandardTableDelete(TableDeleteStandard tableDelete)
      Specified by:
      visitStandardTableDelete in interface SqlAstWalker
    • visitCustomTableDelete

      public void visitCustomTableDelete(TableDeleteCustomSql tableDelete)
      Specified by:
      visitCustomTableDelete in interface SqlAstWalker
    • applyParameter

      protected void applyParameter(ColumnValueParameter parameter)
    • visitColumnWriteFragment

      public void visitColumnWriteFragment(ColumnWriteFragment columnWriteFragment)
      Specified by:
      visitColumnWriteFragment in interface SqlAstWalker
    • simpleColumnWriteFragmentRendering

      protected void simpleColumnWriteFragmentRendering(ColumnWriteFragment columnWriteFragment)