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 f2bcec5a64..26ba0a0196 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java @@ -603,6 +603,7 @@ public class GenerationTool { database.setIncludeSystemSequences(TRUE.equals(d.isIncludeSystemSequences())); database.setIncludeSystemUDTs(TRUE.equals(d.isIncludeSystemUDTs())); database.setIncludeInvisibleColumns(!FALSE.equals(d.isIncludeInvisibleColumns())); + database.setInvisibleColumnsAsHidden(!FALSE.equals(d.isInvisibleColumnsAsHidden())); database.setIncludePrimaryKeys(!FALSE.equals(d.isIncludePrimaryKeys())); database.setIncludeRoutines(!FALSE.equals(d.isIncludeRoutines())); database.setIncludeDomains(!FALSE.equals(d.isIncludeDomains())); diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/XMLGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/XMLGenerator.java index 0fa07de442..f2eb5c7eaf 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/XMLGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/XMLGenerator.java @@ -206,7 +206,7 @@ public class XMLGenerator extends AbstractGenerator { column.setNumericPrecision(type.getPrecision()); column.setNumericScale(type.getScale()); column.setOrdinalPosition(co.getPosition()); - column.setHidden(co.isHidden()); + column.setHidden(type.isHidden()); column.setReadonly(co.isReadonly()); if (type.isComputed()) { 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 38538ca015..a1c45a0de4 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java @@ -197,6 +197,7 @@ public abstract class AbstractDatabase implements Database { private boolean includeExcludeColumns = false; private boolean includeExcludePackageRoutines = false; private boolean includeInvisibleColumns = true; + private boolean invisibleColumnsAsHidden = true; private boolean includeXMLSchemaCollections = true; private boolean includeTables = true; private boolean includeEmbeddables = true; @@ -1181,6 +1182,16 @@ public abstract class AbstractDatabase implements Database { return includeInvisibleColumns; } + @Override + public final void setInvisibleColumnsAsHidden(boolean invisibleColumnsAsHidden) { + this.invisibleColumnsAsHidden = invisibleColumnsAsHidden; + } + + @Override + public final boolean getInvisibleColumnsAsHidden() { + return invisibleColumnsAsHidden; + } + @Override public final boolean getIncludeTables() { return includeTables; 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 5aaaf7f5f4..45db657a94 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/Database.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/Database.java @@ -824,6 +824,20 @@ public interface Database extends AutoCloseable { */ boolean getIncludeInvisibleColumns(); + /** + * Whether invisible columns should be marked as {@link DataType#hidden()}. + *
+ * This feature is available in the commercial distribution only. + */ + void setInvisibleColumnsAsHidden(boolean invisibleColumnsAsHidden); + + /** + * Whether invisible columns should be marked as {@link DataType#hidden()}. + *
+ * This feature is available in the commercial distribution only.
+ */
+ boolean getInvisibleColumnsAsHidden();
+
/**
* Whether zero-scale decimal types should be treated as their most
* appropriate, corresponding integer type.
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/DefaultColumnDefinition.java b/jOOQ-meta/src/main/java/org/jooq/meta/DefaultColumnDefinition.java
index 17d2cb3eab..36385c35fe 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/DefaultColumnDefinition.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/DefaultColumnDefinition.java
@@ -85,7 +85,7 @@ public class DefaultColumnDefinition
boolean readonly,
String comment
) {
- this(table, name, position, type, identity, false, readonly, comment);
+ this(table, name, position, type, identity, type.isHidden(), readonly, comment);
}
public DefaultColumnDefinition(
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/h2/H2TableDefinition.java b/jOOQ-meta/src/main/java/org/jooq/meta/h2/H2TableDefinition.java
index 6e57f572f4..782b910388 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/h2/H2TableDefinition.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/h2/H2TableDefinition.java
@@ -56,6 +56,7 @@ import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
+import org.jooq.Field;
import org.jooq.Name;
import org.jooq.Param;
import org.jooq.Record;
@@ -70,6 +71,8 @@ import org.jooq.meta.h2.H2Database.ElementType;
import org.jooq.meta.h2.H2Database.ElementTypeLookupKey;
import org.jooq.meta.hsqldb.information_schema.Tables;
+import org.jetbrains.annotations.NotNull;
+
/**
* H2 table definition
*
@@ -102,6 +105,7 @@ public class H2TableDefinition extends AbstractTableDefinition {
List
+ * This feature is available in the commercial distribution only.
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public Boolean isInvisibleColumnsAsHidden() {
+ return invisibleColumnsAsHidden;
+ }
+
+ /**
+ * This flag indicates whether invisible columns should marked as {@link org.jooq.DataType#hidden()} in output produced by this database.
+ *
+ * This feature is available in the commercial distribution only.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setInvisibleColumnsAsHidden(Boolean value) {
+ this.invisibleColumnsAsHidden = value;
+ }
+
/**
* All table and view columns that are used as "version" fields for optimistic locking.
*
@@ -2544,6 +2574,17 @@ public class Database implements Serializable, XMLAppendable
return this;
}
+ /**
+ * This flag indicates whether invisible columns should marked as {@link org.jooq.DataType#hidden()} in output produced by this database.
+ *
+ * This feature is available in the commercial distribution only.
+ *
+ */
+ public Database withInvisibleColumnsAsHidden(Boolean value) {
+ setInvisibleColumnsAsHidden(value);
+ return this;
+ }
+
/**
* All table and view columns that are used as "version" fields for optimistic locking.
*
@@ -3152,6 +3193,7 @@ public class Database implements Serializable, XMLAppendable
builder.append("includeSystemSequences", includeSystemSequences);
builder.append("includeSystemUDTs", includeSystemUDTs);
builder.append("includeInvisibleColumns", includeInvisibleColumns);
+ builder.append("invisibleColumnsAsHidden", invisibleColumnsAsHidden);
builder.append("recordVersionFields", recordVersionFields);
builder.append("recordTimestampFields", recordTimestampFields);
builder.append("syntheticObjects", syntheticObjects);
@@ -3528,6 +3570,15 @@ public class Database implements Serializable, XMLAppendable
return false;
}
}
+ if (invisibleColumnsAsHidden == null) {
+ if (other.invisibleColumnsAsHidden!= null) {
+ return false;
+ }
+ } else {
+ if (!invisibleColumnsAsHidden.equals(other.invisibleColumnsAsHidden)) {
+ return false;
+ }
+ }
if (recordVersionFields == null) {
if (other.recordVersionFields!= null) {
return false;
@@ -3930,6 +3981,7 @@ public class Database implements Serializable, XMLAppendable
result = ((prime*result)+((includeSystemSequences == null)? 0 :includeSystemSequences.hashCode()));
result = ((prime*result)+((includeSystemUDTs == null)? 0 :includeSystemUDTs.hashCode()));
result = ((prime*result)+((includeInvisibleColumns == null)? 0 :includeInvisibleColumns.hashCode()));
+ result = ((prime*result)+((invisibleColumnsAsHidden == null)? 0 :invisibleColumnsAsHidden.hashCode()));
result = ((prime*result)+((recordVersionFields == null)? 0 :recordVersionFields.hashCode()));
result = ((prime*result)+((recordTimestampFields == null)? 0 :recordTimestampFields.hashCode()));
result = ((prime*result)+((syntheticObjects == null)? 0 :syntheticObjects.hashCode()));
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/mysql/MySQLTableDefinition.java b/jOOQ-meta/src/main/java/org/jooq/meta/mysql/MySQLTableDefinition.java
index bef3f97959..494e946aca 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/mysql/MySQLTableDefinition.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/mysql/MySQLTableDefinition.java
@@ -154,7 +154,7 @@ public class MySQLTableDefinition extends AbstractTableDefinition {
}
}
- DataTypeDefinition type = new DefaultDataTypeDefinition(
+ DefaultDataTypeDefinition type = new DefaultDataTypeDefinition(
getDatabase(),
getSchema(),
dataType,
@@ -168,6 +168,11 @@ public class MySQLTableDefinition extends AbstractTableDefinition {
.generatedAlwaysAs(generated ? record.get(COLUMNS.GENERATION_EXPRESSION) : null)
.generationOption(generationOption);
+
+
+
+
+
result.add(new DefaultColumnDefinition(
getDatabase().getTable(getSchema(), getName()),
record.get(COLUMNS.COLUMN_NAME),
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresDatabase.java b/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresDatabase.java
index 637941391f..7a6d1a7e2b 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresDatabase.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresDatabase.java
@@ -1246,6 +1246,13 @@ public class PostgresDatabase extends AbstractDatabase implements ResultQueryDat
+
+
+
+
+
+
+
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableDefinition.java b/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableDefinition.java
index da491d5001..6f382b7177 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableDefinition.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableDefinition.java
@@ -42,6 +42,7 @@ import static org.jooq.impl.DSL.any;
import static org.jooq.impl.DSL.coalesce;
import static org.jooq.impl.DSL.concat;
import static org.jooq.impl.DSL.count;
+import static org.jooq.impl.DSL.falseCondition;
import static org.jooq.impl.DSL.field;
import static org.jooq.impl.DSL.greatest;
import static org.jooq.impl.DSL.inline;
@@ -146,6 +147,8 @@ public class PostgresTableDefinition extends AbstractTableDefinition {
Field