[jOOQ/jOOQ#11083] DataType should cache null_() and notNull() variants
This commit is contained in:
parent
44c026475d
commit
181d838797
@ -84,7 +84,7 @@ abstract class AbstractDataTypeX<T> extends AbstractDataType<T> {
|
||||
);
|
||||
|
||||
@Override
|
||||
public final DataType<T> nullability(Nullability n) {
|
||||
public /* non-final */ DataType<T> nullability(Nullability n) {
|
||||
return construct(
|
||||
precision0(),
|
||||
scale0(),
|
||||
|
||||
@ -37,7 +37,11 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Nullability.NOT_NULL;
|
||||
import static org.jooq.Nullability.NULL;
|
||||
|
||||
import org.jooq.DataType;
|
||||
import org.jooq.Nullability;
|
||||
import org.jooq.SQLDialect;
|
||||
import org.jooq.util.postgres.PostgresDataType;
|
||||
|
||||
@ -73,4 +77,24 @@ public class BuiltInDataType<T> extends DefaultDataType<T> {
|
||||
public BuiltInDataType(SQLDialect dialect, DataType<T> sqlDataType, String typeName, String castTypeName) {
|
||||
super(dialect, sqlDataType, typeName, castTypeName);
|
||||
}
|
||||
|
||||
// [#11083] Nullability caches of built-in data types
|
||||
|
||||
final DataType<T> cachedNull;
|
||||
final DataType<T> cachedNotNull;
|
||||
|
||||
{
|
||||
cachedNull = super.nullability(NULL);
|
||||
cachedNotNull = super.nullability(NOT_NULL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final DataType<T> nullability(Nullability n) {
|
||||
if (n == NULL)
|
||||
return cachedNull;
|
||||
else if (n == NOT_NULL)
|
||||
return cachedNotNull;
|
||||
else
|
||||
return super.nullability(n);
|
||||
}
|
||||
}
|
||||
|
||||
@ -66,6 +66,7 @@ import java.time.Year;
|
||||
import java.util.Arrays;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import org.jooq.Context;
|
||||
import org.jooq.DataType;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user