[#5709] IDENTITY implies NOT NULL and not defaulted
This commit is contained in:
parent
544b676e76
commit
78d23a3111
@ -192,6 +192,8 @@ public interface DataType<T> extends Serializable {
|
||||
|
||||
/**
|
||||
* Return a new data type like this, with a new nullability.
|
||||
* <p>
|
||||
* [#5709] A <code>nullable</code> column cannot have an {@link #identity()}.
|
||||
*
|
||||
* @param nullable The new nullability
|
||||
* @return The new data type
|
||||
@ -207,6 +209,9 @@ public interface DataType<T> extends Serializable {
|
||||
|
||||
/**
|
||||
* Return a new data type like this, with a new identity flag.
|
||||
* <p>
|
||||
* [#5709] The IDENTITY flag imposes a NOT NULL constraint, and removes all
|
||||
* DEFAULT values.
|
||||
*
|
||||
* @param identity The new identity flag
|
||||
* @return The new data type
|
||||
@ -223,6 +228,8 @@ public interface DataType<T> extends Serializable {
|
||||
/**
|
||||
* Specify an expression to be applied as the <code>DEFAULT</code> value for
|
||||
* this data type.
|
||||
* <p>
|
||||
* [#5709] A <code>defaulted</code> column cannot have an {@link #identity()}.
|
||||
*
|
||||
* @see #defaultValue(Field)
|
||||
*/
|
||||
|
||||
@ -363,7 +363,7 @@ public class DefaultDataType<T> implements DataType<T> {
|
||||
|
||||
@Override
|
||||
public final DataType<T> nullable(boolean n) {
|
||||
return new DefaultDataType<T>(this, precision, scale, length, n, identity, defaultValue);
|
||||
return new DefaultDataType<T>(this, precision, scale, length, n, n ? false : identity, defaultValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -373,7 +373,7 @@ public class DefaultDataType<T> implements DataType<T> {
|
||||
|
||||
@Override
|
||||
public final DataType<T> identity(boolean i) {
|
||||
return new DefaultDataType<T>(this, precision, scale, length, nullable, i, defaultValue);
|
||||
return new DefaultDataType<T>(this, precision, scale, length, i ? false : nullable, i, i ? null : defaultValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -388,7 +388,7 @@ public class DefaultDataType<T> implements DataType<T> {
|
||||
|
||||
@Override
|
||||
public final DataType<T> defaultValue(Field<T> d) {
|
||||
return new DefaultDataType<T>(this, precision, scale, length, nullable, identity, d);
|
||||
return new DefaultDataType<T>(this, precision, scale, length, nullable, d != null ? false : identity, d);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Loading…
Reference in New Issue
Block a user