[jOOQ/jOOQ#9864] Added READONLY support in InformationSchema

This commit is contained in:
Lukas Eder 2021-11-04 10:51:34 +01:00
parent e3d1013731
commit e06f06edb7
26 changed files with 108 additions and 47 deletions

View File

@ -195,6 +195,7 @@ public class XMLGenerator extends AbstractGenerator {
column.setNumericPrecision(type.getPrecision());
column.setNumericScale(type.getScale());
column.setOrdinalPosition(co.getPosition());
column.setReadonly(co.isReadonly());
is.getColumns().add(column);
}

View File

@ -75,6 +75,11 @@ public interface ColumnDefinition extends TypedElementDefinition<TableDefinition
*/
boolean isIdentity();
/**
* Whether this column is readonly.
*/
boolean isReadonly();

View File

@ -163,6 +163,11 @@ public class DefaultColumnDefinition
return identity;
}
@Override
public final boolean isReadonly() {
return readonly;
}

View File

@ -37,6 +37,7 @@
*/
package org.jooq.meta.xml;
import static java.lang.Boolean.TRUE;
import static org.jooq.meta.xml.XMLDatabase.unbox;
import static org.jooq.tools.StringUtils.defaultIfNull;
@ -107,6 +108,7 @@ public class XMLTableDefinition extends AbstractTableDefinition {
unbox(column.getOrdinalPosition()),
type,
column.getIdentityGeneration() != null,
TRUE.equals(column.isReadonly()),
column.getComment()
));
}

View File

@ -353,6 +353,7 @@ final class InformationSchemaExport {
ic.setColumnDefault(DSL.using(configuration).render(f.getDataType().defaultValue()));
ic.setIsNullable(f.getDataType().nullable());
ic.setOrdinalPosition(i + 1);
ic.setReadonly(f.getDataType().readonly());
result.getColumns().add(ic);
}

View File

