Package org.hibernate.dialect
Class TiDBSqlAstTranslator<T extends JdbcOperation>
- java.lang.Object
-
- org.hibernate.sql.ast.spi.AbstractSqlAstTranslator<T>
-
- org.hibernate.dialect.TiDBSqlAstTranslator<T>
-
- All Implemented Interfaces:
Appendable,SqlAppender,SqlAstTranslator<T>,SqlAstWalker
public class TiDBSqlAstTranslator<T extends JdbcOperation> extends AbstractSqlAstTranslator<T>
A SQL AST translator for TiDB.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator
AbstractSqlAstTranslator.ForUpdateClause, AbstractSqlAstTranslator.LockStrategy, AbstractSqlAstTranslator.SubQueryRelationalRestrictionEmulationRenderer<X extends 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(SessionFactoryImplementor sessionFactory, Statement statement)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected StringdetermineColumnReferenceQualifier(ColumnReference columnReference)TiDBDialectgetDialect()protected StringgetForShare(int timeoutMillis)protected voidrenderComparison(Expression lhs, ComparisonOperator operator, Expression rhs)protected voidrenderDeleteClause(DeleteStatement statement)protected voidrenderDmlTargetTableExpression(NamedTableReference tableReference)protected voidrenderExpressionAsClauseItem(Expression expression)protected voidrenderPartitionItem(Expression expression)protected voidrenderStringContainsExactlyPredicate(Expression haystack, Expression needle)protected voidrenderUpdateClause(UpdateStatement updateStatement)protected booleanshouldEmulateFetchClause(QueryPart queryPart)protected booleansupportsJoinsInDelete()booleansupportsRowValueConstructorSyntaxInInList()If the dialect supportsrow values, does it offer such support in IN lists as well?protected booleansupportsRowValueConstructorSyntaxInQuantifiedPredicates()Is this dialect known to support what ANSI-SQL terms "row value constructor" syntax; sometimes called tuple syntax with quantified predicates.booleansupportsRowValueConstructorSyntaxInSet()Is this dialect known to support what ANSI-SQL terms "row value constructor" syntax, sometimes called tuple syntax, in the SET clause;protected JdbcOperationQueryInserttranslateInsert(InsertSelectStatement sqlAst)voidvisitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression)voidvisitBooleanExpressionPredicate(BooleanExpressionPredicate booleanExpressionPredicate)voidvisitCastTarget(CastTarget castTarget)voidvisitColumnReference(ColumnReference columnReference)protected voidvisitConflictClause(ConflictClause conflictClause)protected voidvisitInsertSource(InsertSelectStatement statement)voidvisitLikePredicate(LikePredicate likePredicate)voidvisitOffsetFetchClause(QueryPart queryPart)voidvisitQueryGroup(QueryGroup queryGroup)voidvisitQueryPartTableReference(QueryPartTableReference tableReference)voidvisitQuerySpec(QuerySpec querySpec)voidvisitValuesTableReference(ValuesTableReference tableReference)-
Methods inherited from class org.hibernate.sql.ast.spi.AbstractSqlAstTranslator
addAdditionalWherePredicate, addAppliedParameterBinding, append, append, append, appendAssignmentColumn, appendBackslashEscapedLikeLiteral, 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, getCastTypeName, getClauseStack, getCteStatement, getCurrentClauseStack, getCurrentCteStatement, getCurrentDmlStatement, getCurrentQueryPart, getDual, getEffectiveLockMode, getEffectiveLockMode, getEffectiveLockTimeout, getFetchClauseTypeForRowNumbering, getForUpdate, getForUpdateWithClause, getFromDual, 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, 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, renderIntoIntoAndTable, renderLimitOffsetClause, renderLimitOffsetClause, renderLiteral, renderMaterializationHint, renderMergeUpdateClause, renderNamedTableReference, renderNull, renderOffset, renderOffsetExpression, renderOffsetFetchClause, renderOffsetFetchClause, renderOrderBy, renderParameterAsParameter, renderParameterAsParameter, renderPrimaryTableReference, renderQueryGroup, renderRecursiveCteVirtualSelections, renderRootTableGroup, renderRowNumber, renderRowNumberingSelectItems, renderSearchClause, renderSelectExpression, renderSelectExpressionWithCastedOrInlinedPlainParameters, renderSelectSimpleComparison, renderSelectTupleComparison, renderSetClause, 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, supportsArrayConstructor, supportsDistinctFromPredicate, supportsDuplicateSelectItemsInQueryGroup, supportsFilterClause, supportsIntersect, supportsJoinInMutationStatementSubquery, supportsNestedSubqueryCorrelation, supportsNestedWithClause, supportsNullPrecedence, supportsQuantifiedPredicates, supportsRecursiveClauseArrayAndRowEmulation, supportsRecursiveCycleClause, supportsRecursiveCycleUsingClause, supportsRecursiveSearchClause, supportsRowConstructor, supportsRowValueConstructorDistinctFromSyntax, supportsRowValueConstructorGtLtSyntax, supportsRowValueConstructorSyntax, supportsRowValueConstructorSyntaxInInSubQuery, supportsSimpleQueryGrouping, supportsWithClause, supportsWithClauseInSubquery, 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
-
-
-
-
Constructor Detail
-
TiDBSqlAstTranslator
public TiDBSqlAstTranslator(SessionFactoryImplementor sessionFactory, Statement statement)
-
-
Method Detail
-
visitBinaryArithmeticExpression
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression)
- Specified by:
visitBinaryArithmeticExpressionin interfaceSqlAstWalker- Overrides:
visitBinaryArithmeticExpressionin classAbstractSqlAstTranslator<T extends JdbcOperation>
-
visitInsertSource
protected void visitInsertSource(InsertSelectStatement statement)
- Overrides:
visitInsertSourcein classAbstractSqlAstTranslator<T extends JdbcOperation>
-
visitColumnReference
public void visitColumnReference(ColumnReference columnReference)
- Specified by:
visitColumnReferencein interfaceSqlAstWalker- Overrides:
visitColumnReferencein classAbstractSqlAstTranslator<T extends JdbcOperation>
-
renderDeleteClause
protected void renderDeleteClause(DeleteStatement statement)
- Overrides:
renderDeleteClausein classAbstractSqlAstTranslator<T extends JdbcOperation>
-
renderUpdateClause
protected void renderUpdateClause(UpdateStatement updateStatement)
- Overrides:
renderUpdateClausein classAbstractSqlAstTranslator<T extends JdbcOperation>
-
renderDmlTargetTableExpression
protected void renderDmlTargetTableExpression(NamedTableReference tableReference)
- Overrides:
renderDmlTargetTableExpressionin classAbstractSqlAstTranslator<T extends JdbcOperation>
-
supportsJoinsInDelete
protected boolean supportsJoinsInDelete()
- Overrides:
supportsJoinsInDeletein classAbstractSqlAstTranslator<T extends JdbcOperation>
-
translateInsert
protected JdbcOperationQueryInsert translateInsert(InsertSelectStatement sqlAst)
- Overrides:
translateInsertin classAbstractSqlAstTranslator<T extends JdbcOperation>
-
visitConflictClause
protected void visitConflictClause(ConflictClause conflictClause)
- Overrides:
visitConflictClausein classAbstractSqlAstTranslator<T extends JdbcOperation>
-
determineColumnReferenceQualifier
protected String determineColumnReferenceQualifier(ColumnReference columnReference)
- Overrides:
determineColumnReferenceQualifierin classAbstractSqlAstTranslator<T extends JdbcOperation>
-
renderExpressionAsClauseItem
protected void renderExpressionAsClauseItem(Expression expression)
- Overrides:
renderExpressionAsClauseItemin classAbstractSqlAstTranslator<T extends JdbcOperation>
-
visitBooleanExpressionPredicate
public void visitBooleanExpressionPredicate(BooleanExpressionPredicate booleanExpressionPredicate)
- Specified by:
visitBooleanExpressionPredicatein interfaceSqlAstWalker- Overrides:
visitBooleanExpressionPredicatein classAbstractSqlAstTranslator<T extends JdbcOperation>
-
shouldEmulateFetchClause
protected boolean shouldEmulateFetchClause(QueryPart queryPart)
-
visitQueryGroup
public void visitQueryGroup(QueryGroup queryGroup)
- Specified by:
visitQueryGroupin interfaceSqlAstWalker- Overrides:
visitQueryGroupin classAbstractSqlAstTranslator<T extends JdbcOperation>
-
visitQuerySpec
public void visitQuerySpec(QuerySpec querySpec)
- Specified by:
visitQuerySpecin interfaceSqlAstWalker- Overrides:
visitQuerySpecin classAbstractSqlAstTranslator<T extends JdbcOperation>
-
visitValuesTableReference
public void visitValuesTableReference(ValuesTableReference tableReference)
- Specified by:
visitValuesTableReferencein interfaceSqlAstWalker- Overrides:
visitValuesTableReferencein classAbstractSqlAstTranslator<T extends JdbcOperation>
-
visitQueryPartTableReference
public void visitQueryPartTableReference(QueryPartTableReference tableReference)
- Specified by:
visitQueryPartTableReferencein interfaceSqlAstWalker- Overrides:
visitQueryPartTableReferencein classAbstractSqlAstTranslator<T extends JdbcOperation>
-
visitOffsetFetchClause
public void visitOffsetFetchClause(QueryPart queryPart)
- Specified by:
visitOffsetFetchClausein interfaceSqlAstWalker- Overrides:
visitOffsetFetchClausein classAbstractSqlAstTranslator<T extends JdbcOperation>
-
renderComparison
protected void renderComparison(Expression lhs, ComparisonOperator operator, Expression rhs)
- Overrides:
renderComparisonin classAbstractSqlAstTranslator<T extends JdbcOperation>
-
renderPartitionItem
protected void renderPartitionItem(Expression expression)
- Overrides:
renderPartitionItemin classAbstractSqlAstTranslator<T extends JdbcOperation>
-
visitLikePredicate
public void visitLikePredicate(LikePredicate likePredicate)
- Specified by:
visitLikePredicatein interfaceSqlAstWalker- Overrides:
visitLikePredicatein classAbstractSqlAstTranslator<T extends JdbcOperation>
-
supportsRowValueConstructorSyntaxInSet
public boolean supportsRowValueConstructorSyntaxInSet()
Description copied from class:AbstractSqlAstTranslatorIs 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') ...- Overrides:
supportsRowValueConstructorSyntaxInSetin classAbstractSqlAstTranslator<T extends JdbcOperation>- Returns:
- True if this SQL dialect is known to support "row value constructor" syntax in the SET clause; false otherwise.
-
supportsRowValueConstructorSyntaxInInList
public boolean supportsRowValueConstructorSyntaxInInList()
Description copied from class:AbstractSqlAstTranslatorIf the dialect supportsrow values, does it offer such support in IN lists as well?For example,
... where (FIRST_NAME, LAST_NAME) IN ( (?, ?), (?, ?) ) ...- Overrides:
supportsRowValueConstructorSyntaxInInListin classAbstractSqlAstTranslator<T extends JdbcOperation>- Returns:
- True if this SQL dialect is known to support "row value constructor" syntax in the IN list; false otherwise.
-
supportsRowValueConstructorSyntaxInQuantifiedPredicates
protected boolean supportsRowValueConstructorSyntaxInQuantifiedPredicates()
Description copied from class:AbstractSqlAstTranslatorIs 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 ...) ...- Overrides:
supportsRowValueConstructorSyntaxInQuantifiedPredicatesin classAbstractSqlAstTranslator<T extends JdbcOperation>- Returns:
- True if this SQL dialect is known to support "row value constructor" syntax with quantified predicates; false otherwise.
-
getForShare
protected String getForShare(int timeoutMillis)
- Overrides:
getForSharein classAbstractSqlAstTranslator<T extends JdbcOperation>
-
getDialect
public TiDBDialect getDialect()
- Overrides:
getDialectin classAbstractSqlAstTranslator<T extends JdbcOperation>
-
visitCastTarget
public void visitCastTarget(CastTarget castTarget)
- Specified by:
visitCastTargetin interfaceSqlAstWalker- Overrides:
visitCastTargetin classAbstractSqlAstTranslator<T extends JdbcOperation>
-
renderStringContainsExactlyPredicate
protected void renderStringContainsExactlyPredicate(Expression haystack, Expression needle)
- Overrides:
renderStringContainsExactlyPredicatein classAbstractSqlAstTranslator<T extends JdbcOperation>
-
-