Skip to content

Commit

Permalink
0004289: Oracle: rebuilding triggers can result in changed data not
Browse files Browse the repository at this point in the history
being captured
  • Loading branch information
erilong committed Apr 10, 2020
1 parent a6cbe44 commit 233c2ec
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 6 deletions.
Expand Up @@ -1868,11 +1868,14 @@ protected TriggerHistory rebuildTriggerIfNecessary(StringBuilder sqlBuffer,
transaction = sqlTemplate.startSqlTransaction(platform.getDatabaseInfo().isRequiresAutoCommitForDdl());

if ((forceRebuild || !triggerIsActive) && triggerExists) {
symmetricDialect.removeTrigger(sqlBuffer, oldCatalogName, oldSourceSchema,
oldTriggerName, trigger.isSourceTableNameWildCarded() ? table.getName()
: trigger.getSourceTableNameUnescaped(), transaction);
if (!triggerIsActive || !platform.getDatabaseInfo().isTriggersCreateOrReplaceSupported() ||
!oldTriggerName.equalsIgnoreCase(newTriggerHist.getTriggerNameForDmlType(dmlType))) {
symmetricDialect.removeTrigger(sqlBuffer, oldCatalogName, oldSourceSchema,
oldTriggerName, trigger.isSourceTableNameWildCarded() ? table.getName()
: trigger.getSourceTableNameUnescaped(), transaction);
triggerRemoved = true;
}
triggerExists = false;
triggerRemoved = true;
}

boolean isDeadTrigger = !trigger.isSyncOnInsert() && !trigger.isSyncOnUpdate() && !trigger.isSyncOnDelete();
Expand Down
Expand Up @@ -85,6 +85,8 @@ public class DatabaseInfo {
private boolean uniqueEmbedded = true;

private boolean triggersSupported = true;

private boolean triggersCreateOrReplaceSupported = false;

/** Whether identity specification is supported for non-primary key columns. */
private boolean nonPKIdentityColumnsSupported = true;
Expand Down Expand Up @@ -1366,5 +1368,13 @@ public boolean isZeroDateAllowed() {
public void setZeroDateAllowed(boolean zeroDateAllowed) {
this.zeroDateAllowed = zeroDateAllowed;
}


public boolean isTriggersCreateOrReplaceSupported() {
return triggersCreateOrReplaceSupported;
}

public void setTriggersCreateOrReplaceSupported(boolean triggersCreateOrReplaceSupported) {
this.triggersCreateOrReplaceSupported = triggersCreateOrReplaceSupported;
}

}
Expand Up @@ -108,7 +108,7 @@ public OracleDdlBuilder() {
databaseInfo.setBlankCharColumnSpacePadded(true);
databaseInfo.setCharColumnSpaceTrimmed(false);
databaseInfo.setEmptyStringNulled(true);

databaseInfo.setTriggersCreateOrReplaceSupported(true);
}

@Override
Expand Down

0 comments on commit 233c2ec

Please sign in to comment.