diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java index f7cb8e1be1..c94922d341 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java @@ -526,6 +526,7 @@ public class GenerationTool { } } database.setRegexMatchesPartialQualification(!FALSE.equals(d.isRegexMatchesPartialQualification())); + database.setSqlMatchesPartialQualification(!FALSE.equals(d.isSqlMatchesPartialQualification())); SchemaVersionProvider svp = null; CatalogVersionProvider cvp = null; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java index 1db076797c..2c2e165c77 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java @@ -109,6 +109,7 @@ public abstract class AbstractDatabase implements Database { private SQLDialect dialect; private Connection connection; private boolean regexMatchesPartialQualification; + private boolean sqlMatchesPartialQualification; private List filters; private String[] excludes; private String[] includes = { ".*" }; @@ -388,7 +389,7 @@ public abstract class AbstractDatabase implements Database { if (set == null) return false; - if (!getRegexMatchesPartialQualification()) + if (!getSqlMatchesPartialQualification()) return set.contains(definition.getName()) || set.contains(definition.getQualifiedName()); @@ -911,6 +912,16 @@ public abstract class AbstractDatabase implements Database { return regexMatchesPartialQualification; } + @Override + public final void setSqlMatchesPartialQualification(boolean sqlMatchesPartialQualification) { + this.sqlMatchesPartialQualification = sqlMatchesPartialQualification; + } + + @Override + public final boolean getSqlMatchesPartialQualification() { + return sqlMatchesPartialQualification; + } + @Override public void setRecordVersionFields(String[] recordVersionFields) { this.recordVersionFields = recordVersionFields; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/Database.java b/jOOQ-meta/src/main/java/org/jooq/meta/Database.java index a8047f5cce..ccab8020c6 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/Database.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/Database.java @@ -619,6 +619,20 @@ public interface Database extends AutoCloseable { */ boolean getRegexMatchesPartialQualification(); + /** + * Whether the SQL statements matching database objects should match + * partially qualified names as well as fully qualified and unqualified + * names. + */ + void setSqlMatchesPartialQualification(boolean sqlMatchesPartialQualification); + + /** + * Whether the SQL statements matching database objects should match + * partially qualified names as well as fully qualified and unqualified + * names. + */ + boolean getSqlMatchesPartialQualification(); + /** * Table columns matching these regular expressions will be considered as * record version fields in generated code. diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Database.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Database.java index 0bb7eaf90f..6e147faacb 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Database.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Database.java @@ -46,6 +46,8 @@ public class Database implements Serializable protected List regexFlags; @XmlElement(defaultValue = "true") protected Boolean regexMatchesPartialQualification = true; + @XmlElement(defaultValue = "true") + protected Boolean sqlMatchesPartialQualification = true; @XmlElement(defaultValue = ".*") @XmlJavaTypeAdapter(StringAdapter.class) protected String includes = ".*"; @@ -278,6 +280,30 @@ public class Database implements Serializable this.regexMatchesPartialQualification = value; } + /** + * Whether SQL queries that match qualified object names also match partial qualifications (e.g. `table\.column` matches `schema.table.column`) or only full and/or no qualifications (e.g. `schema\.table\.column` and `column` match `schema.table.column`) + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isSqlMatchesPartialQualification() { + return sqlMatchesPartialQualification; + } + + /** + * Sets the value of the sqlMatchesPartialQualification property. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setSqlMatchesPartialQualification(Boolean value) { + this.sqlMatchesPartialQualification = value; + } + /** * All elements that are generated from your schema. *

@@ -1424,6 +1450,11 @@ public class Database implements Serializable return this; } + public Database withSqlMatchesPartialQualification(Boolean value) { + setSqlMatchesPartialQualification(value); + return this; + } + public Database withIncludes(String value) { setIncludes(value); return this; @@ -1788,6 +1819,11 @@ public class Database implements Serializable sb.append(regexMatchesPartialQualification); sb.append(""); } + if (sqlMatchesPartialQualification!= null) { + sb.append(""); + sb.append(sqlMatchesPartialQualification); + sb.append(""); + } if (includes!= null) { sb.append(""); sb.append(includes); @@ -2088,6 +2124,15 @@ public class Database implements Serializable return false; } } + if (sqlMatchesPartialQualification == null) { + if (other.sqlMatchesPartialQualification!= null) { + return false; + } + } else { + if (!sqlMatchesPartialQualification.equals(other.sqlMatchesPartialQualification)) { + return false; + } + } if (includes == null) { if (other.includes!= null) { return false; @@ -2512,6 +2557,7 @@ public class Database implements Serializable result = ((prime*result)+((name == null)? 0 :name.hashCode())); result = ((prime*result)+((regexFlags == null)? 0 :regexFlags.hashCode())); result = ((prime*result)+((regexMatchesPartialQualification == null)? 0 :regexMatchesPartialQualification.hashCode())); + result = ((prime*result)+((sqlMatchesPartialQualification == null)? 0 :sqlMatchesPartialQualification.hashCode())); result = ((prime*result)+((includes == null)? 0 :includes.hashCode())); result = ((prime*result)+((excludes == null)? 0 :excludes.hashCode())); result = ((prime*result)+((includeExcludeColumns == null)? 0 :includeExcludeColumns.hashCode())); diff --git a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.12.0.xsd b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.12.0.xsd index 7549ae1e6f..041a7fe7e8 100644 --- a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.12.0.xsd +++ b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.12.0.xsd @@ -449,6 +449,10 @@ The default value is "COMMENTS CASE_INSENSITIVE"]]> + + + +