Class TiDBSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>

java.lang.Object
org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T>
org.hibernate.community.dialect.TiDBSqlAstTranslator<T>
All Implemented Interfaces:
Appendable, org.hibernate.sql.ast.spi.SqlAppender, org.hibernate.sql.ast.SqlAstTranslator<T>, org.hibernate.sql.ast.SqlAstWalker

public class TiDBSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation> extends org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T>
A SQL AST translator for TiDB.
  • Nested Class Summary

    Nested classes/interfaces inherited from class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator

    org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.ForUpdateClause, org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.LockStrategy, org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.SubQueryRelationalRestrictionEmulationRenderer<X extends org.hibernate.sql.ast.tree.expression.Expression>
  • Field Summary

    Fields inherited from interface org.hibernate.sql.ast.spi.SqlAppender

    CLOSE_PARENTHESIS, COMMA_SEPARATOR, COMMA_SEPARATOR_CHAR, NO_SEPARATOR, NULL_KEYWORD, OPEN_PARENTHESIS, PARAM_MARKER, WHITESPACE
  • Constructor Summary

    Constructors
    Constructor
    Description
    TiDBSqlAstTranslator(org.hibernate.engine.spi.SessionFactoryImplementor sessionFactory, org.hibernate.sql.ast.tree.Statement statement, TiDBDialect dialect)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected String
    determineColumnReferenceQualifier(org.hibernate.sql.ast.tree.expression.ColumnReference columnReference)
     
     
    protected String
    getForShare(int timeoutMillis)
     
    protected void
    renderComparison(org.hibernate.sql.ast.tree.expression.Expression lhs, org.hibernate.query.sqm.ComparisonOperator operator, org.hibernate.sql.ast.tree.expression.Expression rhs)
     
    protected void
    renderDeleteClause(org.hibernate.sql.ast.tree.delete.DeleteStatement statement)
     
    protected void
    renderDerivedTableReferenceIdentificationVariable(org.hibernate.sql.ast.tree.from.DerivedTableReference tableReference)
     
    protected void
    renderDmlTargetTableExpression(org.hibernate.sql.ast.tree.from.NamedTableReference tableReference)
     
    protected void
    renderExpressionAsClauseItem(org.hibernate.sql.ast.tree.expression.Expression expression)
     
    protected void
    renderPartitionItem(org.hibernate.sql.ast.tree.expression.Expression expression)
     
    protected void
    renderStringContainsExactlyPredicate(org.hibernate.sql.ast.tree.expression.Expression haystack, org.hibernate.sql.ast.tree.expression.Expression needle)
     
    protected void
    renderUpdateClause(org.hibernate.sql.ast.tree.update.UpdateStatement updateStatement)
     
    protected boolean
    shouldEmulateFetchClause(org.hibernate.sql.ast.tree.select.QueryPart queryPart)
     
    protected org.hibernate.sql.exec.spi.JdbcOperationQueryInsert
    translateInsert(org.hibernate.sql.ast.tree.insert.InsertSelectStatement sqlAst)
     
    void
    visitBinaryArithmeticExpression(org.hibernate.sql.ast.tree.expression.BinaryArithmeticExpression arithmeticExpression)
     
    void
    visitBooleanExpressionPredicate(org.hibernate.sql.ast.tree.predicate.BooleanExpressionPredicate booleanExpressionPredicate)
     
    void
    visitCastTarget(org.hibernate.sql.ast.tree.expression.CastTarget castTarget)
     
    void
    visitColumnReference(org.hibernate.sql.ast.tree.expression.ColumnReference columnReference)
     
    protected void
    visitConflictClause(org.hibernate.sql.ast.tree.insert.ConflictClause conflictClause)
     
    protected void
    visitInsertSource(org.hibernate.sql.ast.tree.insert.InsertSelectStatement statement)
     
    void
    visitLikePredicate(org.hibernate.sql.ast.tree.predicate.LikePredicate likePredicate)
     
    void
    visitOffsetFetchClause(org.hibernate.sql.ast.tree.select.QueryPart queryPart)
     
    void
    visitQueryGroup(org.hibernate.sql.ast.tree.select.QueryGroup queryGroup)
     
    void
    visitQueryPartTableReference(org.hibernate.sql.ast.tree.from.QueryPartTableReference tableReference)
     
    void
    visitQuerySpec(org.hibernate.sql.ast.tree.select.QuerySpec querySpec)
     
    void
    visitValuesTableReference(org.hibernate.sql.ast.tree.from.ValuesTableReference tableReference)
     

    Methods inherited from class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator

    addAdditionalWherePredicate, addAffectedTableName, addAppliedParameterBinding, append, append, append, appendBackslashEscapedLikeLiteral, appendDoubleQuoteEscapedString, appendSingleQuoteEscapedString, appendSql, appendSql, appendSql, appendSql, appendSql, applyParameter, areAllResultsParameters, areAllResultsParameters, assertRowsOnlyFetchClauseType, castFunction, castNumberToString, cleanup, createRowMatchingPredicate, determineCyclePathColumnName, determineLateralEmulationPredicate, determineLockingStrategy, determineWhereClauseRestrictionWithJoinEmulation, determineWhereClauseRestrictionWithJoinEmulation, emulateCycleClauseWithRowAndArray, emulateFetchOffsetWithWindowFunctions, emulateFetchOffsetWithWindowFunctions, emulateFetchOffsetWithWindowFunctionsVisitQueryPart, emulateQuantifiedTupleSubQueryPredicate, emulateQueryPartTableReferenceColumnAliasing, emulateSearchClauseOrderWithRowAndArray, emulateSelectTupleComparison, emulateSortSpecificationNullPrecedence, emulateSubQueryRelationalRestrictionPredicate, emulateTupleComparison, emulateValuesTableReferenceColumnAliasing, getAffectedTableNames, getAppliedParameterBindings, getArrayContainsFunction, getBooleanType, getCastTypeName, getClauseStack, getCteStatement, getCurrentClauseStack, getCurrentCteStatement, getCurrentDmlStatement, getCurrentQueryPart, getDual, getEffectiveLockMode, getEffectiveLockMode, getEffectiveLockTimeout, getFetchClauseTypeForRowNumbering, getForUpdate, getForUpdateWithClause, getFromDualForSelectOnly, getIntegerType, getJdbcLockStrategy, getJdbcParameterBindings, getJdbcServices, getLeftHandExpression, getLimit, getLimitParameter, getLiteralValue, getLockOptions, getMaxRows, getNoWait, getOffsetParameter, getParameterBinders, getParameterBindValue, getParameterRenderingMode, getQueryPartForRowNumbering, getQueryPartStack, getRowsToSkip, getSelectItemReference, getSessionFactory, getSkipLocked, getSortSpecificationsRowNumbering, getSql, getSqlAppender, getSqlBuffer, getSqlTypeName, getStatement, getStatementStack, getStringType, getUniqueConstraintNameThatMayFail, getWrapperOptions, hasAggregateFunctions, hasLimit, hasLimit, hasNestedTableGroupsToRender, hasNonTrivialFromClause, hasOffset, inlineCteTableGroup, inOverOrWithinGroupClause, interpretExpression, isCorrelated, isInRecursiveQueryPart, isInSubquery, isIntegerDivisionEmulationRequired, isLiteral, isParameter, isRowNumberingCurrentQueryPart, isRowsOnlyFetchClauseType, isStruct, needsCteInlining, needsLocking, needsMaxRows, needsRecursiveKeywordInWithClause, needsRowsToSkip, prepareLimitOffsetParameters, processNestedTableGroupJoins, processTableGroupJoin, processTableGroupJoins, registerAffectedTable, registerAffectedTable, render, renderAsLiteral, renderBackslashEscapedLikePattern, renderCaseInsensitiveLikeEmulation, renderCasted, renderCombinedLimitClause, renderCombinedLimitClause, renderCommaSeparated, renderCommaSeparatedSelectExpression, renderCommaSeparatedSelectExpression, renderComparisonDistinctOperator, renderComparisonEmulateCase, renderComparisonEmulateDecode, renderComparisonEmulateDecode, renderComparisonEmulateIntersect, renderComparisonStandard, renderCteColumns, renderCycleClause, renderDerivedTableReference, renderDmlTargetTableGroup, renderExpressionAsLiteral, renderExpressionsAsSubquery, renderFetch, renderFetchExpression, renderFetchPlusOffsetExpression, renderFetchPlusOffsetExpressionAsLiteral, renderFetchPlusOffsetExpressionAsSingleParameter, renderFirstClause, renderFirstClause, renderFirstSkipClause, renderFirstSkipClause, renderForUpdateClause, renderFromClauseAfterUpdateSet, renderFromClauseExcludingDmlTargetReference, renderFromClauseJoiningDmlTargetReference, renderFromClauseSpaces, renderInsertIntoNoColumns, renderInterval, renderIntervalLiteral, renderIntoIntoAndTable, renderLimitOffsetClause, renderLimitOffsetClause, renderLiteral, renderMaterializationHint, renderMergeUpdateClause, renderNamedSetReturningFunction, renderNamedTableReference, renderNull, renderOffset, renderOffsetExpression, renderOffsetFetchClause, renderOffsetFetchClause, renderOrderBy, renderParameterAsParameter, renderParameterAsParameter, renderPrimaryTableReference, renderQueryGroup, renderRecursiveCteVirtualSelections, renderRootTableGroup, renderRowNumber, renderRowNumberingSelectItems, renderRowsToClause, renderRowsToClause, renderSearchClause, renderSelectExpression, renderSelectExpressionWithCastedOrInlinedPlainParameters, renderSelectSimpleComparison, renderSelectTupleComparison, renderSetClause, renderSimpleNamedFunction, renderSkipFirstClause, renderSkipFirstClause, renderSortExpression, renderStandardCycleClause, renderStandardSearchClause, renderTableGroup, renderTableGroupJoin, renderTableReferenceIdentificationVariable, renderTableReferenceJoins, renderTableReferenceJoins, renderTopClause, renderTopClause, renderTopStartAtClause, renderTopStartAtClause, renderTupleComparisonStandard, renderVirtualSelections, renderWrappedParameter, resolveAliasedExpression, resolveAliasedExpression, resolveExpressionToAlias, setLimitParameter, setOffsetParameter, shouldEmulateLateralWithIntersect, shouldInlineCte, simpleColumnWriteFragmentRendering, supportsRecursiveClauseArrayAndRowEmulation, translate, translateDelete, translateSelect, translateUpdate, useOffsetFetchClause, visitAggregateColumnWriteExpression, visitAnsiCaseSearchedExpression, visitAnsiCaseSimpleExpression, visitAny, visitArithmeticOperand, visitAssignment, visitBetweenPredicate, visitCaseSearchedExpression, visitCaseSearchedExpression, visitCaseSimpleExpression, visitCaseSimpleExpression, visitCollation, visitColumnWriteFragment, visitConversion, visitCteContainer, visitCteDefinition, visitCteObject, visitCustomTableDelete, visitCustomTableInsert, visitCustomTableUpdate, visitDecodeCaseSearchedExpression, visitDeleteStatement, visitDeleteStatementOnly, visitDistinct, visitDuration, visitDurationUnit, visitEmbeddableTypeLiteral, visitEntityTypeLiteral, visitEvery, visitExistsPredicate, visitExtractUnit, visitFilterFragmentPredicate, visitFilterPredicate, visitFormat, visitForUpdateClause, visitFromClause, visitFunctionTableReference, visitGroupByClause, visitGroupedPredicate, visitHavingClause, visitInArrayPredicate, visitInListPredicate, visitInsertStatement, visitInsertStatementEmulateMerge, visitInsertStatementOnly, visitInSubQueryPredicate, visitJdbcLiteral, visitJunction, visitModifiedSubQueryExpression, visitNamedTableReference, visitNegatedPredicate, visitNestedColumnReference, visitNullnessPredicate, visitOnDuplicateKeyConflictClause, visitOptionalTableUpdate, visitOrderBy, visitOver, visitOverClause, visitOverClause, visitOverflow, visitParameter, visitParameterAsParameter, visitPartitionByClause, visitPartitionExpressions, visitPartitionExpressions, visitQueryLiteral, visitRecursivePath, visitRelationalPredicate, visitReturningColumns, visitReturningColumns, visitSelectClause, visitSelectStatement, visitSelfRenderingExpression, visitSelfRenderingPredicate, visitSetAssignment, visitSetAssignmentEmulateJoin, visitSortSpecification, visitSortSpecification, visitSqlFragmentPredicate, visitSqlSelectExpression, visitSqlSelection, visitSqlSelectionExpression, visitSqlSelections, visitStandardConflictClause, visitStandardTableDelete, visitStandardTableInsert, visitStandardTableUpdate, visitStar, visitSummarization, visitTableGroup, visitTableGroupJoin, visitTableReferenceJoin, visitThruthnessPredicate, visitTrimSpecification, visitTuple, visitUnaryOperationExpression, visitUnparsedNumericLiteral, visitUpdateStatement, visitUpdateStatementEmulateInlineView, visitUpdateStatementEmulateMerge, visitUpdateStatementEmulateTupleSet, visitUpdateStatementOnly, visitValuesList, visitValuesListEmulateSelectUnion, visitValuesListStandard, visitWhereClause, withParameterRenderingMode, withRowNumbering

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • TiDBSqlAstTranslator

      public TiDBSqlAstTranslator(org.hibernate.engine.spi.SessionFactoryImplementor sessionFactory, org.hibernate.sql.ast.tree.Statement statement, TiDBDialect dialect)
  • Method Details

    • visitBinaryArithmeticExpression

      public void visitBinaryArithmeticExpression(org.hibernate.sql.ast.tree.expression.BinaryArithmeticExpression arithmeticExpression)
      Specified by:
      visitBinaryArithmeticExpression in interface org.hibernate.sql.ast.SqlAstWalker
      Overrides:
      visitBinaryArithmeticExpression in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • visitInsertSource

      protected void visitInsertSource(org.hibernate.sql.ast.tree.insert.InsertSelectStatement statement)
      Overrides:
      visitInsertSource in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • visitColumnReference

      public void visitColumnReference(org.hibernate.sql.ast.tree.expression.ColumnReference columnReference)
      Specified by:
      visitColumnReference in interface org.hibernate.sql.ast.SqlAstWalker
      Overrides:
      visitColumnReference in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • renderDeleteClause

      protected void renderDeleteClause(org.hibernate.sql.ast.tree.delete.DeleteStatement statement)
      Overrides:
      renderDeleteClause in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • renderUpdateClause

      protected void renderUpdateClause(org.hibernate.sql.ast.tree.update.UpdateStatement updateStatement)
      Overrides:
      renderUpdateClause in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • renderDmlTargetTableExpression

      protected void renderDmlTargetTableExpression(org.hibernate.sql.ast.tree.from.NamedTableReference tableReference)
      Overrides:
      renderDmlTargetTableExpression in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • translateInsert

      protected org.hibernate.sql.exec.spi.JdbcOperationQueryInsert translateInsert(org.hibernate.sql.ast.tree.insert.InsertSelectStatement sqlAst)
      Overrides:
      translateInsert in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • visitConflictClause

      protected void visitConflictClause(org.hibernate.sql.ast.tree.insert.ConflictClause conflictClause)
      Overrides:
      visitConflictClause in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • determineColumnReferenceQualifier

      protected String determineColumnReferenceQualifier(org.hibernate.sql.ast.tree.expression.ColumnReference columnReference)
      Overrides:
      determineColumnReferenceQualifier in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • renderExpressionAsClauseItem

      protected void renderExpressionAsClauseItem(org.hibernate.sql.ast.tree.expression.Expression expression)
      Overrides:
      renderExpressionAsClauseItem in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • visitBooleanExpressionPredicate

      public void visitBooleanExpressionPredicate(org.hibernate.sql.ast.tree.predicate.BooleanExpressionPredicate booleanExpressionPredicate)
      Specified by:
      visitBooleanExpressionPredicate in interface org.hibernate.sql.ast.SqlAstWalker
      Overrides:
      visitBooleanExpressionPredicate in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • shouldEmulateFetchClause

      protected boolean shouldEmulateFetchClause(org.hibernate.sql.ast.tree.select.QueryPart queryPart)
    • visitQueryGroup

      public void visitQueryGroup(org.hibernate.sql.ast.tree.select.QueryGroup queryGroup)
      Specified by:
      visitQueryGroup in interface org.hibernate.sql.ast.SqlAstWalker
      Overrides:
      visitQueryGroup in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • visitQuerySpec

      public void visitQuerySpec(org.hibernate.sql.ast.tree.select.QuerySpec querySpec)
      Specified by:
      visitQuerySpec in interface org.hibernate.sql.ast.SqlAstWalker
      Overrides:
      visitQuerySpec in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • visitValuesTableReference

      public void visitValuesTableReference(org.hibernate.sql.ast.tree.from.ValuesTableReference tableReference)
      Specified by:
      visitValuesTableReference in interface org.hibernate.sql.ast.SqlAstWalker
      Overrides:
      visitValuesTableReference in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • visitQueryPartTableReference

      public void visitQueryPartTableReference(org.hibernate.sql.ast.tree.from.QueryPartTableReference tableReference)
      Specified by:
      visitQueryPartTableReference in interface org.hibernate.sql.ast.SqlAstWalker
      Overrides:
      visitQueryPartTableReference in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • renderDerivedTableReferenceIdentificationVariable

      protected void renderDerivedTableReferenceIdentificationVariable(org.hibernate.sql.ast.tree.from.DerivedTableReference tableReference)
      Overrides:
      renderDerivedTableReferenceIdentificationVariable in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • visitOffsetFetchClause

      public void visitOffsetFetchClause(org.hibernate.sql.ast.tree.select.QueryPart queryPart)
      Specified by:
      visitOffsetFetchClause in interface org.hibernate.sql.ast.SqlAstWalker
      Overrides:
      visitOffsetFetchClause in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • renderComparison

      protected void renderComparison(org.hibernate.sql.ast.tree.expression.Expression lhs, org.hibernate.query.sqm.ComparisonOperator operator, org.hibernate.sql.ast.tree.expression.Expression rhs)
      Overrides:
      renderComparison in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • renderPartitionItem

      protected void renderPartitionItem(org.hibernate.sql.ast.tree.expression.Expression expression)
      Overrides:
      renderPartitionItem in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • visitLikePredicate

      public void visitLikePredicate(org.hibernate.sql.ast.tree.predicate.LikePredicate likePredicate)
      Specified by:
      visitLikePredicate in interface org.hibernate.sql.ast.SqlAstWalker
      Overrides:
      visitLikePredicate in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • getForShare

      protected String getForShare(int timeoutMillis)
      Overrides:
      getForShare in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • getDialect

      public TiDBDialect getDialect()
      Overrides:
      getDialect in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • visitCastTarget

      public void visitCastTarget(org.hibernate.sql.ast.tree.expression.CastTarget castTarget)
      Specified by:
      visitCastTarget in interface org.hibernate.sql.ast.SqlAstWalker
      Overrides:
      visitCastTarget in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>
    • renderStringContainsExactlyPredicate

      protected void renderStringContainsExactlyPredicate(org.hibernate.sql.ast.tree.expression.Expression haystack, org.hibernate.sql.ast.tree.expression.Expression needle)
      Overrides:
      renderStringContainsExactlyPredicate in class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T extends org.hibernate.sql.exec.spi.JdbcOperation>