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;
     }
 

Reply via email to