This is an automated email from the ASF dual-hosted git repository. amashenkov pushed a commit to branch ignite-24979 in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit fe02ff30c8648a876e925111fe1d9fd5222962be Author: amashenkov <[email protected]> AuthorDate: Tue Apr 1 10:58:38 2025 +0300 Minor optimization for SQL type conversion. --- .../util/SafeCustomTypeInternalConversion.java | 26 +++++++++------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/SafeCustomTypeInternalConversion.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/SafeCustomTypeInternalConversion.java index a0c7e1c94f3..8685bdb5886 100644 --- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/SafeCustomTypeInternalConversion.java +++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/SafeCustomTypeInternalConversion.java @@ -17,9 +17,8 @@ package org.apache.ignite.internal.sql.engine.util; -import java.util.Map; -import java.util.Map.Entry; -import java.util.stream.Collectors; +import java.util.EnumMap; +import org.apache.ignite.internal.sql.engine.type.IgniteCustomTypeSpec; import org.apache.ignite.internal.sql.engine.type.IgniteTypeFactory; import org.apache.ignite.internal.type.NativeTypeSpec; import org.jetbrains.annotations.Nullable; @@ -32,38 +31,33 @@ final class SafeCustomTypeInternalConversion { static final SafeCustomTypeInternalConversion INSTANCE = new SafeCustomTypeInternalConversion(Commons.typeFactory()); - private final Map<NativeTypeSpec, Class<?>> internalTypes; + private final EnumMap<NativeTypeSpec, Class<?>> internalTypes = new EnumMap<>(NativeTypeSpec.class); private SafeCustomTypeInternalConversion(IgniteTypeFactory typeFactory) { // IgniteCustomType: We can automatically compute val -> internal type mapping // by using type specs from the type factory. var customTypes = typeFactory.getCustomTypeSpecs(); - internalTypes = customTypes.values() - .stream() - .map(t -> Map.entry(t.nativeType().spec(), t.storageType())) - .collect(Collectors.toMap(Entry::getKey, Entry::getValue)); + for (IgniteCustomTypeSpec t : customTypes.values()) { + internalTypes.put(t.nativeType().spec(), t.storageType()); + } } @Nullable Object tryConvertToInternal(Object val, NativeTypeSpec storageType) { Class<?> internalType = internalTypes.get(storageType); - if (internalType == null) { - return null; - } - assert internalType.isInstance(val) : storageTypeMismatch(val, internalType); + assert internalType == null || internalType.isInstance(val) : storageTypeMismatch(val, internalType); + return val; } @Nullable Object tryConvertFromInternal(Object val, NativeTypeSpec storageType) { Class<?> internalType = internalTypes.get(storageType); - if (internalType == null) { - return null; - } - assert internalType.isInstance(val) : storageTypeMismatch(val, internalType); + assert internalType == null || internalType.isInstance(val) : storageTypeMismatch(val, internalType); + return val; }
