Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
added delete sql quoting of tables, rephrased regex in "truncate" and…
… "delete" keyword recognition
  • Loading branch information
JJStarrett committed Jul 10, 2019
1 parent d260a69 commit feb1799
Show file tree
Hide file tree
Showing 7 changed files with 46 additions and 4 deletions.
Expand Up @@ -1199,4 +1199,13 @@ public String getTruncateSql(Table table) {

return sql;
}

public String getDeleteSql(Table table) {
String sql = null;
sql = "delete from ";
String quote = getDdlBuilder().isDelimitedIdentifierModeOn() ? getDatabaseInfo().getDelimiterToken() : "";
sql += table.getQualifiedTableName(quote, getDatabaseInfo().getCatalogSeparator(), getDatabaseInfo().getSchemaSeparator());

return sql;
}
}
Expand Up @@ -198,4 +198,6 @@ public Object[] getObjectValues(BinaryEncoding encoding, String[] values,
public long getEstimatedRowCount(Table table);

public String getTruncateSql(Table table);

public String getDeleteSql(Table table);
}
Expand Up @@ -71,8 +71,10 @@ public class DefaultDatabaseWriter extends AbstractDatabaseWriter {

private final String ATTRIBUTE_CHANNEL_ID_RELOAD = "reload";

private final String TRUNCATE_PATTERN = "truncate table [^ ]+";

private final String TRUNCATE_PATTERN = "^(truncate)( table)?.*";

private final String DELETE_PATTERN = "^(delete from).*";

protected IDatabasePlatform platform;

protected ISqlTransaction transaction;
Expand Down Expand Up @@ -832,10 +834,13 @@ protected String preprocessSqlStatement(String sql) {
sql = FormatUtils.replace("catalogName", quoteString(targetTable.getCatalog()), sql);
sql = FormatUtils.replace("schemaName", quoteString(targetTable.getSchema()), sql);
sql = FormatUtils.replace("tableName", quoteString(targetTable.getName()), sql);

if (ATTRIBUTE_CHANNEL_ID_RELOAD.equals(batch.getChannelId()) && sql.matches(TRUNCATE_PATTERN)) {
boolean temp = sql.matches(TRUNCATE_PATTERN);
if (ATTRIBUTE_CHANNEL_ID_RELOAD.equals(batch.getChannelId()) && sql.matches(TRUNCATE_PATTERN)) {
sql = getPlatform().getTruncateSql(targetTable);
}
else if (ATTRIBUTE_CHANNEL_ID_RELOAD.equals(batch.getChannelId()) && sql.matches(DELETE_PATTERN)) {
sql = getPlatform().getDeleteSql(targetTable);
}
} else if (sourceTable != null) {
sql = FormatUtils.replace("catalogName", quoteString(sourceTable.getCatalog()), sql);
sql = FormatUtils.replace("schemaName", quoteString(sourceTable.getSchema()), sql);
Expand Down
Expand Up @@ -119,4 +119,11 @@ public String getTruncateSql(Table table) {
sql += " reuse storage immediate";
return sql;
}

@Override
public String getDeleteSql(Table table) {
String sql = super.getDeleteSql(table);
sql += " reuse storage immediate";
return sql;
}
}
Expand Up @@ -93,4 +93,11 @@ public String getTruncateSql(Table table) {
sql += " cascade";
return sql;
}

@Override
public String getDeleteSql(Table table) {
String sql = super.getDeleteSql(table);
sql += " cascade";
return sql;
}
}
Expand Up @@ -148,4 +148,9 @@ public long getEstimatedRowCount(Table table) {
table.getName(), table.getSchema());
}

@Override
public String getTruncateSql(Table table) {
return super.getTruncateSql(table);
}

}
Expand Up @@ -249,4 +249,11 @@ public String getTruncateSql(Table table) {
sql += " cascade";
return sql;
}

@Override
public String getDeleteSql(Table table) {
String sql = super.getDeleteSql(table);
sql += " cascade";
return sql;
}
}

0 comments on commit feb1799

Please sign in to comment.