[jOOQ/jOOQ#6492] Support computed columns

- DEFAULT and GENERATED ALWAYS AS are mutually exclusive
- Support also COCKROACHDB, DB2, DERBY, FIREBIRD, ORACLE12C
This commit is contained in:
Lukas Eder 2021-11-25 17:17:37 +01:00
parent aa43d13c21
commit 96adaf0693
5 changed files with 14 additions and 6 deletions

View File

@ -58,6 +58,7 @@ import static org.jooq.SQLDialect.MARIADB;
// ...
import static org.jooq.SQLDialect.MYSQL;
// ...
// ...
import static org.jooq.SQLDialect.POSTGRES;
// ...
// ...
@ -458,7 +459,7 @@ public interface DataType<T> extends Named {
* This feature is implemented in commercial distributions only.
*/
@NotNull
@Support({ POSTGRES })
@Support({ DERBY, FIREBIRD, H2, POSTGRES })
DataType<T> generatedAlwaysAs(T generatedAlwaysAsValue);
/**
@ -469,7 +470,7 @@ public interface DataType<T> extends Named {
* This feature is implemented in commercial distributions only.
*/
@NotNull
@Support({ POSTGRES })
@Support({ DERBY, FIREBIRD, H2, POSTGRES })
DataType<T> generatedAlwaysAs(Field<T> generatedAlwaysAsValue);
/**

View File

@ -111,12 +111,12 @@ abstract class AbstractDataTypeX<T> extends AbstractDataType<T> {
scale0(),
length0(),
nullability(),
readonly(),
g != null ? true : readonly(),
g,
collation(),
characterSet(),
identity(),
defaultValue()
g != null ? null : defaultValue()
);
}
@ -176,7 +176,7 @@ abstract class AbstractDataTypeX<T> extends AbstractDataType<T> {
length0(),
nullability(),
readonly(),
generatedAlwaysAs(),
d != null ? null : generatedAlwaysAs(),
collation(),
characterSet(),
identity(),

View File

@ -160,7 +160,7 @@ implements
private static final Set<SQLDialect> NO_SUPPORT_WITH_DATA = SQLDialect.supportedBy(H2, MARIADB, MYSQL, SQLITE);
private static final Set<SQLDialect> NO_SUPPORT_CTAS_COLUMN_NAMES = SQLDialect.supportedBy(H2);
private static final Set<SQLDialect> EMULATE_INDEXES_IN_BLOCK = SQLDialect.supportedBy(FIREBIRD, POSTGRES, YUGABYTE);
private static final Set<SQLDialect> EMULATE_SOME_ENUM_TYPES_AS_CHECK = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, HSQLDB, POSTGRES, SQLITE);
private static final Set<SQLDialect> EMULATE_SOME_ENUM_TYPES_AS_CHECK = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, HSQLDB, POSTGRES, SQLITE, YUGABYTE);
private static final Set<SQLDialect> EMULATE_STORED_ENUM_TYPES_AS_CHECK = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, HSQLDB, SQLITE);
private static final Set<SQLDialect> REQUIRES_WITH_DATA = SQLDialect.supportedBy(HSQLDB);
private static final Set<SQLDialect> WRAP_SELECT_IN_PARENS = SQLDialect.supportedBy(HSQLDB);

View File

@ -381,6 +381,7 @@ final class Keywords {
static final Keyword K_START_WITH = keyword("start with");
static final Keyword K_STATEMENT = keyword("statement");
static final Keyword K_STEP = keyword("step");
static final Keyword K_STORED = keyword("stored");
static final Keyword K_STORING = keyword("storing");
static final Keyword K_STRUCT = keyword("struct");
static final Keyword K_SWITCH = keyword("switch");

View File

@ -164,6 +164,7 @@ import static org.jooq.impl.Keywords.K_SERIAL4;
import static org.jooq.impl.Keywords.K_SERIAL8;
import static org.jooq.impl.Keywords.K_SQLSTATE;
import static org.jooq.impl.Keywords.K_START_WITH;
import static org.jooq.impl.Keywords.K_STORED;
import static org.jooq.impl.Keywords.K_THEN;
import static org.jooq.impl.Keywords.K_THROW;
import static org.jooq.impl.Keywords.K_WHEN;
@ -5143,6 +5144,11 @@ final class Tools {
}
private static final Set<SQLDialect> REQUIRE_IDENTITY_AFTER_NULL = SQLDialect.supportedBy(H2, MARIADB, MYSQL);