apilloud commented on a change in pull request #11074:
URL: https://github.com/apache/beam/pull/11074#discussion_r833730138



##########
File path: 
sdks/java/core/src/main/java/org/apache/beam/sdk/values/RowWithGetters.java
##########
@@ -130,10 +130,11 @@ private Iterable getIterableValue(FieldType elementType, 
Object fieldValue) {
         OneOfType oneOfType = type.getLogicalType(OneOfType.class);
         OneOfType.Value oneOfValue = (OneOfType.Value) fieldValue;
         Object convertedOneOfField =
-            getValue(oneOfValue.getFieldType(), oneOfValue.getValue(), null);
-        return (T)
-            oneOfType.toBaseType(
-                oneOfType.createValue(oneOfValue.getCaseType(), 
convertedOneOfField));
+            getValue(oneOfType.getFieldType(oneOfValue), 
oneOfValue.getValue(), null);
+        return (T) oneOfType.createValue(oneOfValue.getCaseType(), 
convertedOneOfField);
+      } else if (type.getTypeName().isLogicalType()) {
+        // Getters are assumed to return the base type.
+        return (T) type.getLogicalType().toInputType(fieldValue);

Review comment:
       There was a past world where the getters supported returning either 
logical type or base type. This was suppose to be whatever the previous 
transform provided (or the base type if coming from a coder). The goal was to 
save a conversion from base type to logical type for values that were just 
passed along. I believe the only use case was SQL and I removed that in #13930 
because it is broken and like you notice here more expensive.
   
   It should be possible to do more simplification such that we always work 
with logical types instead of base types. Eventually we will want a 
pass-through optimization again, but it will need to be at a lower level than 
logical types. (The only expensive type today is String, which isn't a logical 
type.)




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to