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 class
MergeUsing.When
Abstract WHEN command of the MERGE statement.class
MergeUsing.WhenMatchedThenDelete
class
MergeUsing.WhenMatchedThenUpdate
class
MergeUsing.WhenNotMatched
-
Field Summary
Fields Modifier and Type Field Description (package private) Expression
onCondition
ON condition expression.(package private) TableFilter
sourceTableFilter
Source table filter.private java.util.HashSet<java.lang.Long>
targetRowidsRemembered
Contains _ROWID_ of processed rows.(package private) TableFilter
targetTableFilter
Target 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 void
addWhen(MergeUsing.When w)
Adds WHEN command.private void
checkRights()
void
collectDependencies(java.util.HashSet<DbObject> dependencies)
Find and collect all DbObjects, this Prepared depends on.private int
evaluateTriggerMasks()
Expression
getOnCondition()
java.lang.String
getPlanSQL(int sqlFlags)
Get the SQL statement with the execution plan.TableFilter
getSourceTableFilter()
java.lang.String
getStatementName()
Return the name of this statement.Table
getTable()
Return the target table.TableFilter
getTargetTableFilter()
int
getType()
Get the command type as defined in CommandInterfacejava.util.ArrayList<MergeUsing.When>
getWhen()
private int
merge(boolean nullRow, ResultTarget deltaChangeCollector, DataChangeDeltaTable.ResultOption deltaChangeCollectionMode)
void
prepare()
Prepare this statement.void
setOnCondition(Expression condition)
void
setSourceTableFilter(TableFilter sourceTableFilter)
void
setTargetTableFilter(TableFilter targetTableFilter)
long
update(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:DataChangeStatement
Execute the statement with specified delta change collector and collection mode.- Specified by:
update
in 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:Prepared
Get the SQL statement with the execution plan.- Overrides:
getPlanSQL
in classPrepared
- Parameters:
sqlFlags
- formatting flags- Returns:
- the execution plan
-
prepare
public void prepare()
Description copied from class:Prepared
Prepare 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:DataChangeStatement
Return the target table.- Specified by:
getTable
in classDataChangeStatement
- Returns:
- the target table
-
setTargetTableFilter
public void setTargetTableFilter(TableFilter targetTableFilter)
-
getTargetTableFilter
public TableFilter getTargetTableFilter()
-
getType
public int getType()
Description copied from class:Prepared
Get the command type as defined in CommandInterface
-
getStatementName
public java.lang.String getStatementName()
Description copied from class:DataChangeStatement
Return the name of this statement.- Specified by:
getStatementName
in classDataChangeStatement
- Returns:
- the short name of this statement.
-
collectDependencies
public void collectDependencies(java.util.HashSet<DbObject> dependencies)
Description copied from class:Prepared
Find and collect all DbObjects, this Prepared depends on.- Overrides:
collectDependencies
in classPrepared
- Parameters:
dependencies
- collection of dependencies to populate
-
-