[#8116] XMLDatabase should not distinguish between empty catalog and absent catalog

This commit is contained in:
lukaseder 2018-12-14 11:05:42 +01:00
parent 0e33d07200
commit 89f79d5f47
2 changed files with 13 additions and 12 deletions

View File

@ -395,9 +395,9 @@ public class XMLDatabase extends AbstractDatabase {
if (constraintType == constraint.getConstraintType()
&& getInputSchemata().contains(constraint.getConstraintSchema()))
for (KeyColumnUsage usage : info().getKeyColumnUsages())
if ( StringUtils.equals(constraint.getConstraintCatalog(), usage.getConstraintCatalog())
&& StringUtils.equals(constraint.getConstraintSchema(), usage.getConstraintSchema())
&& StringUtils.equals(constraint.getConstraintName(), usage.getConstraintName()))
if ( StringUtils.equals(defaultIfNull(constraint.getConstraintCatalog(), ""), defaultIfNull(usage.getConstraintCatalog(), ""))
&& StringUtils.equals(defaultIfNull(constraint.getConstraintSchema(), ""), defaultIfNull(usage.getConstraintSchema(), ""))
&& StringUtils.equals(defaultIfNull(constraint.getConstraintName(), ""), defaultIfNull(usage.getConstraintName(), "")))
result.add(usage);
@ -430,9 +430,9 @@ public class XMLDatabase extends AbstractDatabase {
for (ReferentialConstraint fk : info().getReferentialConstraints()) {
if (getInputSchemata().contains(fk.getConstraintSchema())) {
for (KeyColumnUsage usage : info().getKeyColumnUsages()) {
if ( StringUtils.equals(fk.getConstraintCatalog(), usage.getConstraintCatalog())
&& StringUtils.equals(fk.getConstraintSchema(), usage.getConstraintSchema())
&& StringUtils.equals(fk.getConstraintName(), usage.getConstraintName())) {
if ( StringUtils.equals(defaultIfNull(fk.getConstraintCatalog(), ""), defaultIfNull(usage.getConstraintCatalog(), ""))
&& StringUtils.equals(defaultIfNull(fk.getConstraintSchema(), ""), defaultIfNull(usage.getConstraintSchema(), ""))
&& StringUtils.equals(defaultIfNull(fk.getConstraintName(), ""), defaultIfNull(usage.getConstraintName(), ""))) {
SchemaDefinition foreignKeySchema = getSchema(fk.getConstraintSchema());
SchemaDefinition uniqueKeySchema = getSchema(fk.getUniqueConstraintSchema());
@ -444,9 +444,9 @@ public class XMLDatabase extends AbstractDatabase {
String uniqueKeyTableName = null;
for (TableConstraint uk : info().getTableConstraints()) {
if ( StringUtils.equals(fk.getUniqueConstraintCatalog(), uk.getConstraintCatalog())
&& StringUtils.equals(fk.getUniqueConstraintSchema(), uk.getConstraintSchema())
&& StringUtils.equals(fk.getUniqueConstraintName(), uk.getConstraintName())) {
if ( StringUtils.equals(defaultIfNull(fk.getUniqueConstraintCatalog(), ""), defaultIfNull(uk.getConstraintCatalog(), ""))
&& StringUtils.equals(defaultIfNull(fk.getUniqueConstraintSchema(), ""), defaultIfNull(uk.getConstraintSchema(), ""))
&& StringUtils.equals(defaultIfNull(fk.getUniqueConstraintName(), ""), defaultIfNull(uk.getConstraintName(), ""))) {
uniqueKeyTableName = uk.getTableName();
break;
}

View File

@ -38,6 +38,7 @@
package org.jooq.meta.xml;
import static org.jooq.meta.xml.XMLDatabase.unbox;
import static org.jooq.tools.StringUtils.defaultIfNull;
import java.sql.SQLException;
import java.util.ArrayList;
@ -78,9 +79,9 @@ public class XMLTableDefinition extends AbstractTableDefinition {
List<ColumnDefinition> result = new ArrayList<ColumnDefinition>();
for (Column column : info.getColumns()) {
if (StringUtils.equals(table.getTableCatalog(), column.getTableCatalog()) &&
StringUtils.equals(table.getTableSchema(), column.getTableSchema()) &&
StringUtils.equals(table.getTableName(), column.getTableName())) {
if (StringUtils.equals(defaultIfNull(table.getTableCatalog(), ""), defaultIfNull(column.getTableCatalog(), "")) &&
StringUtils.equals(defaultIfNull(table.getTableSchema(), ""), defaultIfNull(column.getTableSchema(), "")) &&
StringUtils.equals(defaultIfNull(table.getTableName(), ""), defaultIfNull(column.getTableName(), ""))) {
SchemaDefinition schema = getDatabase().getSchema(column.getTableSchema());