Skip to content

Commit

Permalink
0005497: Fixed NPE in DbFill
Browse files Browse the repository at this point in the history
  • Loading branch information
evan-miller-jumpmind committed Oct 3, 2022
1 parent 5139a66 commit 526fc50
Showing 1 changed file with 14 additions and 7 deletions.
Expand Up @@ -284,9 +284,10 @@ protected void buildDependentColumnValues(List<Table> tables) {
List<Object> commonValue = new ArrayList<Object>();
StringBuilder sb = null;
for (ForeignKeyReference fkr : references) {
ForeignKey fk = fkr.getForeignKey();
String key = table.getFullyQualifiedTableName() + "." + fkr.getReference().getForeignColumnName();
commonDependencyValues.put(key, commonValue);
commonDependencyTables.add(getDbTable(fkr.getForeignKey().getForeignTableName()));
commonDependencyTables.add(getDbTable(fk.getForeignTableCatalog(), fk.getForeignTableSchema(), fk.getForeignTableName()));
if (verbose) {
sb = (sb == null) ? new StringBuilder() : sb.append(", ");
sb.append(fkr.getReference().getLocalColumnName() + " -> " + fkr.getForeignKey().getForeignTableName() + "." + fkr.getReference()
Expand Down Expand Up @@ -329,7 +330,8 @@ protected int buildMinColumnSize(Table table, Column column, Set<String> related
for (ForeignKey fk : table.getForeignKeys()) {
for (Reference ref : fk.getReferences()) {
if (ref.getLocalColumnName().equals(column.getName())) {
Table foreignTable = getDbTable(fk.getForeignTableName());
Table foreignTable = getDbTable(fk.getForeignTableCatalog(), fk.getForeignTableSchema(),
fk.getForeignTableName());
Column foreignColumn = foreignTable.findColumn(ref.getForeignColumnName());
size = buildMinColumnSize(foreignTable, foreignColumn, relatedTableColumns, size);
}
Expand All @@ -356,9 +358,10 @@ protected List<Table> getForeignKeyTables(List<Table> tables, Set<Table> visited
Set<Table> fkDepSet = new HashSet<Table>(tables);
List<Table> fkDepList = new ArrayList<Table>();
for (Table table : tables) {
if (visited.add(table)) {
if (table != null && visited.add(table)) {
for (ForeignKey fk : table.getForeignKeys()) {
Table foreignTable = getDbTable(fk.getForeignTableName());
Table foreignTable = getDbTable(fk.getForeignTableCatalog(), fk.getForeignTableSchema(),
fk.getForeignTableName());
if (fkDepSet.add(foreignTable)) {
fkDepList.add(foreignTable);
}
Expand All @@ -375,7 +378,7 @@ protected List<Table> getForeignKeyTables(List<Table> tables, Set<Table> visited
protected List<Table> getForeignKeyTablesReversed(List<Table> tables, Set<Table> visited) {
List<Table> fkDepList = new ArrayList<Table>();
for (Table table : tables) {
if (visited.add(table)) {
if (table != null && visited.add(table)) {
String parentTableName = table.getName();
for (Table child : getAllDbTables().values()) {
for (ForeignKey fk : child.getForeignKeys()) {
Expand Down Expand Up @@ -1057,8 +1060,12 @@ protected Map<String, Table> getAllDbTables() {
return allDbTablesCache;
}

protected Table getDbTable(String tableName) {
return getAllDbTables().get(tableName);
protected Table getDbTable(String catalogName, String schemaName, String tableName) {
Table table = getAllDbTables().get(tableName);
if (table == null) {
table = platform.readTableFromDatabase(catalogName, schemaName, tableName);
}
return table;
}

public DmlStatement createInsertDmlStatement(Table table) {
Expand Down

0 comments on commit 526fc50

Please sign in to comment.