@ -37,6 +37,8 @@
*/
package org.jooq.impl;
import static java.lang.Boolean.FALSE;
import static java.lang.Boolean.TRUE;
import static java.util.Collections.emptyList;
import static java.util.Comparator.comparing;
import static java.util.Comparator.comparingInt;
@ -199,7 +201,7 @@ final class InformationSchemaMetaImpl extends AbstractMeta {
InformationSchemaDomain<?> id = new InformationSchemaDomain<Object>(
schema,
name(d.getDomainName()),
(DataType) type(d.getDataType(), length, precision, scale, nullable),
(DataType) type(d.getDataType(), length, precision, scale, nullable, false),
checks.toArray(EMPTY_CHECK)
);
domains.add(id);
@ -272,7 +274,8 @@ final class InformationSchemaMetaImpl extends AbstractMeta {
int length = xc.getCharacterMaximumLength() == null ? 0 : xc.getCharacterMaximumLength();
int precision = xc.getNumericPrecision() == null ? 0 : xc.getNumericPrecision();
int scale = xc.getNumericScale() == null ? 0 : xc.getNumericScale();
boolean nullable = xc.isIsNullable() == null || xc.isIsNullable();
boolean nullable = !FALSE.equals(xc.isIsNullable());
boolean readonly = TRUE.equals(xc.isReadonly());
// TODO: Exception handling should be moved inside SQLDataType
Name tableName = name(xc.getTableCatalog(), xc.getTableSchema(), xc.getTableName());
@ -285,7 +288,7 @@ final class InformationSchemaMetaImpl extends AbstractMeta {
AbstractTable.createField(
name(xc.getColumnName()),
type(typeName, length, precision, scale, nullable),
type(typeName, length, precision, scale, nullable, readonly),
table,
xc.getComment()
);
@ -504,7 +507,7 @@ final class InformationSchemaMetaImpl extends AbstractMeta {
InformationSchemaSequence is = new InformationSchemaSequence(
xs.getSequenceName(),
schema,
type(typeName, length, precision, scale, nullable),
type(typeName, length, precision, scale, nullable, false),
startWith,
incrementBy,
minvalue,
@ -538,12 +541,13 @@ final class InformationSchemaMetaImpl extends AbstractMeta {
lookup.computeIfAbsent(key, k -> new ArrayList<>()).add(value);
}
private final DataType<?> type(String typeName, int length, int precision, int scale, boolean nullable) {
private final DataType<?> type(String typeName, int length, int precision, int scale, boolean nullable, boolean readonly) {
DataType<?> type = null;
try {
type = DefaultDataType.getDataType(configuration.family(), typeName);
type = type.nullable(nullable);
type = type.readonly(readonly);
if (length != 0)
type = type.length(length);

View File

@ -42,7 +42,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class Catalog implements Serializable, XMLAppendable
{
private final static long serialVersionUID = 31400L;
private final static long serialVersionUID = 31600L;
@XmlElement(name = "catalog_name")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String catalogName;

View File

@ -44,7 +44,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class CheckConstraint implements Serializable, XMLAppendable
{
private final static long serialVersionUID = 31400L;
private final static long serialVersionUID = 31600L;
@XmlElement(name = "constraint_catalog")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String constraintCatalog;

View File

@ -41,6 +41,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
* &lt;element name="is_nullable" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/&gt;
* &lt;element name="column_default" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
* &lt;element name="comment" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
* &lt;element name="readonly" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/&gt;
* &lt;/all&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
@ -59,7 +60,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class Column implements Serializable, XMLAppendable
{
private final static long serialVersionUID = 31400L;
private final static long serialVersionUID = 31600L;
@XmlElement(name = "table_catalog")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String tableCatalog;
@ -111,6 +112,7 @@ public class Column implements Serializable, XMLAppendable
protected String columnDefault;
@XmlJavaTypeAdapter(StringAdapter.class)
protected String comment;
protected Boolean readonly;
public String getTableCatalog() {
return tableCatalog;
@ -280,6 +282,30 @@ public class Column implements Serializable, XMLAppendable
this.comment = value;
}
/**
* Gets the value of the readonly property.
*
* @return
* possible object is
* {@link Boolean }
*
*/
public Boolean isReadonly() {
return readonly;
}
/**
* Sets the value of the readonly property.
*
* @param value
* allowed object is
* {@link Boolean }
*
*/
public void setReadonly(Boolean value) {
this.readonly = value;
}
public Column withTableCatalog(String value) {
setTableCatalog(value);
return this;
@ -375,6 +401,11 @@ public class Column implements Serializable, XMLAppendable
return this;
}
public Column withReadonly(Boolean value) {
setReadonly(value);
return this;
}
@Override
public final void appendTo(XMLBuilder builder) {
builder.append("table_catalog", tableCatalog);
@ -396,6 +427,7 @@ public class Column implements Serializable, XMLAppendable
builder.append("is_nullable", isNullable);
builder.append("column_default", columnDefault);
builder.append("comment", comment);
builder.append("readonly", readonly);
}
@Override
@ -588,6 +620,15 @@ public class Column implements Serializable, XMLAppendable
return false;
}
}
if (readonly == null) {
if (other.readonly!= null) {
return false;
}
} else {
if (!readonly.equals(other.readonly)) {
return false;
}
}
return true;
}
@ -614,6 +655,7 @@ public class Column implements Serializable, XMLAppendable
result = ((prime*result)+((isNullable == null)? 0 :isNullable.hashCode()));
result = ((prime*result)+((columnDefault == null)? 0 :columnDefault.hashCode()));
result = ((prime*result)+((comment == null)? 0 :comment.hashCode()));
result = ((prime*result)+((readonly == null)? 0 :readonly.hashCode()));
return result;
}

View File

@ -48,7 +48,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class Domain implements Serializable, XMLAppendable
{
private final static long serialVersionUID = 31400L;
private final static long serialVersionUID = 31600L;
@XmlElement(name = "domain_catalog")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String domainCatalog;

View File

@ -46,7 +46,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class DomainConstraint implements Serializable, XMLAppendable
{
private final static long serialVersionUID = 31400L;
private final static long serialVersionUID = 31600L;
@XmlElement(name = "constraint_catalog")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String constraintCatalog;

View File

@ -51,7 +51,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class ElementType implements Serializable, XMLAppendable
{
private final static long serialVersionUID = 31400L;
private final static long serialVersionUID = 31600L;
@XmlElement(name = "object_catalog")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String objectCatalog;

View File

@ -48,7 +48,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class Index implements Serializable, XMLAppendable
{
private final static long serialVersionUID = 31400L;
private final static long serialVersionUID = 31600L;
@XmlElement(name = "index_catalog")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String indexCatalog;

View File

@ -49,7 +49,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class IndexColumnUsage implements Serializable, XMLAppendable
{
private final static long serialVersionUID = 31400L;
private final static long serialVersionUID = 31600L;
@XmlElement(name = "index_catalog")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String indexCatalog;

View File

@ -25,23 +25,23 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;all&gt;
* &lt;element name="catalogs" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}Catalogs" minOccurs="0"/&gt;
* &lt;element name="schemata" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}Schemata" minOccurs="0"/&gt;
* &lt;element name="sequences" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}Sequences" minOccurs="0"/&gt;
* &lt;element name="tables" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}Tables" minOccurs="0"/&gt;
* &lt;element name="views" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}Views" minOccurs="0"/&gt;
* &lt;element name="columns" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}Columns" minOccurs="0"/&gt;
* &lt;element name="table_constraints" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}TableConstraints" minOccurs="0"/&gt;
* &lt;element name="key_column_usages" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}KeyColumnUsages" minOccurs="0"/&gt;
* &lt;element name="referential_constraints" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}ReferentialConstraints" minOccurs="0"/&gt;
* &lt;element name="check_constraints" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}CheckConstraints" minOccurs="0"/&gt;
* &lt;element name="domains" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}Domains" minOccurs="0"/&gt;
* &lt;element name="domain_constraints" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}DomainConstraints" minOccurs="0"/&gt;
* &lt;element name="indexes" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}Indexes" minOccurs="0"/&gt;
* &lt;element name="index_column_usages" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}IndexColumnUsages" minOccurs="0"/&gt;
* &lt;element name="routines" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}Routines" minOccurs="0"/&gt;
* &lt;element name="parameters" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}Parameters" minOccurs="0"/&gt;
* &lt;element name="element_types" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}ElementTypes" minOccurs="0"/&gt;
* &lt;element name="catalogs" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}Catalogs" minOccurs="0"/&gt;
* &lt;element name="schemata" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}Schemata" minOccurs="0"/&gt;
* &lt;element name="sequences" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}Sequences" minOccurs="0"/&gt;
* &lt;element name="tables" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}Tables" minOccurs="0"/&gt;
* &lt;element name="views" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}Views" minOccurs="0"/&gt;
* &lt;element name="columns" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}Columns" minOccurs="0"/&gt;
* &lt;element name="table_constraints" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}TableConstraints" minOccurs="0"/&gt;
* &lt;element name="key_column_usages" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}KeyColumnUsages" minOccurs="0"/&gt;
* &lt;element name="referential_constraints" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}ReferentialConstraints" minOccurs="0"/&gt;
* &lt;element name="check_constraints" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}CheckConstraints" minOccurs="0"/&gt;
* &lt;element name="domains" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}Domains" minOccurs="0"/&gt;
* &lt;element name="domain_constraints" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}DomainConstraints" minOccurs="0"/&gt;
* &lt;element name="indexes" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}Indexes" minOccurs="0"/&gt;
* &lt;element name="index_column_usages" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}IndexColumnUsages" minOccurs="0"/&gt;
* &lt;element name="routines" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}Routines" minOccurs="0"/&gt;
* &lt;element name="parameters" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}Parameters" minOccurs="0"/&gt;
* &lt;element name="element_types" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}ElementTypes" minOccurs="0"/&gt;
* &lt;/all&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
@ -61,7 +61,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class InformationSchema implements Serializable, XMLAppendable
{
private final static long serialVersionUID = 31400L;
private final static long serialVersionUID = 31600L;
@XmlElementWrapper(name = "catalogs")
@XmlElement(name = "catalog")
protected List<Catalog> catalogs;

View File

@ -48,7 +48,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class KeyColumnUsage implements Serializable, XMLAppendable
{
private final static long serialVersionUID = 31400L;
private final static long serialVersionUID = 31600L;
@XmlElement(name = "column_name", required = true)
@XmlJavaTypeAdapter(StringAdapter.class)
protected String columnName;

View File

@ -28,7 +28,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
* &lt;element name="specific_package" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
* &lt;element name="specific_name" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
* &lt;element name="ordinal_position" type="{http://www.w3.org/2001/XMLSchema}int"/&gt;
* &lt;element name="parameter_mode" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}ParameterMode"/&gt;
* &lt;element name="parameter_mode" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}ParameterMode"/&gt;
* &lt;element name="parameter_name" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
* &lt;element name="data_type" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
* &lt;element name="character_maximum_length" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/&gt;
@ -57,7 +57,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class Parameter implements Serializable, XMLAppendable
{
private final static long serialVersionUID = 31400L;
private final static long serialVersionUID = 31600L;
@XmlElement(name = "specific_catalog")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String specificCatalog;

View File

@ -46,7 +46,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class ReferentialConstraint implements Serializable, XMLAppendable
{
private final static long serialVersionUID = 31400L;
private final static long serialVersionUID = 31600L;
@XmlElement(name = "constraint_catalog")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String constraintCatalog;

View File

@ -31,7 +31,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
* &lt;element name="routine_schema" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
* &lt;element name="routine_package" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
* &lt;element name="routine_name" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
* &lt;element name="routine_type" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}RoutineType"/&gt;
* &lt;element name="routine_type" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}RoutineType"/&gt;
* &lt;element name="data_type" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
* &lt;element name="character_maximum_length" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/&gt;
* &lt;element name="numeric_precision" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/&gt;
@ -58,7 +58,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class Routine implements Serializable, XMLAppendable
{
private final static long serialVersionUID = 31400L;
private final static long serialVersionUID = 31600L;
@XmlElement(name = "specific_catalog")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String specificCatalog;

View File

@ -43,7 +43,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class Schema implements Serializable, XMLAppendable
{
private final static long serialVersionUID = 31400L;
private final static long serialVersionUID = 31600L;
@XmlElement(name = "catalog_name")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String catalogName;

View File

@ -55,7 +55,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class Sequence implements Serializable, XMLAppendable
{
private final static long serialVersionUID = 31400L;
private final static long serialVersionUID = 31600L;
@XmlElement(name = "sequence_catalog")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String sequenceCatalog;

View File

@ -26,7 +26,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
* &lt;element name="table_catalog" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
* &lt;element name="table_schema" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
* &lt;element name="table_name" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
* &lt;element name="table_type" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}TableType" minOccurs="0"/&gt;
* &lt;element name="table_type" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}TableType" minOccurs="0"/&gt;
* &lt;element name="comment" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
* &lt;/all&gt;
* &lt;/restriction&gt;
@ -46,7 +46,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class Table implements Serializable, XMLAppendable
{
private final static long serialVersionUID = 31400L;
private final static long serialVersionUID = 31600L;
@XmlElement(name = "table_catalog")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String tableCatalog;

View File

@ -26,7 +26,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
* &lt;element name="constraint_catalog" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
* &lt;element name="constraint_schema" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
* &lt;element name="constraint_name" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
* &lt;element name="constraint_type" type="{http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd}TableConstraintType"/&gt;
* &lt;element name="constraint_type" type="{http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd}TableConstraintType"/&gt;
* &lt;element name="table_catalog" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
* &lt;element name="table_schema" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
* &lt;element name="table_name" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
@ -50,7 +50,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class TableConstraint implements Serializable, XMLAppendable
{
private final static long serialVersionUID = 31400L;
private final static long serialVersionUID = 31600L;
@XmlElement(name = "constraint_catalog")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String constraintCatalog;

View File

@ -44,7 +44,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder;
public class View implements Serializable, XMLAppendable
{
private final static long serialVersionUID = 31400L;
private final static long serialVersionUID = 31600L;
@XmlElement(name = "table_catalog")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String tableCatalog;

View File

@ -1,2 +1,2 @@
@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package org.jooq.util.xml.jaxb;

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd"
targetNamespace="http://www.jooq.org/xsd/jooq-meta-3.14.0.xsd"
xmlns:tns="http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd"
targetNamespace="http://www.jooq.org/xsd/jooq-meta-3.16.0.xsd"
elementFormDefault="qualified">
<element name="information_schema">
@ -83,6 +83,7 @@
<element name="is_nullable" type="boolean" minOccurs="0" maxOccurs="1" />
<element name="column_default" type="string" minOccurs="0" maxOccurs="1" />
<element name="comment" type="string" minOccurs="0" maxOccurs="1" />
<element name="readonly" type="boolean" minOccurs="0" maxOccurs="1" />
</all>
</complexType>