Package org.h2.command.dml
Class MergeUsing
- java.lang.Object
-
- org.h2.command.Prepared
-
- org.h2.command.dml.DataChangeStatement
-
- org.h2.command.dml.MergeUsing
-
public final class MergeUsing extends DataChangeStatement
This class represents the statement syntax MERGE INTO table alias USING... It does not replace the MERGE INTO... KEYS... form.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classMergeUsing.WhenAbstract WHEN command of the MERGE statement.classMergeUsing.WhenMatchedThenDeleteclassMergeUsing.WhenMatchedThenUpdateclassMergeUsing.WhenNotMatched
-
Field Summary
Fields Modifier and Type Field Description (package private) ExpressiononConditionON condition expression.(package private) TableFiltersourceTableFilterSource table filter.private java.util.HashSet<java.lang.Long>targetRowidsRememberedContains _ROWID_ of processed rows.(package private) TableFiltertargetTableFilterTarget table filter.private java.util.ArrayList<MergeUsing.When>when-
Fields inherited from class org.h2.command.Prepared
create, parameters, prepareAlways, session, sqlStatement, sqlTokens
-
-
Constructor Summary
Constructors Constructor Description MergeUsing(SessionLocal session, TableFilter targetTableFilter)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddWhen(MergeUsing.When w)Adds WHEN command.private voidcheckRights()voidcollectDependencies(java.util.HashSet<DbObject> dependencies)Find and collect all DbObjects, this Prepared depends on.private intevaluateTriggerMasks()ExpressiongetOnCondition()java.lang.StringgetPlanSQL(int sqlFlags)Get the SQL statement with the execution plan.TableFiltergetSourceTableFilter()java.lang.StringgetStatementName()Return the name of this statement.TablegetTable()Return the target table.TableFiltergetTargetTableFilter()intgetType()Get the command type as defined in CommandInterfacejava.util.ArrayList<MergeUsing.When>getWhen()private intmerge(boolean nullRow, ResultTarget deltaChangeCollector, DataChangeDeltaTable.ResultOption deltaChangeCollectionMode)voidprepare()Prepare this statement.voidsetOnCondition(Expression condition)voidsetSourceTableFilter(TableFilter sourceTableFilter)voidsetTargetTableFilter(TableFilter targetTableFilter)longupdate(ResultTarget deltaChangeCollector, DataChangeDeltaTable.ResultOption deltaChangeCollectionMode)Execute the statement with specified delta change collector and collection mode.-
Methods inherited from class org.h2.command.dml.DataChangeStatement
isCacheable, isTransactional, queryMeta, update
-
Methods inherited from class org.h2.command.Prepared
checkCanceled, checkParameters, getCteCleanups, getCurrentRowNumber, getObjectId, getParameters, getPersistedObjectId, getSession, getSimpleSQL, getSQL, getSQLTokens, isQuery, isReadOnly, needRecompile, query, setCommand, setCteCleanups, setCurrentRowNumber, setParameterList, setPersistedObjectId, setPrepareAlways, setRow, setSession, setSQL, toString
-
-
-
-
Field Detail
-
targetTableFilter
TableFilter targetTableFilter
Target table filter.
-
sourceTableFilter
TableFilter sourceTableFilter
Source table filter.
-
onCondition
Expression onCondition
ON condition expression.
-
when
private java.util.ArrayList<MergeUsing.When> when
-
targetRowidsRemembered
private final java.util.HashSet<java.lang.Long> targetRowidsRemembered
Contains _ROWID_ of processed rows. Row identities are remembered to prevent duplicate updates of the same row.
-
-
Constructor Detail
-
MergeUsing
public MergeUsing(SessionLocal session, TableFilter targetTableFilter)
-
-
Method Detail
-
update
public long update(ResultTarget deltaChangeCollector, DataChangeDeltaTable.ResultOption deltaChangeCollectionMode)
Description copied from class:DataChangeStatementExecute the statement with specified delta change collector and collection mode.- Specified by:
updatein classDataChangeStatement- Parameters:
deltaChangeCollector- target resultdeltaChangeCollectionMode- collection mode- Returns:
- the update count
-
merge
private int merge(boolean nullRow, ResultTarget deltaChangeCollector, DataChangeDeltaTable.ResultOption deltaChangeCollectionMode)
-
evaluateTriggerMasks
private int evaluateTriggerMasks()
-
checkRights
private void checkRights()
-
getPlanSQL
public java.lang.String getPlanSQL(int sqlFlags)
Description copied from class:PreparedGet the SQL statement with the execution plan.- Overrides:
getPlanSQLin classPrepared- Parameters:
sqlFlags- formatting flags- Returns:
- the execution plan
-
prepare
public void prepare()
Description copied from class:PreparedPrepare this statement.
-
setSourceTableFilter
public void setSourceTableFilter(TableFilter sourceTableFilter)
-
getSourceTableFilter
public TableFilter getSourceTableFilter()
-
setOnCondition
public void setOnCondition(Expression condition)
-
getOnCondition
public Expression getOnCondition()
-
getWhen
public java.util.ArrayList<MergeUsing.When> getWhen()
-
addWhen
public void addWhen(MergeUsing.When w)
Adds WHEN command.- Parameters:
w- new WHEN command to add (update, delete or insert).
-
getTable
public Table getTable()
Description copied from class:DataChangeStatementReturn the target table.- Specified by:
getTablein classDataChangeStatement- Returns:
- the target table
-
setTargetTableFilter
public void setTargetTableFilter(TableFilter targetTableFilter)
-
getTargetTableFilter
public TableFilter getTargetTableFilter()
-
getType
public int getType()
Description copied from class:PreparedGet the command type as defined in CommandInterface
-
getStatementName
public java.lang.String getStatementName()
Description copied from class:DataChangeStatementReturn the name of this statement.- Specified by:
getStatementNamein classDataChangeStatement- Returns:
- the short name of this statement.
-
collectDependencies
public void collectDependencies(java.util.HashSet<DbObject> dependencies)
Description copied from class:PreparedFind and collect all DbObjects, this Prepared depends on.- Overrides:
collectDependenciesin classPrepared- Parameters:
dependencies- collection of dependencies to populate
-
-