gianm commented on pull request #11888:
URL: https://github.com/apache/druid/pull/11888#issuecomment-970889028


   Some high level thoughts:
   
   1) estimateSizeBytesNullable appears to be the only reference to 
nullability. The other methods say they deal with non-null data. That seems 
inconsistent. Here I think I'm in favor of what @cheddar is suggesting, that 
this interface should not be null-aware, and null handling should be left to 
the caller. (Callers shouldn't need to use this interface if they get a null.)
   
   2) To simplify life for callers that don't want to care about null handling, 
we could make a NullableTypeStrategy that accepts nulls and stores a null byte. 
It'd be composable with all the other TypeStrategy implementations, and lets 
certain callers stay simple while also letting other callers be fancy.
   
   3) I'm confused about the intent of estimateSizeBytes: is it meant to be a 
maximum size? Like, can the estimate be an underestimate? Some of the javadocs 
and comments seem to suggest that is the case. If it's meant to be a max, we 
should call it specifically "max" instead of "estimate".
   
   4) I'm not sure if anything could use it today, but, we should design this 
interface to support variable size serialization lengths, since we'll want it 
for various future data types. Those could work by having `write` take a max 
length, and returning -1 if it would need more than that. Then the caller could 
allocate more space and call `write` again. Or, maybe, `write` could return 
`-the_amount_of_space_it_needs`. In this case the "estimate" method really 
could return an estimate rather than a max.
   
   5) Even with variable size support like (4) suggest, we will still have 
callers that can't deal with that. So there will need to be some API that 
supports those callers. I'm not sure what that'd look like; maybe a getMaxBytes 
method that returns the max, or -1 if there really isn't a known max? And if 
the max is -1, then callers that only support constant size serialization can't 
use the API?
   
   


-- 
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]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to