Class SqlAstTranslatorWithMerge<T extends JdbcOperation>
- All Implemented Interfaces:
Appendable, SqlAstWalker, SqlAstTranslator<T>, SqlAppender
- Direct Known Subclasses:
DB2SqlAstTranslator, PostgreSQLFamilySqlAstTranslator
Supported provider base for translators which implement a full
insert-or-update-or-delete MERGE command.
Use createMergeOperation(OptionalTableUpdate) to translate an OptionalTableUpdate into an
executable MergeOperation. That method owns the operation-construction
lifecycle. A provider customizes SQL grammar through the protected
renderMerge... callbacks.
-
Nested Class Summary
Nested classes/interfaces inherited from class AbstractSqlAstTranslator
AbstractSqlAstTranslator.LockStrategy, AbstractSqlAstTranslator.SubQueryRelationalRestrictionEmulationRenderer<X> -
Field Summary
Fields inherited from interface SqlAppender
CLOSE_PARENTHESIS, COMMA_SEPARATOR, COMMA_SEPARATOR_CHAR, NO_SEPARATOR, NULL_KEYWORD, OPEN_PARENTHESIS, PARAM_MARKER, WHITESPACE -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedSqlAstTranslatorWithMerge(SqlAstTranslationRequest<? extends Statement, T> request) Creates a full-MERGE translator for one translation request. -
Method Summary
Modifier and TypeMethodDescriptionfinal MergeOperationcreateMergeOperation(OptionalTableUpdate optionalTableUpdate) Creates the mutation operation for performing a fullMERGE.protected Expectationexpectation(OptionalTableUpdate optionalTableUpdate) protected voidrenderMergeDelete(OptionalTableUpdate optionalTableUpdate) Renders thewhen matcheddelete arm for an optional table.protected voidrenderMergeInsert(OptionalTableUpdate optionalTableUpdate) Renders thewhen not matchedinsert arm.protected voidrenderMergeInto(OptionalTableUpdate optionalTableUpdate) Renders themerge intoclause and target table.protected voidrenderMergeOn(OptionalTableUpdate optionalTableUpdate) Renders the key-matchingonpredicate.protected voidRenders the source-query alias, including any requiredaskeyword.protected voidrenderMergeStatement(OptionalTableUpdate optionalTableUpdate) Renders the complete optional-table update as aMERGEstatement.protected voidRenders the target-table alias, including any requiredaskeyword.protected voidrenderMergeUpdate(OptionalTableUpdate optionalTableUpdate) Renders thewhen matchedupdate arm when updatable bindings exist.protected voidrenderMergeUsing(OptionalTableUpdate optionalTableUpdate) Renders the completeusingclause around the generated source query.protected voidrenderMergeUsingQuery(OptionalTableUpdate optionalTableUpdate) protected voidrenderMergeUsingQuerySelection(ColumnValueBinding selectionBinding) Renders one selection and alias in the generatedusingquery.Methods inherited from class AbstractSqlAstTranslator
addAdditionalWherePredicate, addAffectedTableName, addParameterBinder, addParameterBinder, afterQueryGroup, append, append, append, appendBackslashEscapedLikeLiteral, appendDoubleQuoteEscapedString, appendSingleQuoteEscapedString, appendSql, appendSql, appendSql, appendSql, appendSql, appendSql, appendSql, applySqlComment, areAllResultsParameters, areAllResultsParameters, assertRowsOnlyFetchClauseType, beforeQueryGroup, castFunction, castNumberToString, determineColumnReferenceQualifier, determineCyclePathColumnName, determineLateralEmulationPredicate, determineLockingStrategy, determinePaginationRenderingPlan, determineUniqueConstraintNameThatMayFail, emulateCycleClauseWithRowAndArray, emulateFetchOffsetWithWindowFunctions, emulateFetchOffsetWithWindowFunctions, emulateFetchOffsetWithWindowFunctionsVisitQueryPart, emulateQuantifiedTupleSubQueryPredicate, emulateSearchClauseOrderWithRowAndArray, emulateSelectTupleComparison, emulateSortSpecificationNullPrecedence, emulateSubQueryRelationalRestrictionPredicate, emulateTupleComparison, getAffectedTableNames, getArrayContainsFunction, getBooleanType, getClauseStack, getCteParameterRenderingMode, getCteStatement, getCurrentClauseStack, getCurrentDmlStatement, getCurrentQueryPart, getDerivedTableRenderingSupport, getDialect, getEffectiveLockMode, getEffectiveLockMode, getEffectiveLockMode, getEffectiveLockTimeout, getFetchClauseTypeForRowNumbering, getGroupBySelectItemReferenceStrategy, getInsertConflictRenderingSupport, getIntegerType, getJdbcParameterBindings, getJdbcServices, getLeftHandExpression, getLimit, getLimitParameter, getLiteralValue, getLockingClauseStrategy, getLockOptions, getOffsetParameter, getPaginationRenderingSupport, getParameterBinders, getParameterBindValue, getParameterRenderingMode, getQueryMutationRenderingSupport, getQueryPartForRowNumbering, getQueryPartStack, getReturningRenderingSupport, getSelectItemReference, getSelectOnlyFromClause, getSessionFactory, getSetReturningFunctionRenderingSupport, getSingleRowTableExpression, getSortSpecificationsRowNumbering, getSql, getSqlAst, getSqlBuffer, getStatement, getStatementStack, getStringType, getTableJoinRenderingSupport, getTranslationRequest, getVersionSeedMapping, getWrapperOptions, hasAggregateFunctions, hasFrom, hasLimit, hasLimit, hasNestedOrTargetTableCorrelation, hasNonTrivialFromClause, hasOffset, hasTargetTableCorrelation, hasWhere, inOverOrWithinGroupClause, interpretExpression, isInRecursiveQueryPart, isInSubquery, isIntegerDivisionEmulationRequired, isLiteral, isLob, isParameter, isParameterInterpretation, isRenderingCorrelatedDerivedTable, isRenderingDerivedTable, isRenderingLateralDerivedTable, isRowNumberingCurrentQueryPart, isRowsOnlyFetchClauseType, isStruct, needsCteInlining, needsLocking, preferUnionQueryForTupleInListPredicate, registerAffectedTable, registerAffectedTable, render, renderAsLiteral, renderAssignmentColumn, renderBackslashEscapedLikePattern, renderCaseInsensitiveLikeEmulation, renderCasted, renderColumnWrite, renderCombinedLimitClause, renderCombinedLimitClause, renderCommaSeparated, renderCommaSeparatedSelectExpression, renderCommaSeparatedSelectExpression, renderComparison, renderComparisonDistinctOperator, renderComparisonEmulateCase, renderComparisonEmulateDecode, renderComparisonEmulateDecode, renderComparisonEmulateIntersect, renderComparisonStandard, renderCteSelectHint, renderCycleClause, renderCycleUsingClause, renderDeleteClause, renderDeleteStatementDirect, renderDeleteStatementWithJoinEmulation, renderDerivedTableReferenceIdentificationVariable, renderDmlTargetTableExpression, renderEmptyOrderBy, renderEscapeCharacter, renderExpressionAsClauseItem, renderExpressionAsLiteral, renderExpressionsAsSubquery, renderExpressionsAsValuesSubquery, renderFetch, renderFetchExpression, renderFetchFirstRow, renderFetchPlusOffsetExpression, renderFetchPlusOffsetExpressionAsLiteral, renderFetchPlusOffsetExpressionAsSingleParameter, renderFirstClause, renderFirstClause, renderFirstSkipClause, renderFirstSkipClause, renderFromClauseAfterUpdateSet, renderFromClauseExcludingDmlTargetReference, renderFromClauseJoiningDmlTargetReference, renderFromClauseSpaces, renderInsertInto, renderInsertIntoNoColumns, renderInsertStatementAsMerge, renderInterval, renderIntervalLiteral, renderIntoIntoAndTable, renderLegacyReturningInsert, renderLikePattern, renderLikePredicate, renderLimitOffsetClause, renderLimitOffsetClause, renderLiteral, renderMaterializationHint, renderMergeUpdateClause, renderNamedSetReturningFunction, renderNull, renderOffset, renderOffsetExpression, renderOffsetFetchClause, renderOffsetFetchClause, renderOnDuplicateKeyConflictClause, renderOrderByClause, renderParameterAsParameter, renderPartitionItem, renderPrimaryTableReferencePrefix, renderQuantifiedEmulationSubQuery, renderQueryGroupWithoutOrderByAndOffsetFetch, renderQueryPartTableReferenceWithSelectListAliases, renderRecursiveCteVirtualSelections, renderRelationalEmulationSubQuery, renderRowNumber, renderRowNumberingSelectItems, renderRowsToClause, renderRowsToClause, renderSearchClause, renderSelectClause, renderSelectExpression, renderSelectExpressionWithCastedOrInlinedPlainParameters, renderSelectItems, renderSelectSimpleComparison, renderSelectStatement, renderSelectTupleComparison, renderSetAssignment, renderSetAssignmentEmulateJoin, renderSetClause, renderSkipFirstClause, renderSkipFirstClause, renderSortExpression, renderStandardConflictClause, renderStandardCycleClause, renderStandardSearchClause, renderStandardTableInsert, renderStandardTableUpdate, renderStatementPrefix, renderStringContainsExactlyPredicate, renderTableReferenceAlias, renderTableReferenceIdentificationVariable, renderTenantRestriction, renderTopClause, renderTopClause, renderTopStartAtClause, renderTopStartAtClause, renderTupleComparisonStandard, renderUpdateClause, renderUpdateStatementAsInlineView, renderUpdateStatementAsMerge, renderUpdateStatementAsScalarSubquery, renderUpdateStatementAsTupleSet, renderUpdateStatementDirect, renderValuesListAsSelectUnion, renderValuesListStandard, renderValuesTableReferenceWithSelectListAliases, renderVirtualSelections, renderWrappedParameter, resolveAliasedExpression, resolveAliasedExpression, resolveExpressionToAlias, setLockingTarget, shouldEmulateLateralWithIntersect, shouldInlineCte, simpleColumnWriteFragmentRendering, translate, useOffsetFetchClause, visitAggregateColumnWriteExpression, visitAnsiCaseSearchedExpression, visitAnsiCaseSimpleExpression, visitAny, visitArithmeticOperand, visitAssignment, visitBetweenPredicate, visitBinaryArithmeticExpression, visitBooleanExpressionPredicate, visitCaseSearchedExpression, visitCaseSearchedExpression, visitCaseSimpleExpression, visitCaseSimpleExpression, visitCastTarget, visitCollation, visitColumnReference, visitColumnWriteFragment, visitConversion, visitCteContainer, visitCustomTableDelete, visitCustomTableInsert, visitCustomTableUpdate, visitDecodeCaseSearchedExpression, visitDeleteClause, visitDeleteStatement, visitDeleteStatementOnly, visitDistinct, visitDuration, visitDurationUnit, visitEmbeddableTypeLiteral, visitEntityTypeLiteral, visitEvery, visitExistsPredicate, visitExtractUnit, visitFilterFragmentPredicate, visitFilterPredicate, visitFormat, visitForUpdateClause, visitFromClause, visitFunctionTableReference, visitGroupByClause, visitGroupedPredicate, visitHavingClause, visitInArrayPredicate, visitInListPredicate, visitInsertStatement, visitInSubQueryPredicate, visitJdbcLiteral, visitJunction, visitLikePredicate, visitModifiedSubQueryExpression, visitNamedTableReference, visitNegatedPredicate, visitNestedColumnReference, visitNullnessPredicate, visitOffsetFetchClause, visitOptionalTableUpdate, visitOrderBy, visitOver, visitOverClause, visitOverClause, visitOverflow, visitParameter, visitParameterAsParameter, visitPartitionByClause, visitPartitionExpressions, visitPartitionExpressions, visitQueryClauses, visitQueryGroup, visitQueryLiteral, visitQueryPartTableReference, visitQuerySpec, visitRecursivePath, visitRelationalPredicate, visitSelectClause, visitSelectStatement, visitSelfRenderingExpression, visitSelfRenderingPredicate, visitSetAssignment, visitSortSpecification, visitSortSpecification, visitSqlFragmentPredicate, visitSqlSelectExpression, visitSqlSelection, visitSqlSelectionExpression, visitStandardTableDelete, visitStandardTableInsert, visitStandardTableUpdate, visitStar, visitSummarization, visitTableGroup, visitTableGroupJoin, visitTableReferenceJoin, visitThruthnessPredicate, visitTrimSpecification, visitTuple, visitUnaryOperationExpression, visitUnparsedNumericLiteral, visitUpdateClause, visitUpdateStatement, visitUpdateStatementOnly, visitValuesList, visitValuesTableReference, visitWhereClause, withoutLateralDerivedTableContext, withParameterRenderingMode, withRowNumbering
-
Constructor Details
-
SqlAstTranslatorWithMerge
@SPI(IMPLEMENT) protected SqlAstTranslatorWithMerge(SqlAstTranslationRequest<? extends Statement, T> request) Creates a full-MERGE translator for one translation request.
-
-
Method Details
-
createMergeOperation
Creates the mutation operation for performing a full
MERGE.The optional-table update is [#renderMergeStatement translated] and wrapped in a
MergeOperation. Override a protected rendering callback to customize the SQL; the operation lifecycle itself is invariant. -
expectation
-
renderMergeStatement
Renders the complete optional-table update as a
MERGEstatement.Override this only when the statement structure cannot be expressed by a more focused callback, and preserve the order of its insert, optional delete, and update arms.
-
renderMergeInto
Renders themerge intoclause and target table. -
renderMergeTargetAlias
-
renderMergeUsing
Renders the completeusingclause around the generated source query. -
renderMergeSourceAlias
-
renderMergeUsingQuery
-
renderMergeUsingQuerySelection
Renders one selection and alias in the generatedusingquery. -
renderMergeOn
Renders the key-matchingonpredicate. -
renderMergeInsert
Renders thewhen not matchedinsert arm. -
renderMergeDelete
Renders thewhen matcheddelete arm for an optional table. -
renderMergeUpdate
Renders thewhen matchedupdate arm when updatable bindings exist.
-