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,DerbySqlAstTranslator,HANASqlAstTranslator,HSQLSqlAstTranslator,MariaDBSqlAstTranslator,MySQLSqlAstTranslator,SpannerSqlAstTranslator,SqlAstTranslatorWithMerge,SqlAstTranslatorWithUpsert,StandardSqlAstTranslator,SybaseASESqlAstTranslator,SybaseSqlAstTranslator,TiDBSqlAstTranslator
public abstract class AbstractSqlAstTranslator<T extends JdbcOperation> extends Object implements SqlAstTranslator<T>, SqlAppender
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classAbstractSqlAstTranslator.ForUpdateClauseprotected static classAbstractSqlAstTranslator.LockStrategyprotected static interfaceAbstractSqlAstTranslator.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 Modifier Constructor Description protectedAbstractSqlAstTranslator(SessionFactoryImplementor sessionFactory, Statement statement)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected voidaddAdditionalWherePredicate(Predicate predicate)protected voidaddAppliedParameterBinding(JdbcParameter parameter, JdbcParameterBinding binding)Appendableappend(char c)Appendableappend(CharSequence csq)Appendableappend(CharSequence csq, int start, int end)protected voidappendAssignmentColumn(ColumnReference column)protected voidappendBackslashEscapedLikeLiteral(SqlAppender appender, String literal, boolean noBackslashEscapes)voidappendSql(boolean value)voidappendSql(char fragment)voidappendSql(int value)voidappendSql(long value)voidappendSql(String fragment)Add the passed fragment into the in-flight bufferprotected voidapplyParameter(ColumnValueParameter parameter)protected booleanareAllResultsParameters(CaseSearchedExpression caseSearchedExpression)protected booleanareAllResultsParameters(CaseSimpleExpression caseSimpleExpression)protected voidassertRowsOnlyFetchClauseType(QueryPart queryPart)protected AbstractSqmSelfRenderingFunctionDescriptorcastFunction()protected ExpressioncastNumberToString(Expression expression, int precision, int scale)Casts a number expression to a string with the given precision and scale.protected voidcleanup()protected PredicatecreateRowMatchingPredicate(TableGroup dmlTargetTableGroup, String lhsAlias, String rhsAlias)protected StringdetermineColumnReferenceQualifier(ColumnReference columnReference)protected StringdetermineCyclePathColumnName(CteStatement cte)protected PredicatedetermineLateralEmulationPredicate(TableGroup tableGroup)protected AbstractSqlAstTranslator.LockStrategydetermineLockingStrategy(QuerySpec querySpec, AbstractSqlAstTranslator.ForUpdateClause forUpdateClause, Boolean followOnLocking)protected PredicatedetermineWhereClauseRestrictionWithJoinEmulation(AbstractUpdateOrDeleteStatement statement)protected PredicatedetermineWhereClauseRestrictionWithJoinEmulation(AbstractUpdateOrDeleteStatement statement, String dmlTargetAlias)protected voidemulateCycleClauseWithRowAndArray(SelectClause selectClause)protected voidemulateFetchOffsetWithWindowFunctions(QueryPart queryPart, boolean emulateFetchClause)protected voidemulateFetchOffsetWithWindowFunctions(QueryPart queryPart, Expression offsetExpression, Expression fetchExpression, FetchClauseType fetchClauseType, boolean emulateFetchClause)protected voidemulateFetchOffsetWithWindowFunctionsVisitQueryPart(QueryPart queryPart)protected voidemulateQuantifiedTupleSubQueryPredicate(Predicate predicate, SelectStatement selectStatement, SqlTuple lhsTuple, ComparisonOperator tupleComparisonOperator)An optimized emulation for relational tuple sub-query comparisons.protected voidemulateQueryPartTableReferenceColumnAliasing(QueryPartTableReference tableReference)protected voidemulateSearchClauseOrderWithRowAndArray(SelectClause selectClause)protected voidemulateSelectTupleComparison(List<SqlSelection> lhsSelections, List<? extends SqlAstNode> rhsExpressions, ComparisonOperator operator, boolean indexOptimized)protected voidemulateSortSpecificationNullPrecedence(Expression sortExpression, NullPrecedence nullPrecedence)protected <X extends Expression>
voidemulateSubQueryRelationalRestrictionPredicate(Predicate predicate, boolean negated, SelectStatement selectStatement, X lhsTuple, AbstractSqlAstTranslator.SubQueryRelationalRestrictionEmulationRenderer<X> renderer, ComparisonOperator tupleComparisonOperator)protected voidemulateTupleComparison(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.protected voidemulateValuesTableReferenceColumnAliasing(ValuesTableReference tableReference)Set<String>getAffectedTableNames()Not the best spot for this.protected Map<JdbcParameter,JdbcParameterBinding>getAppliedParameterBindings()protected StringgetArrayContainsFunction()Returns the name of thearray_contains(array, element)function, which is used for emulating the cycle clause.BasicType<Boolean>getBooleanType()static StringgetCastTypeName(SqlTypedMapping castTarget, SessionFactoryImplementor factory)Deprecated, for removal: This API element is subject to removal in a future version.static StringgetCastTypeName(SqlTypedMapping castTarget, TypeConfiguration typeConfiguration)protected Stack<Clause>getClauseStack()protected CteStatementgetCteStatement(String cteName)Stack<Clause>getCurrentClauseStack()protected CteStatementgetCurrentCteStatement()MutationStatementgetCurrentDmlStatement()QueryPartgetCurrentQueryPart()Returns the current query part that is translated.DialectgetDialect()protected StringgetDual()Returns a table expression that has one row.protected LockModegetEffectiveLockMode(String alias)protected LockModegetEffectiveLockMode(String alias, boolean isRoot)protected intgetEffectiveLockTimeout(LockMode lockMode)protected FetchClauseTypegetFetchClauseTypeForRowNumbering(QueryPart queryPartForRowNumbering)protected StringgetForShare(int timeoutMillis)protected StringgetForUpdate()protected StringgetForUpdateWithClause()protected StringgetFromDual()Deprecated, for removal: This API element is subject to removal in a future version.UsegetDual()insteadprotected StringgetFromDualForSelectOnly()BasicType<Integer>getIntegerType()protected JdbcLockStrategygetJdbcLockStrategy()protected JdbcParameterBindingsgetJdbcParameterBindings()protected JdbcServicesgetJdbcServices()protected ExpressiongetLeftHandExpression(Predicate predicate)protected LimitgetLimit()protected JdbcParametergetLimitParameter()<X> XgetLiteralValue(Expression expression)protected LockOptionsgetLockOptions()protected intgetMaxRows(SelectStatement sqlAstSelect, JdbcParameterBindings jdbcParameterBindings, int rowsToSkip)protected StringgetNoWait()protected JdbcParametergetOffsetParameter()List<JdbcParameterBinder>getParameterBinders()protected ObjectgetParameterBindValue(JdbcParameter parameter)protected SqlAstNodeRenderingModegetParameterRenderingMode()protected QueryPartgetQueryPartForRowNumbering()protected Stack<QueryPart>getQueryPartStack()protected intgetRowsToSkip(SelectStatement sqlAstSelect, JdbcParameterBindings jdbcParameterBindings)protected SqlSelectionExpressiongetSelectItemReference(Expression expression)SessionFactoryImplementorgetSessionFactory()protected StringgetSkipLocked()protected List<SortSpecification>getSortSpecificationsRowNumbering(SelectClause selectClause, QueryPart queryPart)StringgetSql()protected SqlAppendergetSqlAppender()StringBuildergetSqlBuffer()static StringgetSqlTypeName(SqlTypedMapping castTarget, SessionFactoryImplementor factory)Deprecated, for removal: This API element is subject to removal in a future version.static StringgetSqlTypeName(SqlTypedMapping castTarget, TypeConfiguration typeConfiguration)protected StatementgetStatement()protected Stack<Statement>getStatementStack()BasicType<String>getStringType()protected StringgetUniqueConstraintNameThatMayFail(InsertSelectStatement sqlAst)protected WrapperOptionsgetWrapperOptions()protected booleanhasAggregateFunctions(QuerySpec querySpec)protected booleanhasLimit()protected booleanhasLimit(QueryPart queryPart)protected booleanhasNestedTableGroupsToRender(List<TableGroupJoin> nestedTableGroupJoins)protected static booleanhasNonTrivialFromClause(FromClause fromClause)protected booleanhasOffset(QueryPart queryPart)protected voidinlineCteTableGroup(TableGroup tableGroup, LockMode lockMode)protected booleaninOverOrWithinGroupClause()protected <R> RinterpretExpression(Expression expression, JdbcParameterBindings jdbcParameterBindings)protected booleanisCorrelated(CteStatement cteStatement)protected booleanisInRecursiveQueryPart()protected booleanisInSubquery()protected booleanisIntegerDivisionEmulationRequired(BinaryArithmeticExpression expression)protected booleanisLiteral(Expression expression)protected booleanisParameter(Expression expression)protected booleanisRowNumberingCurrentQueryPart()protected booleanisRowsOnlyFetchClauseType(QueryPart queryPart)protected booleanisStruct(JdbcMappingContainer expressionType)protected booleanneedsCteInlining()Whether CTEs should be inlined rather than rendered as CTEs.protected booleanneedsLocking(QuerySpec querySpec)protected booleanneedsMaxRows()protected booleanneedsRecursiveKeywordInWithClause()Whether the SQL with clause requires the "recursive" keyword for recursive CTEs.protected booleanneedsRowsToSkip()protected voidprepareLimitOffsetParameters()protected voidprocessNestedTableGroupJoins(TableGroup source, List<TableGroupJoin> tableGroupJoinCollector)protected voidprocessTableGroupJoin(TableGroupJoin tableGroupJoin, List<TableGroupJoin> tableGroupJoinCollector)protected voidprocessTableGroupJoins(TableGroup source)protected voidregisterAffectedTable(String tableExpression)protected voidregisterAffectedTable(NamedTableReference tableReference)voidrender(SqlAstNode sqlAstNode, SqlAstNodeRenderingMode renderingMode)Renders the given SQL AST node with the given rendering mode.protected voidrenderAsLiteral(JdbcParameter jdbcParameter, Object literalValue)protected voidrenderBackslashEscapedLikePattern(Expression pattern, Expression escapeCharacter, boolean noBackslashEscapes)protected voidrenderCaseInsensitiveLikeEmulation(Expression lhs, Expression rhs, Expression escapeCharacter, boolean negated)protected voidrenderCasted(Expression expression)protected voidrenderCombinedLimitClause(Expression offsetExpression, Expression fetchExpression)protected voidrenderCombinedLimitClause(QueryPart queryPart)protected voidrenderCommaSeparated(Iterable<? extends SqlAstNode> expressions)protected voidrenderCommaSeparatedSelectExpression(Iterable<? extends SqlAstNode> expressions)protected voidrenderCommaSeparatedSelectExpression(Iterable<? extends SqlAstNode> expressions, Iterable<String> aliases)protected voidrenderComparison(Expression lhs, ComparisonOperator operator, Expression rhs)protected voidrenderComparisonDistinctOperator(Expression lhs, ComparisonOperator operator, Expression rhs)protected voidrenderComparisonEmulateCase(Expression lhs, ComparisonOperator operator, Expression rhs)protected voidrenderComparisonEmulateDecode(Expression lhs, ComparisonOperator operator, Expression rhs)protected voidrenderComparisonEmulateDecode(Expression lhs, ComparisonOperator operator, Expression rhs, SqlAstNodeRenderingMode firstArgRenderingMode)protected voidrenderComparisonEmulateIntersect(Expression lhs, ComparisonOperator operator, Expression rhs)protected voidrenderComparisonStandard(Expression lhs, ComparisonOperator operator, Expression rhs)protected voidrenderCteColumns(CteStatement cte)protected voidrenderCycleClause(CteStatement cte)protected voidrenderDeleteClause(DeleteStatement statement)protected voidrenderDerivedTableReference(DerivedTableReference tableReference)protected voidrenderDmlTargetTableExpression(NamedTableReference tableReference)protected voidrenderDmlTargetTableGroup(TableGroup tableGroup)protected voidrenderExpressionAsClauseItem(Expression expression)protected voidrenderExpressionAsLiteral(Expression expression, JdbcParameterBindings jdbcParameterBindings)protected voidrenderExpressionsAsSubquery(List<? extends Expression> expressions)protected voidrenderFetch(Expression fetchExpression, Expression offsetExpressionToAdd, FetchClauseType fetchClauseType)protected voidrenderFetchExpression(Expression fetchExpression)protected voidrenderFetchPlusOffsetExpression(Expression fetchClauseExpression, Expression offsetClauseExpression, int offset)protected voidrenderFetchPlusOffsetExpressionAsLiteral(Expression fetchClauseExpression, Expression offsetClauseExpression, int offset)protected voidrenderFetchPlusOffsetExpressionAsSingleParameter(Expression fetchClauseExpression, Expression offsetClauseExpression, int offset)protected voidrenderFirstClause(Expression offsetExpression, Expression fetchExpression)protected voidrenderFirstClause(QuerySpec querySpec)protected voidrenderFirstSkipClause(Expression offsetExpression, Expression fetchExpression)protected voidrenderFirstSkipClause(QuerySpec querySpec)protected voidrenderForUpdateClause(QuerySpec querySpec, AbstractSqlAstTranslator.ForUpdateClause forUpdateClause)protected voidrenderFromClauseAfterUpdateSet(UpdateStatement statement)protected voidrenderFromClauseExcludingDmlTargetReference(UpdateStatement statement)protected voidrenderFromClauseJoiningDmlTargetReference(UpdateStatement statement)protected voidrenderFromClauseSpaces(FromClause fromClause)protected voidrenderInsertIntoNoColumns(TableInsertStandard tableInsert)Handle rendering an insert with no columnsprotected voidrenderIntoIntoAndTable(TableInsertStandard tableInsert)Renders theinsert into <table name>portion of an insertprotected voidrenderLimitOffsetClause(Expression offsetExpression, Expression fetchExpression)protected voidrenderLimitOffsetClause(QueryPart queryPart)protected voidrenderLiteral(Literal literal, boolean castParameter)protected voidrenderMaterializationHint(CteMaterialization materialization)protected voidrenderMergeUpdateClause(List<Assignment> assignments, Predicate wherePredicate)protected booleanrenderNamedTableReference(NamedTableReference tableReference, LockMode lockMode)protected voidrenderNull(Literal literal)protected voidrenderOffset(Expression offsetExpression, boolean renderOffsetRowsKeyword)protected voidrenderOffsetExpression(Expression offsetExpression)protected voidrenderOffsetFetchClause(Expression offsetExpression, Expression fetchExpression, FetchClauseType fetchClauseType, boolean renderOffsetRowsKeyword)protected voidrenderOffsetFetchClause(QueryPart queryPart, boolean renderOffsetRowsKeyword)protected voidrenderOrderBy(boolean addWhitespace, List<SortSpecification> sortSpecifications)protected voidrenderParameterAsParameter(int position, JdbcParameter jdbcParameter)Renders a parameter marker for the given positionprotected voidrenderParameterAsParameter(JdbcParameter jdbcParameter)protected voidrenderPartitionItem(Expression expression)protected booleanrenderPrimaryTableReference(TableGroup tableGroup, LockMode lockMode)protected voidrenderQueryGroup(QueryGroup queryGroup, boolean renderOrderByAndOffsetFetchClause)protected voidrenderRecursiveCteVirtualSelections(SelectClause selectClause)protected voidrenderRootTableGroup(TableGroup tableGroup, List<TableGroupJoin> tableGroupJoinCollector)protected voidrenderRowNumber(SelectClause selectClause, QueryPart queryPart)protected voidrenderRowNumberingSelectItems(SelectClause selectClause, QueryPart queryPart)protected voidrenderSearchClause(CteStatement cte)protected voidrenderSelectExpression(Expression expression)protected voidrenderSelectExpressionWithCastedOrInlinedPlainParameters(Expression expression)protected voidrenderSelectSimpleComparison(List<SqlSelection> lhsExpressions, Expression expression, ComparisonOperator operator)protected voidrenderSelectTupleComparison(List<SqlSelection> lhsExpressions, SqlTuple tuple, ComparisonOperator operator)protected voidrenderSetClause(List<Assignment> assignments)protected voidrenderSkipFirstClause(Expression offsetExpression, Expression fetchExpression)protected voidrenderSkipFirstClause(QuerySpec querySpec)protected voidrenderSortExpression(Expression sortExpression, boolean ignoreCase)protected voidrenderStandardCycleClause(CteStatement cte)protected voidrenderStandardSearchClause(CteStatement cte)protected voidrenderStringContainsExactlyPredicate(Expression haystack, Expression needle)protected voidrenderTableGroup(TableGroup tableGroup, Predicate predicate, List<TableGroupJoin> tableGroupJoinCollector)protected voidrenderTableGroupJoin(TableGroupJoin tableGroupJoin, List<TableGroupJoin> tableGroupJoinCollector)protected voidrenderTableReferenceIdentificationVariable(TableReference tableReference)protected voidrenderTableReferenceJoins(TableGroup tableGroup)protected voidrenderTableReferenceJoins(TableGroup tableGroup, int swappedJoinIndex, boolean forceLeftJoin)protected voidrenderTopClause(Expression offsetExpression, Expression fetchExpression, FetchClauseType fetchClauseType, boolean addOffset, boolean needsParenthesis)protected voidrenderTopClause(QuerySpec querySpec, boolean addOffset, boolean needsParenthesis)protected voidrenderTopStartAtClause(Expression offsetExpression, Expression fetchExpression, FetchClauseType fetchClauseType)protected voidrenderTopStartAtClause(QuerySpec querySpec)protected voidrenderTupleComparisonStandard(List<SqlSelection> lhsExpressions, SqlTuple tuple, ComparisonOperator operator)protected voidrenderUpdateClause(UpdateStatement updateStatement)protected voidrenderVirtualSelections(SelectClause selectClause)protected voidrenderWrappedParameter(JdbcParameter jdbcParameter)protected ExpressionresolveAliasedExpression(List<SqlSelection> sqlSelections, Expression expression)protected ExpressionresolveAliasedExpression(Expression expression)protected ExpressionresolveExpressionToAlias(Expression expression)protected voidsetLimitParameter(JdbcParameter limitParameter)protected voidsetOffsetParameter(JdbcParameter offsetParameter)protected booleanshouldEmulateLateralWithIntersect(QueryPart queryPart)protected booleanshouldInlineCte(TableGroup tableGroup)Whether CTEs should be inlined rather than rendered as CTEs.protected voidsimpleColumnWriteFragmentRendering(ColumnWriteFragment columnWriteFragment)protected booleansupportsArrayConstructor()Whether the SQL array constructor is supported.protected booleansupportsDistinctFromPredicate()Is this SQL dialect known to support some kind of distinct from predicate.protected booleansupportsDuplicateSelectItemsInQueryGroup()booleansupportsFilterClause()Whether the FILTER clause for aggregate functions is supported.protected booleansupportsIntersect()protected booleansupportsJoinInMutationStatementSubquery()If the dialect supports using joins in mutation statement subquery that could also use columns from the mutation target tableprotected booleansupportsJoinsInDelete()protected booleansupportsNestedSubqueryCorrelation()protected booleansupportsNestedWithClause()Whether the SQL with clause is supported within a CTE.protected booleansupportsNullPrecedence()protected booleansupportsQuantifiedPredicates()Is this dialect known to support quantified predicates.protected booleansupportsRecursiveClauseArrayAndRowEmulation()Whether the recursive search and cycle clause emulations based on the array and row constructor is supported.protected booleansupportsRecursiveCycleClause()Whether the SQL cycle clause is supported, which can be used for recursive CTEs.protected booleansupportsRecursiveCycleUsingClause()Whether the SQL cycle clause supports the using sub-clause.protected booleansupportsRecursiveSearchClause()Whether the SQL search clause is supported, which can be used for recursive CTEs.protected booleansupportsRowConstructor()Whether the SQL row constructor is supported.protected booleansupportsRowValueConstructorDistinctFromSyntax()Is this dialect known to support what ANSI-SQL terms "row value constructor" syntax; sometimes called tuple syntax withis distinct fromandis not distinct fromoperators.protected booleansupportsRowValueConstructorGtLtSyntax()Is this dialect known to support what ANSI-SQL terms "row value constructor" syntax; sometimes called tuple syntax with<,>,≤and≥operators.protected booleansupportsRowValueConstructorSyntax()Is this dialect known to support what ANSI-SQL terms "row value constructor" syntax; sometimes called tuple syntax.protected booleansupportsRowValueConstructorSyntaxInInList()If the dialect supportsrow values, does it offer such support in IN lists as well?protected booleansupportsRowValueConstructorSyntaxInInSubQuery()If the dialect supportsrow values, does it offer such support in IN subqueries 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.protected booleansupportsRowValueConstructorSyntaxInSet()Is this dialect known to support what ANSI-SQL terms "row value constructor" syntax, sometimes called tuple syntax, in the SET clause;protected booleansupportsSimpleQueryGrouping()protected booleansupportsWithClause()Whether the SQL with clause is supported.protected booleansupportsWithClauseInSubquery()Whether the SQL with clause is supported within a subquery.Ttranslate(JdbcParameterBindings jdbcParameterBindings, QueryOptions queryOptions)protected JdbcOperationQueryDeletetranslateDelete(DeleteStatement sqlAst)protected JdbcOperationQueryInserttranslateInsert(InsertSelectStatement sqlAst)protected JdbcOperationQuerySelecttranslateSelect(SelectStatement selectStatement)protected JdbcOperationQueryUpdatetranslateUpdate(UpdateStatement sqlAst)protected booleanuseOffsetFetchClause(QueryPart queryPart)voidvisitAggregateColumnWriteExpression(AggregateColumnWriteExpression aggregateColumnWriteExpression)protected voidvisitAnsiCaseSearchedExpression(CaseSearchedExpression caseSearchedExpression, Consumer<Expression> resultRenderer)protected voidvisitAnsiCaseSimpleExpression(CaseSimpleExpression caseSimpleExpression, Consumer<Expression> resultRenderer)voidvisitAny(Any any)protected voidvisitArithmeticOperand(Expression expression)voidvisitAssignment(Assignment assignment)voidvisitBetweenPredicate(BetweenPredicate betweenPredicate)voidvisitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression)voidvisitBooleanExpressionPredicate(BooleanExpressionPredicate booleanExpressionPredicate)voidvisitCaseSearchedExpression(CaseSearchedExpression caseSearchedExpression)protected voidvisitCaseSearchedExpression(CaseSearchedExpression caseSearchedExpression, boolean inSelect)voidvisitCaseSimpleExpression(CaseSimpleExpression caseSimpleExpression)protected voidvisitCaseSimpleExpression(CaseSimpleExpression caseSimpleExpression, boolean inSelect)voidvisitCastTarget(CastTarget castTarget)voidvisitCollation(Collation collation)voidvisitColumnReference(ColumnReference columnReference)voidvisitColumnWriteFragment(ColumnWriteFragment columnWriteFragment)protected voidvisitConflictClause(ConflictClause conflictClause)voidvisitConversion(Conversion conversion)voidvisitCteContainer(CteContainer cteContainer)protected voidvisitCteDefinition(CteStatement cte)protected voidvisitCteObject(CteObject cteObject)voidvisitCustomTableDelete(TableDeleteCustomSql tableDelete)voidvisitCustomTableInsert(TableInsertCustomSql tableInsert)voidvisitCustomTableUpdate(TableUpdateCustomSql tableUpdate)protected voidvisitDecodeCaseSearchedExpression(CaseSearchedExpression caseSearchedExpression)voidvisitDeleteStatement(DeleteStatement statement)protected voidvisitDeleteStatementOnly(DeleteStatement statement)voidvisitDistinct(Distinct distinct)voidvisitDuration(Duration duration)voidvisitDurationUnit(DurationUnit unit)voidvisitEmbeddableTypeLiteral(EmbeddableTypeLiteral expression)voidvisitEntityTypeLiteral(EntityTypeLiteral expression)voidvisitEvery(Every every)voidvisitExistsPredicate(ExistsPredicate existsPredicate)voidvisitExtractUnit(ExtractUnit extractUnit)voidvisitFilterFragmentPredicate(FilterPredicate.FilterFragmentPredicate filter)voidvisitFilterPredicate(FilterPredicate filterPredicate)voidvisitFormat(Format format)protected voidvisitForUpdateClause(QuerySpec querySpec)voidvisitFromClause(FromClause fromClause)voidvisitFunctionTableReference(FunctionTableReference tableReference)protected voidvisitGroupByClause(QuerySpec querySpec, SelectItemReferenceStrategy referenceStrategy)voidvisitGroupedPredicate(GroupedPredicate groupedPredicate)protected voidvisitHavingClause(QuerySpec querySpec)voidvisitInArrayPredicate(InArrayPredicate inArrayPredicate)voidvisitInListPredicate(InListPredicate inListPredicate)protected voidvisitInsertSource(InsertSelectStatement statement)voidvisitInsertStatement(InsertSelectStatement statement)protected voidvisitInsertStatementEmulateMerge(InsertSelectStatement statement)protected voidvisitInsertStatementOnly(InsertSelectStatement statement)voidvisitInSubQueryPredicate(InSubQueryPredicate inSubQueryPredicate)voidvisitJdbcLiteral(JdbcLiteral<?> jdbcLiteral)voidvisitJunction(Junction junction)voidvisitLikePredicate(LikePredicate likePredicate)voidvisitModifiedSubQueryExpression(ModifiedSubQueryExpression expression)voidvisitNamedTableReference(NamedTableReference tableReference)voidvisitNegatedPredicate(NegatedPredicate negatedPredicate)voidvisitNestedColumnReference(NestedColumnReference nestedColumnReference)voidvisitNullnessPredicate(NullnessPredicate nullnessPredicate)voidvisitOffsetFetchClause(QueryPart queryPart)protected voidvisitOnDuplicateKeyConflictClause(ConflictClause conflictClause)voidvisitOptionalTableUpdate(OptionalTableUpdate tableUpdate)protected voidvisitOrderBy(List<SortSpecification> sortSpecifications)voidvisitOver(Over<?> over)protected voidvisitOverClause(List<Expression> partitionExpressions, List<SortSpecification> sortSpecifications)protected voidvisitOverClause(List<Expression> partitionExpressions, List<SortSpecification> sortSpecifications, FrameMode mode, FrameKind startKind, Expression startExpression, FrameKind endKind, Expression endExpression, FrameExclusion exclusion, boolean orderedSetAggregate)voidvisitOverflow(Overflow overflow)voidvisitParameter(JdbcParameter jdbcParameter)protected voidvisitParameterAsParameter(JdbcParameter jdbcParameter)protected voidvisitPartitionByClause(List<Expression> partitionExpressions)protected voidvisitPartitionExpressions(List<Expression> partitionExpressions, Function<Expression,Expression> resolveAliasExpression, boolean inlineParametersOfAliasedExpressions)protected voidvisitPartitionExpressions(List<Expression> partitionExpressions, SelectItemReferenceStrategy referenceStrategy)voidvisitQueryGroup(QueryGroup queryGroup)voidvisitQueryLiteral(QueryLiteral<?> queryLiteral)voidvisitQueryPartTableReference(QueryPartTableReference tableReference)voidvisitQuerySpec(QuerySpec querySpec)protected voidvisitRecursivePath(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.voidvisitRelationalPredicate(ComparisonPredicate comparisonPredicate)protected voidvisitReturningColumns(Supplier<List<ColumnReference>> returningColumnsAccess)protected voidvisitReturningColumns(List<ColumnReference> returningColumns)voidvisitSelectClause(SelectClause selectClause)voidvisitSelectStatement(SelectStatement statement)voidvisitSelfRenderingExpression(SelfRenderingExpression expression)voidvisitSelfRenderingPredicate(SelfRenderingPredicate selfRenderingPredicate)protected voidvisitSetAssignment(Assignment assignment)protected voidvisitSetAssignmentEmulateJoin(Assignment assignment, UpdateStatement statement)protected voidvisitSortSpecification(Expression sortExpression, SortDirection sortOrder, NullPrecedence nullPrecedence, boolean ignoreCase)voidvisitSortSpecification(SortSpecification sortSpecification)voidvisitSqlFragmentPredicate(SqlFragmentPredicate predicate)protected voidvisitSqlSelectExpression(Expression expression)voidvisitSqlSelection(SqlSelection sqlSelection)voidvisitSqlSelectionExpression(SqlSelectionExpression expression)protected voidvisitSqlSelections(SelectClause selectClause)protected voidvisitStandardConflictClause(ConflictClause conflictClause)voidvisitStandardTableDelete(TableDeleteStandard tableDelete)voidvisitStandardTableInsert(TableInsertStandard tableInsert)voidvisitStandardTableUpdate(TableUpdateStandard tableUpdate)voidvisitStar(Star star)voidvisitSummarization(Summarization every)voidvisitTableGroup(TableGroup tableGroup)voidvisitTableGroupJoin(TableGroupJoin tableGroupJoin)voidvisitTableReferenceJoin(TableReferenceJoin tableReferenceJoin)voidvisitThruthnessPredicate(ThruthnessPredicate thruthnessPredicate)voidvisitTrimSpecification(TrimSpecification trimSpecification)voidvisitTuple(SqlTuple tuple)voidvisitUnaryOperationExpression(UnaryOperation unaryOperationExpression)<N extends Number>
voidvisitUnparsedNumericLiteral(UnparsedNumericLiteral<N> literal)voidvisitUpdateStatement(UpdateStatement statement)protected voidvisitUpdateStatementEmulateInlineView(UpdateStatement statement)protected voidvisitUpdateStatementEmulateMerge(UpdateStatement statement)protected voidvisitUpdateStatementEmulateTupleSet(UpdateStatement statement)protected voidvisitUpdateStatementOnly(UpdateStatement statement)protected voidvisitValuesList(List<Values> valuesList)protected voidvisitValuesListEmulateSelectUnion(List<Values> valuesList)protected voidvisitValuesListStandard(List<Values> valuesList)voidvisitValuesTableReference(ValuesTableReference tableReference)protected voidvisitWhereClause(Predicate whereClauseRestrictions)protected voidwithParameterRenderingMode(SqlAstNodeRenderingMode renderingMode, Runnable runnable)protected voidwithRowNumbering(QueryPart queryPart, boolean needsSelectAliases, Runnable r)
-
-
-
Constructor Detail
-
AbstractSqlAstTranslator
protected AbstractSqlAstTranslator(SessionFactoryImplementor sessionFactory, Statement statement)
-
-
Method Detail
-
getDialect
public Dialect getDialect()
-
getSessionFactory
public SessionFactoryImplementor getSessionFactory()
- Specified by:
getSessionFactoryin interfaceSqlAstTranslator<T extends JdbcOperation>
-
castFunction
protected AbstractSqmSelfRenderingFunctionDescriptor castFunction()
-
getWrapperOptions
protected WrapperOptions getWrapperOptions()
-
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:SqlAstTranslatorNot the best spot for this. Its the table names collected while walking the SQL AST. Its 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:
getAffectedTableNamesin interfaceSqlAstTranslator<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:SqlAstTranslatorWhether the FILTER clause for aggregate functions is supported.- Specified by:
supportsFilterClausein interfaceSqlAstTranslator<T extends JdbcOperation>
-
appendSql
public void appendSql(String fragment)
Description copied from interface:SqlAppenderAdd the passed fragment into the in-flight buffer- Specified by:
appendSqlin interfaceSqlAppender
-
appendSql
public void appendSql(char fragment)
- Specified by:
appendSqlin interfaceSqlAppender
-
appendSql
public void appendSql(int value)
- Specified by:
appendSqlin interfaceSqlAppender
-
appendSql
public void appendSql(long value)
- Specified by:
appendSqlin interfaceSqlAppender
-
appendSql
public void appendSql(boolean value)
- Specified by:
appendSqlin interfaceSqlAppender
-
append
public Appendable append(CharSequence csq)
- Specified by:
appendin interfaceAppendable- Specified by:
appendin interfaceSqlAppender
-
append
public Appendable append(CharSequence csq, int start, int end)
- Specified by:
appendin interfaceAppendable- Specified by:
appendin interfaceSqlAppender
-
append
public Appendable append(char c)
- Specified by:
appendin interfaceAppendable- Specified by:
appendin interfaceSqlAppender
-
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)
-
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()
-
getCurrentQueryPart
public QueryPart getCurrentQueryPart()
Description copied from interface:SqlAstTranslatorReturns the current query part that is translated.- Specified by:
getCurrentQueryPartin interfaceSqlAstTranslator<T extends JdbcOperation>
-
getCurrentClauseStack
public Stack<Clause> getCurrentClauseStack()
- Specified by:
getCurrentClauseStackin interfaceSqlAstTranslator<T extends JdbcOperation>
-
getCurrentCteStatement
protected CteStatement getCurrentCteStatement()
-
getCteStatement
protected CteStatement getCteStatement(String cteName)
-
translate
public T translate(JdbcParameterBindings jdbcParameterBindings, QueryOptions queryOptions)
- Specified by:
translatein interfaceSqlAstTranslator<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:
visitSelectStatementin interfaceSqlAstWalker
-
visitDeleteStatement
public void visitDeleteStatement(DeleteStatement statement)
- Specified by:
visitDeleteStatementin interfaceSqlAstWalker
-
visitUpdateStatement
public void visitUpdateStatement(UpdateStatement statement)
- Specified by:
visitUpdateStatementin interfaceSqlAstWalker
-
visitAssignment
public void visitAssignment(Assignment assignment)
- Specified by:
visitAssignmentin interfaceSqlAstWalker
-
visitInsertStatement
public void visitInsertStatement(InsertSelectStatement statement)
- Specified by:
visitInsertStatementin interfaceSqlAstWalker
-
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)
-
appendAssignmentColumn
protected void appendAssignmentColumn(ColumnReference column)
-
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)
-
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()
-
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 thearray_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:
visitQueryGroupin interfaceSqlAstWalker
-
renderQueryGroup
protected void renderQueryGroup(QueryGroup queryGroup, boolean renderOrderByAndOffsetFetchClause)
-
visitQuerySpec
public void visitQuerySpec(QuerySpec querySpec)
- Specified by:
visitQuerySpecin interfaceSqlAstWalker
-
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 adda >= 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 predicatea >= 1and then want to remove rows wherea = 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:
visitSortSpecificationin interfaceSqlAstWalker
-
visitSortSpecification
protected void visitSortSpecification(Expression sortExpression, SortDirection sortOrder, NullPrecedence nullPrecedence, boolean ignoreCase)
-
renderSortExpression
protected void renderSortExpression(Expression sortExpression, boolean ignoreCase)
-
supportsNullPrecedence
protected boolean supportsNullPrecedence()
-
emulateSortSpecificationNullPrecedence
protected void emulateSortSpecificationNullPrecedence(Expression sortExpression, NullPrecedence nullPrecedence)
-
visitOffsetFetchClause
public void visitOffsetFetchClause(QueryPart queryPart)
- Specified by:
visitOffsetFetchClausein interfaceSqlAstWalker
-
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)
-
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:
visitSelectClausein interfaceSqlAstWalker
-
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:
visitOverin interfaceSqlAstWalker
-
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
protected 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:
visitSqlSelectionin interfaceSqlAstWalker
-
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:
visitFromClausein interfaceSqlAstWalker
-
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)
-
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:
visitValuesTableReferencein interfaceSqlAstWalker
-
visitQueryPartTableReference
public void visitQueryPartTableReference(QueryPartTableReference tableReference)
- Specified by:
visitQueryPartTableReferencein interfaceSqlAstWalker
-
visitFunctionTableReference
public void visitFunctionTableReference(FunctionTableReference tableReference)
- Specified by:
visitFunctionTableReferencein interfaceSqlAstWalker
-
emulateQueryPartTableReferenceColumnAliasing
protected void emulateQueryPartTableReferenceColumnAliasing(QueryPartTableReference tableReference)
-
emulateValuesTableReferenceColumnAliasing
protected void emulateValuesTableReferenceColumnAliasing(ValuesTableReference tableReference)
-
renderDerivedTableReference
protected void renderDerivedTableReference(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)
-
getLiteralValue
public <X> X getLiteralValue(Expression expression)
-
visitTableGroup
public void visitTableGroup(TableGroup tableGroup)
- Specified by:
visitTableGroupin interfaceSqlAstWalker
-
visitTableGroupJoin
public void visitTableGroupJoin(TableGroupJoin tableGroupJoin)
- Specified by:
visitTableGroupJoinin interfaceSqlAstWalker
-
visitNamedTableReference
public void visitNamedTableReference(NamedTableReference tableReference)
- Specified by:
visitNamedTableReferencein interfaceSqlAstWalker
-
visitTableReferenceJoin
public void visitTableReferenceJoin(TableReferenceJoin tableReferenceJoin)
- Specified by:
visitTableReferenceJoinin interfaceSqlAstWalker
-
visitColumnReference
public void visitColumnReference(ColumnReference columnReference)
- Specified by:
visitColumnReferencein interfaceSqlAstWalker
-
visitNestedColumnReference
public void visitNestedColumnReference(NestedColumnReference nestedColumnReference)
- Specified by:
visitNestedColumnReferencein interfaceSqlAstWalker
-
visitAggregateColumnWriteExpression
public void visitAggregateColumnWriteExpression(AggregateColumnWriteExpression aggregateColumnWriteExpression)
- Specified by:
visitAggregateColumnWriteExpressionin interfaceSqlAstWalker
-
determineColumnReferenceQualifier
protected String determineColumnReferenceQualifier(ColumnReference columnReference)
-
visitExtractUnit
public void visitExtractUnit(ExtractUnit extractUnit)
- Specified by:
visitExtractUnitin interfaceSqlAstWalker
-
visitDurationUnit
public void visitDurationUnit(DurationUnit unit)
- Specified by:
visitDurationUnitin interfaceSqlAstWalker
-
visitFormat
public void visitFormat(Format format)
- Specified by:
visitFormatin interfaceSqlAstWalker
-
visitStar
public void visitStar(Star star)
- Specified by:
visitStarin interfaceSqlAstWalker
-
visitTrimSpecification
public void visitTrimSpecification(TrimSpecification trimSpecification)
- Specified by:
visitTrimSpecificationin interfaceSqlAstWalker
-
visitCastTarget
public void visitCastTarget(CastTarget castTarget)
- Specified by:
visitCastTargetin interfaceSqlAstWalker
-
getSqlTypeName
@Deprecated(forRemoval=true) public static String getSqlTypeName(SqlTypedMapping castTarget, SessionFactoryImplementor factory)
Deprecated, for removal: This API element is subject to removal in a future version.
-
getSqlTypeName
public static String getSqlTypeName(SqlTypedMapping castTarget, TypeConfiguration typeConfiguration)
-
getCastTypeName
@Deprecated(forRemoval=true) public static String getCastTypeName(SqlTypedMapping castTarget, SessionFactoryImplementor factory)
Deprecated, for removal: This API element is subject to removal in a future version.
-
getCastTypeName
public static String getCastTypeName(SqlTypedMapping castTarget, TypeConfiguration typeConfiguration)
-
visitDistinct
public void visitDistinct(Distinct distinct)
- Specified by:
visitDistinctin interfaceSqlAstWalker
-
visitOverflow
public void visitOverflow(Overflow overflow)
- Specified by:
visitOverflowin interfaceSqlAstWalker
-
visitParameter
public void visitParameter(JdbcParameter jdbcParameter)
- Specified by:
visitParameterin interfaceSqlAstWalker
-
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- Parameters:
jdbcParameter-position-
-
render
public void render(SqlAstNode sqlAstNode, SqlAstNodeRenderingMode renderingMode)
Description copied from interface:SqlAstTranslatorRenders the given SQL AST node with the given rendering mode.- Specified by:
renderin interfaceSqlAstTranslator<T extends JdbcOperation>
-
withParameterRenderingMode
protected void withParameterRenderingMode(SqlAstNodeRenderingMode renderingMode, Runnable runnable)
-
visitTuple
public void visitTuple(SqlTuple tuple)
- Specified by:
visitTuplein interfaceSqlAstWalker
-
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:
visitCollationin interfaceSqlAstWalker
-
visitSqlSelectionExpression
public void visitSqlSelectionExpression(SqlSelectionExpression expression)
- Specified by:
visitSqlSelectionExpressionin interfaceSqlAstWalker
-
visitEntityTypeLiteral
public void visitEntityTypeLiteral(EntityTypeLiteral expression)
- Specified by:
visitEntityTypeLiteralin interfaceSqlAstWalker
-
visitEmbeddableTypeLiteral
public void visitEmbeddableTypeLiteral(EmbeddableTypeLiteral expression)
- Specified by:
visitEmbeddableTypeLiteralin interfaceSqlAstWalker
-
visitBinaryArithmeticExpression
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression)
- Specified by:
visitBinaryArithmeticExpressionin interfaceSqlAstWalker
-
visitArithmeticOperand
protected void visitArithmeticOperand(Expression expression)
-
visitDuration
public void visitDuration(Duration duration)
- Specified by:
visitDurationin interfaceSqlAstWalker
-
visitConversion
public void visitConversion(Conversion conversion)
- Specified by:
visitConversionin interfaceSqlAstWalker
-
visitCaseSearchedExpression
public final void visitCaseSearchedExpression(CaseSearchedExpression caseSearchedExpression)
- Specified by:
visitCaseSearchedExpressionin interfaceSqlAstWalker
-
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:
visitCaseSimpleExpressionin interfaceSqlAstWalker
-
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:
visitAnyin interfaceSqlAstWalker
-
visitEvery
public void visitEvery(Every every)
- Specified by:
visitEveryin interfaceSqlAstWalker
-
visitSummarization
public void visitSummarization(Summarization every)
- Specified by:
visitSummarizationin interfaceSqlAstWalker
-
visitJdbcLiteral
public void visitJdbcLiteral(JdbcLiteral<?> jdbcLiteral)
- Specified by:
visitJdbcLiteralin interfaceSqlAstWalker
-
visitQueryLiteral
public void visitQueryLiteral(QueryLiteral<?> queryLiteral)
- Specified by:
visitQueryLiteralin interfaceSqlAstWalker
-
visitUnparsedNumericLiteral
public <N extends Number> void visitUnparsedNumericLiteral(UnparsedNumericLiteral<N> literal)
- Specified by:
visitUnparsedNumericLiteralin interfaceSqlAstWalker
-
renderNull
protected void renderNull(Literal literal)
-
renderAsLiteral
protected void renderAsLiteral(JdbcParameter jdbcParameter, Object literalValue)
-
visitUnaryOperationExpression
public void visitUnaryOperationExpression(UnaryOperation unaryOperationExpression)
- Specified by:
visitUnaryOperationExpressionin interfaceSqlAstWalker
-
visitModifiedSubQueryExpression
public void visitModifiedSubQueryExpression(ModifiedSubQueryExpression expression)
- Specified by:
visitModifiedSubQueryExpressionin interfaceSqlAstWalker
-
visitSelfRenderingPredicate
public void visitSelfRenderingPredicate(SelfRenderingPredicate selfRenderingPredicate)
- Specified by:
visitSelfRenderingPredicatein interfaceSqlAstWalker
-
visitSelfRenderingExpression
public void visitSelfRenderingExpression(SelfRenderingExpression expression)
- Specified by:
visitSelfRenderingExpressionin interfaceSqlAstWalker
-
visitBooleanExpressionPredicate
public void visitBooleanExpressionPredicate(BooleanExpressionPredicate booleanExpressionPredicate)
- Specified by:
visitBooleanExpressionPredicatein interfaceSqlAstWalker
-
visitBetweenPredicate
public void visitBetweenPredicate(BetweenPredicate betweenPredicate)
- Specified by:
visitBetweenPredicatein interfaceSqlAstWalker
-
visitFilterPredicate
public void visitFilterPredicate(FilterPredicate filterPredicate)
- Specified by:
visitFilterPredicatein interfaceSqlAstWalker
-
visitFilterFragmentPredicate
public void visitFilterFragmentPredicate(FilterPredicate.FilterFragmentPredicate filter)
- Specified by:
visitFilterFragmentPredicatein interfaceSqlAstWalker
-
visitSqlFragmentPredicate
public void visitSqlFragmentPredicate(SqlFragmentPredicate predicate)
- Specified by:
visitSqlFragmentPredicatein interfaceSqlAstWalker
-
visitGroupedPredicate
public void visitGroupedPredicate(GroupedPredicate groupedPredicate)
- Specified by:
visitGroupedPredicatein interfaceSqlAstWalker
-
visitInListPredicate
public void visitInListPredicate(InListPredicate inListPredicate)
- Specified by:
visitInListPredicatein interfaceSqlAstWalker
-
visitInArrayPredicate
public void visitInArrayPredicate(InArrayPredicate inArrayPredicate)
- Specified by:
visitInArrayPredicatein interfaceSqlAstWalker
-
visitInSubQueryPredicate
public void visitInSubQueryPredicate(InSubQueryPredicate inSubQueryPredicate)
- Specified by:
visitInSubQueryPredicatein interfaceSqlAstWalker
-
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:
visitExistsPredicatein interfaceSqlAstWalker
-
visitJunction
public void visitJunction(Junction junction)
- Specified by:
visitJunctionin interfaceSqlAstWalker
-
visitLikePredicate
public void visitLikePredicate(LikePredicate likePredicate)
- Specified by:
visitLikePredicatein interfaceSqlAstWalker
-
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:
visitNegatedPredicatein interfaceSqlAstWalker
-
visitNullnessPredicate
public void visitNullnessPredicate(NullnessPredicate nullnessPredicate)
- Specified by:
visitNullnessPredicatein interfaceSqlAstWalker
-
visitThruthnessPredicate
public void visitThruthnessPredicate(ThruthnessPredicate thruthnessPredicate)
- Specified by:
visitThruthnessPredicatein interfaceSqlAstWalker
-
visitRelationalPredicate
public void visitRelationalPredicate(ComparisonPredicate comparisonPredicate)
- Specified by:
visitRelationalPredicatein interfaceSqlAstWalker
-
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) < ('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 withis distinct fromandis not distinct fromoperators.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 supportsrow 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 supportsrow 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
-
getFromDual
@Deprecated(forRemoval=true) protected String getFromDual()
Deprecated, for removal: This API element is subject to removal in a future version.UsegetDual()insteadSome databases require a bit of syntactic noise when there are no tables in the from clause.- Returns:
- the SQL equivalent to Oracle's
from dual.
-
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:
visitStandardTableInsertin interfaceSqlAstWalker
-
renderIntoIntoAndTable
protected void renderIntoIntoAndTable(TableInsertStandard tableInsert)
Renders theinsert 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:
visitCustomTableInsertin interfaceSqlAstWalker
-
visitStandardTableUpdate
public void visitStandardTableUpdate(TableUpdateStandard tableUpdate)
- Specified by:
visitStandardTableUpdatein interfaceSqlAstWalker
-
visitOptionalTableUpdate
public void visitOptionalTableUpdate(OptionalTableUpdate tableUpdate)
- Specified by:
visitOptionalTableUpdatein interfaceSqlAstWalker
-
visitCustomTableUpdate
public void visitCustomTableUpdate(TableUpdateCustomSql tableUpdate)
- Specified by:
visitCustomTableUpdatein interfaceSqlAstWalker
-
visitStandardTableDelete
public void visitStandardTableDelete(TableDeleteStandard tableDelete)
- Specified by:
visitStandardTableDeletein interfaceSqlAstWalker
-
visitCustomTableDelete
public void visitCustomTableDelete(TableDeleteCustomSql tableDelete)
- Specified by:
visitCustomTableDeletein interfaceSqlAstWalker
-
applyParameter
protected void applyParameter(ColumnValueParameter parameter)
-
visitColumnWriteFragment
public void visitColumnWriteFragment(ColumnWriteFragment columnWriteFragment)
- Specified by:
visitColumnWriteFragmentin interfaceSqlAstWalker
-
simpleColumnWriteFragmentRendering
protected void simpleColumnWriteFragmentRendering(ColumnWriteFragment columnWriteFragment)
-
-