[jOOQ/jOOQ#15546] Add Database.getComments(): Map<Definition, String>
Added API and implementations for: - Db2 - Firebird - H2 - HSQLDB - Oracle More will follow
This commit is contained in:
parent
9f588ae05f
commit
c5b498817b
@ -64,6 +64,7 @@ import static org.jooq.tools.StringUtils.defaultIfBlank;
|
||||
import static org.jooq.tools.StringUtils.defaultIfEmpty;
|
||||
import static org.jooq.tools.StringUtils.defaultIfNull;
|
||||
import static org.jooq.tools.StringUtils.isBlank;
|
||||
import static org.jooq.tools.StringUtils.isEmpty;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@ -274,6 +275,7 @@ public abstract class AbstractDatabase implements Database {
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
private Map<Definition, String> sources;
|
||||
private Map<Definition, String> comments;
|
||||
private List<String> inputCatalogs;
|
||||
private List<String> inputSchemata;
|
||||
private Map<String, List<String>> inputSchemataPerCatalog;
|
||||
@ -712,7 +714,20 @@ public abstract class AbstractDatabase implements Database {
|
||||
sources = new LinkedHashMap<>();
|
||||
onError(ERROR, "Could not load sources", () -> {
|
||||
sources = getSources0();
|
||||
log.info("Sequences fetched", fetchedSize(sources.values(), sources.values()));
|
||||
log.info("Sources fetched", fetchedSize(sources.values(), sources.values()));
|
||||
});
|
||||
}
|
||||
|
||||
return sources;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Map<Definition, String> getComments() {
|
||||
if (comments == null) {
|
||||
comments = new LinkedHashMap<>();
|
||||
onError(ERROR, "Could not load comments", () -> {
|
||||
comments = getComments0();
|
||||
log.info("Comments fetched", fetchedSize(comments.values(), comments.values()));
|
||||
});
|
||||
}
|
||||
|
||||
@ -3952,6 +3967,36 @@ public abstract class AbstractDatabase implements Database {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve ALL comments from the database.
|
||||
*/
|
||||
protected Map<Definition, String> getComments0() throws SQLException {
|
||||
Map<Definition, String> result = new LinkedHashMap<>();
|
||||
|
||||
if (this instanceof ResultQueryDatabase d) {
|
||||
Optional
|
||||
.ofNullable(d.comments(getInputSchemata()))
|
||||
.ifPresent(q -> q.forEach(r -> {
|
||||
SchemaDefinition schema = getSchema(r.value2());
|
||||
|
||||
if (schema != null) {
|
||||
String name = r.value3();
|
||||
Definition o = getTable(schema, name);
|
||||
|
||||
if (o != null) {
|
||||
if (!isEmpty(r.value4()))
|
||||
if (o instanceof TableDefinition t)
|
||||
o = t.getColumn(r.value4());
|
||||
|
||||
result.put(o, r.value5());
|
||||
}
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve ALL indexes from the database
|
||||
*/
|
||||
|
||||
@ -161,6 +161,11 @@ public abstract class AbstractDefinition implements Definition {
|
||||
|
||||
@Override
|
||||
public final String getComment() {
|
||||
String c = getComment0();
|
||||
return c != null ? c : getDatabase().getComments().get(this);
|
||||
}
|
||||
|
||||
private final String getComment0() {
|
||||
|
||||
|
||||
|
||||
|
||||
@ -84,6 +84,11 @@ public interface Database extends AutoCloseable {
|
||||
*/
|
||||
Map<Definition, String> getSources();
|
||||
|
||||
/**
|
||||
* Get the comments for all objects that offer comments.
|
||||
*/
|
||||
Map<Definition, String> getComments();
|
||||
|
||||
/**
|
||||
* The catalogs generated from this database.
|
||||
*/
|
||||
|
||||
@ -43,11 +43,12 @@ import java.util.List;
|
||||
import org.jooq.Meta;
|
||||
import org.jooq.Record12;
|
||||
import org.jooq.Record4;
|
||||
import org.jooq.Record5;
|
||||
import org.jooq.Record6;
|
||||
import org.jooq.ResultQuery;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.ApiStatus.Internal;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* An interface for all {@link AbstractDatabase} implementations that can
|
||||
@ -142,4 +143,22 @@ public interface ResultQueryDatabase extends Database {
|
||||
@Internal
|
||||
@Nullable
|
||||
ResultQuery<Record4<String, String, String, String>> sources(List<String> schemas);
|
||||
|
||||
/**
|
||||
* A query that produces comments for a set of input schemas.
|
||||
* <p>
|
||||
* The resulting columns are:
|
||||
* <ol>
|
||||
* <li>Catalog name</li>
|
||||
* <li>Schema name</li>
|
||||
* <li>Object name (e.g. table, view, function, package)</li>
|
||||
* <li>Object sub name (e.g. column, package routine)</li>
|
||||
* <li>Comment</li>
|
||||
* </ol>
|
||||
*
|
||||
* @return The query or <code>null</code> if this implementation doesn't support the query.
|
||||
*/
|
||||
@Internal
|
||||
@Nullable
|
||||
ResultQuery<Record5<String, String, String, String, String>> comments(List<String> schemas);
|
||||
}
|
||||
|
||||
@ -49,20 +49,19 @@ import static org.jooq.impl.DSL.inline;
|
||||
import static org.jooq.impl.DSL.noCondition;
|
||||
import static org.jooq.impl.DSL.not;
|
||||
import static org.jooq.impl.DSL.nullif;
|
||||
import static org.jooq.impl.DSL.one;
|
||||
import static org.jooq.impl.DSL.when;
|
||||
import static org.jooq.impl.SQLDataType.BIGINT;
|
||||
import static org.jooq.impl.SQLDataType.BOOLEAN;
|
||||
import static org.jooq.impl.SQLDataType.INTEGER;
|
||||
import static org.jooq.impl.SQLDataType.NUMERIC;
|
||||
import static org.jooq.impl.SQLDataType.VARCHAR;
|
||||
import static org.jooq.meta.derby.sys.Tables.*;
|
||||
import static org.jooq.meta.derby.sys.Tables.SYSCHECKS;
|
||||
import static org.jooq.meta.derby.sys.Tables.SYSCONGLOMERATES;
|
||||
import static org.jooq.meta.derby.sys.Tables.SYSCONSTRAINTS;
|
||||
import static org.jooq.meta.derby.sys.Tables.SYSKEYS;
|
||||
import static org.jooq.meta.derby.sys.Tables.SYSSCHEMAS;
|
||||
import static org.jooq.meta.derby.sys.Tables.SYSSEQUENCES;
|
||||
import static org.jooq.meta.derby.sys.Tables.SYSTABLES;
|
||||
import static org.jooq.meta.derby.sys.Tables.SYSTRIGGERS;
|
||||
import static org.jooq.meta.derby.sys.Tables.SYSVIEWS;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@ -84,12 +83,11 @@ import org.jooq.Result;
|
||||
import org.jooq.ResultQuery;
|
||||
import org.jooq.SQLDialect;
|
||||
import org.jooq.SortOrder;
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
import org.jooq.TableOptions.TableType;
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
import org.jooq.impl.DSL;
|
||||
import org.jooq.impl.SQLDataType;
|
||||
import org.jooq.meta.AbstractDatabase;
|
||||
import org.jooq.meta.AbstractIndexDefinition;
|
||||
import org.jooq.meta.ArrayDefinition;
|
||||
@ -380,6 +378,11 @@ public class DerbyDatabase extends AbstractDatabase implements ResultQueryDataba
|
||||
SYSTABLES.TABLENAME);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultQuery<Record5<String, String, String, String, String>> comments(List<String> schemas) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultQuery<Record12<String, String, String, String, Integer, Integer, Long, Long, BigDecimal, BigDecimal, Boolean, Long>> sequences(List<String> schemas) {
|
||||
return create().select(
|
||||
|
||||
@ -64,6 +64,7 @@ import org.jooq.DSLContext;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record12;
|
||||
import org.jooq.Record4;
|
||||
import org.jooq.Record5;
|
||||
import org.jooq.Record6;
|
||||
import org.jooq.ResultQuery;
|
||||
import org.jooq.SQLDialect;
|
||||
@ -213,6 +214,11 @@ public class DuckDBDatabase extends AbstractDatabase implements ResultQueryDatab
|
||||
.where(DUCKDB_VIEWS.SCHEMA_NAME.in(schemas));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultQuery<Record5<String, String, String, String, String>> comments(List<String> schemas) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultQuery<Record12<String, String, String, String, Integer, Integer, Long, Long, BigDecimal, BigDecimal, Boolean, Long>> sequences(List<String> schemas) {
|
||||
return create()
|
||||
|
||||
@ -94,11 +94,13 @@ import org.jooq.Field;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record12;
|
||||
import org.jooq.Record4;
|
||||
import org.jooq.Record5;
|
||||
import org.jooq.Record6;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.ResultQuery;
|
||||
import org.jooq.SQLDialect;
|
||||
import org.jooq.SortOrder;
|
||||
import org.jooq.Table;
|
||||
import org.jooq.TableOptions.TableType;
|
||||
// ...
|
||||
// ...
|
||||
@ -407,6 +409,39 @@ public class FirebirdDatabase extends AbstractDatabase implements ResultQueryDat
|
||||
.orderBy(trim(RDB$RELATIONS.RDB$RELATION_NAME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultQuery<Record5<String, String, String, String, String>> comments(List<String> schemas) {
|
||||
Table<?> c =
|
||||
select(
|
||||
inline(null, VARCHAR).as("catalog"),
|
||||
inline(null, VARCHAR).as("schema"),
|
||||
trim(RDB$RELATIONS.RDB$RELATION_NAME).as(RDB$RELATIONS.RDB$RELATION_NAME),
|
||||
inline(null, VARCHAR).as(RDB$RELATION_FIELDS.RDB$FIELD_NAME),
|
||||
trim(RDB$RELATIONS.RDB$DESCRIPTION).as(RDB$RELATIONS.RDB$DESCRIPTION))
|
||||
.from(RDB$RELATIONS)
|
||||
.where(RDB$RELATIONS.RDB$DESCRIPTION.isNotNull())
|
||||
.unionAll(
|
||||
select(
|
||||
inline(null, VARCHAR),
|
||||
inline(null, VARCHAR),
|
||||
RDB$RELATION_FIELDS.RDB$RELATION_NAME,
|
||||
RDB$RELATION_FIELDS.RDB$FIELD_NAME,
|
||||
RDB$RELATION_FIELDS.RDB$DESCRIPTION)
|
||||
.from(RDB$RELATION_FIELDS)
|
||||
.where(RDB$RELATION_FIELDS.RDB$DESCRIPTION.isNotNull()))
|
||||
.asTable("c");
|
||||
|
||||
return create()
|
||||
.select(
|
||||
c.field("catalog", VARCHAR),
|
||||
c.field("schema", VARCHAR),
|
||||
c.field(RDB$RELATIONS.RDB$RELATION_NAME),
|
||||
c.field(RDB$RELATION_FIELDS.RDB$FIELD_NAME),
|
||||
c.field(RDB$RELATIONS.RDB$DESCRIPTION))
|
||||
.from(c)
|
||||
.orderBy(1, 2, 3);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultQuery<Record12<String, String, String, String, Integer, Integer, Long, Long, BigDecimal, BigDecimal, Boolean, Long>> sequences(List<String> schemas) {
|
||||
return create()
|
||||
|
||||
@ -96,6 +96,7 @@ import org.jooq.Field;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record12;
|
||||
import org.jooq.Record4;
|
||||
import org.jooq.Record5;
|
||||
import org.jooq.Record6;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.ResultQuery;
|
||||
@ -652,6 +653,40 @@ public class H2Database extends AbstractDatabase implements ResultQueryDatabase
|
||||
;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultQuery<Record5<String, String, String, String, String>> comments(List<String> schemas) {
|
||||
Table<?> c =
|
||||
select(
|
||||
TABLES.TABLE_CATALOG,
|
||||
TABLES.TABLE_SCHEMA,
|
||||
TABLES.TABLE_NAME,
|
||||
inline(null, VARCHAR).as(COLUMNS.COLUMN_NAME),
|
||||
TABLES.REMARKS)
|
||||
.from(TABLES)
|
||||
.where(TABLES.REMARKS.isNotNull())
|
||||
.unionAll(
|
||||
select(
|
||||
COLUMNS.TABLE_CATALOG,
|
||||
COLUMNS.TABLE_SCHEMA,
|
||||
COLUMNS.TABLE_NAME,
|
||||
COLUMNS.COLUMN_NAME,
|
||||
COLUMNS.REMARKS)
|
||||
.from(COLUMNS)
|
||||
.where(COLUMNS.REMARKS.isNotNull()))
|
||||
.asTable("c");
|
||||
|
||||
return create()
|
||||
.select(
|
||||
c.field(TABLES.TABLE_CATALOG),
|
||||
c.field(TABLES.TABLE_SCHEMA),
|
||||
c.field(TABLES.TABLE_NAME),
|
||||
c.field(COLUMNS.COLUMN_NAME),
|
||||
c.field(TABLES.REMARKS))
|
||||
.from(c)
|
||||
.where(c.field(TABLES.TABLE_SCHEMA).in(schemas))
|
||||
.orderBy(1, 2, 3, 4);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultQuery<Record12<String, String, String, String, Integer, Integer, Long, Long, BigDecimal, BigDecimal, Boolean, Long>> sequences(List<String> schemas) {
|
||||
Field<Long> minValue = is2_0_202()
|
||||
|
||||
@ -62,39 +62,39 @@ import static org.jooq.meta.hsqldb.information_schema.Tables.REFERENTIAL_CONSTRA
|
||||
import static org.jooq.meta.hsqldb.information_schema.Tables.ROUTINES;
|
||||
import static org.jooq.meta.hsqldb.information_schema.Tables.SCHEMATA;
|
||||
import static org.jooq.meta.hsqldb.information_schema.Tables.SEQUENCES;
|
||||
import static org.jooq.meta.hsqldb.information_schema.Tables.SYSTEM_COLUMNS;
|
||||
import static org.jooq.meta.hsqldb.information_schema.Tables.SYSTEM_INDEXINFO;
|
||||
import static org.jooq.meta.hsqldb.information_schema.Tables.SYSTEM_TABLES;
|
||||
import static org.jooq.meta.hsqldb.information_schema.Tables.TABLE_CONSTRAINTS;
|
||||
import static org.jooq.meta.hsqldb.information_schema.Tables.VIEWS;
|
||||
import static org.jooq.meta.hsqldb.information_schema.Tables.TRIGGERS;
|
||||
import static org.jooq.meta.hsqldb.information_schema.Tables.VIEWS;
|
||||
import static org.jooq.tools.StringUtils.defaultIfNull;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.EnumSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.jooq.DSLContext;
|
||||
import org.jooq.Field;
|
||||
import org.jooq.Name;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record12;
|
||||
import org.jooq.Record4;
|
||||
import org.jooq.Record5;
|
||||
import org.jooq.Record6;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.ResultQuery;
|
||||
import org.jooq.SQLDialect;
|
||||
import org.jooq.SortOrder;
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
import org.jooq.Table;
|
||||
import org.jooq.TableOptions.TableType;
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
import org.jooq.impl.DSL;
|
||||
import org.jooq.impl.SQLDataType;
|
||||
import org.jooq.meta.AbstractDatabase;
|
||||
import org.jooq.meta.AbstractIndexDefinition;
|
||||
import org.jooq.meta.ArrayDefinition;
|
||||
@ -419,6 +419,45 @@ public class HSQLDBDatabase extends AbstractDatabase implements ResultQueryDatab
|
||||
;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultQuery<Record5<String, String, String, String, String>> comments(List<String> schemas) {
|
||||
Table<?> c =
|
||||
select(
|
||||
SYSTEM_TABLES.TABLE_CAT,
|
||||
SYSTEM_TABLES.TABLE_SCHEM,
|
||||
SYSTEM_TABLES.TABLE_NAME,
|
||||
inline(null, VARCHAR).as(COLUMNS.COLUMN_NAME),
|
||||
SYSTEM_TABLES.REMARKS)
|
||||
.from(SYSTEM_TABLES)
|
||||
.where(SYSTEM_TABLES.REMARKS.isNotNull())
|
||||
.unionAll(
|
||||
select(
|
||||
COLUMNS.TABLE_CATALOG,
|
||||
COLUMNS.TABLE_SCHEMA,
|
||||
COLUMNS.TABLE_NAME,
|
||||
COLUMNS.COLUMN_NAME,
|
||||
SYSTEM_COLUMNS.REMARKS)
|
||||
.from(COLUMNS)
|
||||
.join(SYSTEM_COLUMNS)
|
||||
.on(COLUMNS.TABLE_CATALOG.eq(SYSTEM_COLUMNS.TABLE_CAT))
|
||||
.and(COLUMNS.TABLE_SCHEMA.eq(SYSTEM_COLUMNS.TABLE_SCHEM))
|
||||
.and(COLUMNS.TABLE_NAME.eq(SYSTEM_COLUMNS.TABLE_NAME))
|
||||
.and(COLUMNS.COLUMN_NAME.eq(SYSTEM_COLUMNS.COLUMN_NAME))
|
||||
.where(SYSTEM_COLUMNS.REMARKS.isNotNull()))
|
||||
.asTable("c");
|
||||
|
||||
return create()
|
||||
.select(
|
||||
c.field(SYSTEM_TABLES.TABLE_CAT),
|
||||
c.field(SYSTEM_TABLES.TABLE_SCHEM),
|
||||
c.field(SYSTEM_TABLES.TABLE_NAME),
|
||||
c.field(COLUMNS.COLUMN_NAME),
|
||||
c.field(SYSTEM_TABLES.REMARKS))
|
||||
.from(c)
|
||||
.where(c.field(SYSTEM_TABLES.TABLE_SCHEM).in(schemas))
|
||||
.orderBy(1, 2, 3, 4);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultQuery<Record12<String, String, String, String, Integer, Integer, Long, Long, BigDecimal, BigDecimal, Boolean, Long>> sequences(List<String> schemas) {
|
||||
return create()
|
||||
|
||||
@ -84,6 +84,7 @@ import org.jooq.Field;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record12;
|
||||
import org.jooq.Record4;
|
||||
import org.jooq.Record5;
|
||||
import org.jooq.Record6;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.ResultQuery;
|
||||
@ -96,7 +97,6 @@ import org.jooq.TableOptions.TableType;
|
||||
// ...
|
||||
// ...
|
||||
import org.jooq.impl.DSL;
|
||||
import org.jooq.impl.SQLDataType;
|
||||
import org.jooq.meta.AbstractDatabase;
|
||||
import org.jooq.meta.AbstractIndexDefinition;
|
||||
import org.jooq.meta.ArrayDefinition;
|
||||
@ -453,6 +453,11 @@ public class MySQLDatabase extends AbstractDatabase implements ResultQueryDataba
|
||||
;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultQuery<Record5<String, String, String, String, String>> comments(List<String> schemas) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultQuery<Record12<String, String, String, String, Integer, Integer, Long, Long, BigDecimal, BigDecimal, Boolean, Long>> sequences(List<String> schemas) {
|
||||
return null;
|
||||
|
||||
@ -676,6 +676,11 @@ public class PostgresDatabase extends AbstractDatabase implements ResultQueryDat
|
||||
;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultQuery<Record5<String, String, String, String, String>> comments(List<String> schemas) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultQuery<Record12<String, String, String, String, Integer, Integer, Long, Long, BigDecimal, BigDecimal, Boolean, Long>> sequences(List<String> schemas) {
|
||||
CommonTableExpression<Record1<String>> s = name("schemas").fields("schema").as(selectFrom(values(schemas.stream().collect(toRowArray(DSL::val)))));
|
||||
|
||||
@ -74,6 +74,7 @@ import org.jooq.Record;
|
||||
import org.jooq.Record1;
|
||||
import org.jooq.Record12;
|
||||
import org.jooq.Record4;
|
||||
import org.jooq.Record5;
|
||||
import org.jooq.Record6;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.ResultQuery;
|
||||
@ -391,6 +392,11 @@ public class SQLiteDatabase extends AbstractDatabase implements ResultQueryDatab
|
||||
.orderBy(SQLiteMaster.NAME);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultQuery<Record5<String, String, String, String, String>> comments(List<String> schemas) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultQuery<Record12<String, String, String, String, Integer, Integer, Long, Long, BigDecimal, BigDecimal, Boolean, Long>> sequences(List<String> schemas) {
|
||||
return null;
|
||||
|
||||
@ -54,6 +54,7 @@ import org.jooq.DSLContext;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record12;
|
||||
import org.jooq.Record4;
|
||||
import org.jooq.Record5;
|
||||
import org.jooq.Record6;
|
||||
import org.jooq.ResultQuery;
|
||||
import org.jooq.SQLDialect;
|
||||
@ -74,9 +75,6 @@ import org.jooq.meta.TableDefinition;
|
||||
// ...
|
||||
import org.jooq.meta.UDTDefinition;
|
||||
import org.jooq.meta.XMLSchemaCollectionDefinition;
|
||||
import org.jooq.meta.hsqldb.HSQLDBDatabase;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* The Trino database
|
||||
@ -166,6 +164,11 @@ public class TrinoDatabase extends AbstractDatabase implements ResultQueryDataba
|
||||
VIEWS.TABLE_NAME);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultQuery<Record5<String, String, String, String, String>> comments(List<String> schemas) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<DomainDefinition> getDomains0() throws SQLException {
|
||||
return new ArrayList<>();
|
||||
|
||||
@ -12,6 +12,7 @@ final class MetaSQL {
|
||||
private static final EnumMap<SQLDialect, String> M_SEQUENCES = new EnumMap<>(SQLDialect.class);
|
||||
private static final EnumMap<SQLDialect, String> M_SEQUENCES_INCLUDING_SYSTEM_SEQUENCES = new EnumMap<>(SQLDialect.class);
|
||||
private static final EnumMap<SQLDialect, String> M_SOURCES = new EnumMap<>(SQLDialect.class);
|
||||
private static final EnumMap<SQLDialect, String> M_COMMENTS = new EnumMap<>(SQLDialect.class);
|
||||
|
||||
static final String M_UNIQUE_KEYS(SQLDialect dialect) {
|
||||
String result = M_UNIQUE_KEYS.get(dialect);
|
||||
@ -33,6 +34,11 @@ final class MetaSQL {
|
||||
return result != null ? result : M_SOURCES.get(dialect.family());
|
||||
}
|
||||
|
||||
static final String M_COMMENTS(SQLDialect dialect) {
|
||||
String result = M_COMMENTS.get(dialect);
|
||||
return result != null ? result : M_COMMENTS.get(dialect.family());
|
||||
}
|
||||
|
||||
static {
|
||||
|
||||
M_UNIQUE_KEYS.put(DUCKDB, "select duckdb_constraints.database_name, duckdb_constraints.schema_name, duckdb_constraints.table_name, ((((((duckdb_constraints.database_name || '__') || duckdb_constraints.schema_name) || '__') || duckdb_constraints.table_name) || '__') || duckdb_constraints.constraint_text) constraint_text, unnest(duckdb_constraints.constraint_column_names) constraint_column_names, unnest(duckdb_constraints.constraint_column_indexes) constraint_column_indexes from duckdb_constraints() where (duckdb_constraints.constraint_type = 'UNIQUE' and duckdb_constraints.schema_name in (cast(? as varchar)))");
|
||||
@ -282,6 +288,32 @@ final class MetaSQL {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
M_COMMENTS.put(FIREBIRD, "select c.catalog, c.schema, c.RDB$RELATION_NAME, c.RDB$FIELD_NAME, c.RDB$DESCRIPTION from (select null catalog, null schema, trim(RDB$RELATIONS.RDB$RELATION_NAME) RDB$RELATION_NAME, null RDB$FIELD_NAME, trim(RDB$RELATIONS.RDB$DESCRIPTION) RDB$DESCRIPTION from RDB$RELATIONS where RDB$RELATIONS.RDB$DESCRIPTION is not null union all select null, null, RDB$RELATION_FIELDS.RDB$RELATION_NAME, RDB$RELATION_FIELDS.RDB$FIELD_NAME, RDB$RELATION_FIELDS.RDB$DESCRIPTION from RDB$RELATION_FIELDS where RDB$RELATION_FIELDS.RDB$DESCRIPTION is not null) c order by 1, 2, 3");
|
||||
M_COMMENTS.put(H2, "select c.TABLE_CATALOG, c.TABLE_SCHEMA, c.TABLE_NAME, c.COLUMN_NAME, c.REMARKS from (select INFORMATION_SCHEMA.TABLES.TABLE_CATALOG, INFORMATION_SCHEMA.TABLES.TABLE_SCHEMA, INFORMATION_SCHEMA.TABLES.TABLE_NAME, null COLUMN_NAME, INFORMATION_SCHEMA.TABLES.REMARKS from INFORMATION_SCHEMA.TABLES where INFORMATION_SCHEMA.TABLES.REMARKS is not null union all select INFORMATION_SCHEMA.COLUMNS.TABLE_CATALOG, INFORMATION_SCHEMA.COLUMNS.TABLE_SCHEMA, INFORMATION_SCHEMA.COLUMNS.TABLE_NAME, INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME, INFORMATION_SCHEMA.COLUMNS.REMARKS from INFORMATION_SCHEMA.COLUMNS where INFORMATION_SCHEMA.COLUMNS.REMARKS is not null) c where c.TABLE_SCHEMA in (cast(? as varchar)) order by 1, 2, 3, 4");
|
||||
M_COMMENTS.put(HSQLDB, "select c.TABLE_CAT, c.TABLE_SCHEM, c.TABLE_NAME, c.COLUMN_NAME, c.REMARKS from (select INFORMATION_SCHEMA.SYSTEM_TABLES.TABLE_CAT, INFORMATION_SCHEMA.SYSTEM_TABLES.TABLE_SCHEM, INFORMATION_SCHEMA.SYSTEM_TABLES.TABLE_NAME, null as COLUMN_NAME, INFORMATION_SCHEMA.SYSTEM_TABLES.REMARKS from INFORMATION_SCHEMA.SYSTEM_TABLES where INFORMATION_SCHEMA.SYSTEM_TABLES.REMARKS is not null union all select INFORMATION_SCHEMA.COLUMNS.TABLE_CATALOG, INFORMATION_SCHEMA.COLUMNS.TABLE_SCHEMA, INFORMATION_SCHEMA.COLUMNS.TABLE_NAME, INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME, INFORMATION_SCHEMA.SYSTEM_COLUMNS.REMARKS from INFORMATION_SCHEMA.COLUMNS join INFORMATION_SCHEMA.SYSTEM_COLUMNS on (INFORMATION_SCHEMA.COLUMNS.TABLE_CATALOG = INFORMATION_SCHEMA.SYSTEM_COLUMNS.TABLE_CAT and INFORMATION_SCHEMA.COLUMNS.TABLE_SCHEMA = INFORMATION_SCHEMA.SYSTEM_COLUMNS.TABLE_SCHEM and INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = INFORMATION_SCHEMA.SYSTEM_COLUMNS.TABLE_NAME and INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME = INFORMATION_SCHEMA.SYSTEM_COLUMNS.COLUMN_NAME) where INFORMATION_SCHEMA.SYSTEM_COLUMNS.REMARKS is not null) as c where c.TABLE_SCHEM in (cast(? as varchar(128))) order by 1, 2, 3, 4");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user