Skip to content

Commit

Permalink
0004081: DBFill support for auto increment columns
Browse files Browse the repository at this point in the history
  • Loading branch information
jumpmind-josh committed Aug 27, 2019
1 parent 4faf4dc commit cd4d55d
Showing 1 changed file with 17 additions and 0 deletions.
Expand Up @@ -452,6 +452,11 @@ private void fillTables(List<Table> tablesToFill, List<Table> orderedTables, Map
}

ISqlTransaction tran = platform.getSqlTemplate().startSqlTransaction();
DatabaseInfo dbInfo = platform.getDatabaseInfo();
String quote = dbInfo.getDelimiterToken();
String catalogSeparator = dbInfo.getCatalogSeparator();
String schemaSeparator = dbInfo.getSchemaSeparator();

int rowsInTransaction = 0;
int rowsTotal = 0;

Expand All @@ -468,6 +473,11 @@ private void fillTables(List<Table> tablesToFill, List<Table> orderedTables, Map
for (int i = 0; i < numRowsToGenerate; i++) {

for (Table table : orderedTables) {
if (table.hasAutoIncrementColumn()) {
log.info("Turning on identity insert for table " + table.getName());
tran.allowInsertIntoAutoIncrementColumns(true, table, quote, catalogSeparator, schemaSeparator);
}

int dmlType = INSERT;
if (tableProperties != null && tableProperties.containsKey(table.getName())) {
dmlType = randomIUD(tableProperties.get(table.getName()));
Expand Down Expand Up @@ -519,6 +529,10 @@ private void fillTables(List<Table> tablesToFill, List<Table> orderedTables, Map
rowsInTransaction = 0;
AppUtils.sleep(interval);
}
if (table.hasAutoIncrementColumn()) {
log.info("Turning off identity insert for table " + table.getName());
tran.allowInsertIntoAutoIncrementColumns(false, table, quote, catalogSeparator, schemaSeparator);
}
}

}
Expand Down Expand Up @@ -882,10 +896,13 @@ private void clearDependentColumnValues() {
}

private Object generateRandomValueForColumn(Table table, Column column) {

Object objectValue = null;
int type = column.getMappedTypeCode();
if (column.getPlatformColumns() != null && column.getPlatformColumns().get(platform.getName()) != null && column.getPlatformColumns().get(platform.getName()).isEnum()) {
objectValue = column.getPlatformColumns().get(platform.getName()).getEnumValues()[new Random().nextInt(column.getPlatformColumns().get(platform.getName()).getEnumValues().length)];
} else if (column.getJdbcTypeName() != null && column.getJdbcTypeName().equals("uniqueidentifier")) {
objectValue = randomUUID();
} else if (column.isTimestampWithTimezone()) {
objectValue = String.format("%s %s",
FormatUtils.TIMESTAMP_FORMATTER.format(randomDate()),
Expand Down

0 comments on commit cd4d55d

Please sign in to comment.