clintropolis commented on code in PR #16708:
URL: https://github.com/apache/druid/pull/16708#discussion_r1673610239


##########
processing/src/main/java/org/apache/druid/query/rowsandcols/concrete/ColumnHolderRACColumn.java:
##########
@@ -91,7 +91,7 @@ public int numRows()
       public boolean isNull(int rowNum)
       {
         offset.set(rowNum);
-        return valueSelector.isNull();
+        return valueSelector.getObject() == null;

Review Comment:
   i think we need to revisit this contract, since it doesn't really feel 
compatible to coexist with implicit casting on the `getLong`/`getFloat` etc 
methods. If you have a string column but want to read numbers from it but not 
all of them can be parsed into numbers, you can't reliably use any of the 
primitive getters, because `isNull` would say false, but `getLong` would not be 
parseable into a number and return 0. See `ObjectColumnAccessorBase`.
   
   This means you can't actually use these methods if you want to try to get 
numbers from an object column, so they should probably instead throw exceptions 
instead of silently giving you zeros that should have been handled as nulls.
   
   We can fix this by just forbidding this sort of implicit casting, I'm not 
sure it does us any favors in terms of making code clear to follow, while 
having explicit casting wrapper gizmos would make it obvious when something is 
turning a string into a number.



-- 
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: commits-unsubscr...@druid.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@druid.apache.org
For additional commands, e-mail: commits-h...@druid.apache.org

Reply via email to