[ 
https://issues.apache.org/jira/browse/DRILL-7359?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16988878#comment-16988878
 ] 

ASF GitHub Bot commented on DRILL-7359:
---------------------------------------

KazydubB commented on pull request #1870: DRILL-7359: Add support for DICT type 
in RowSet Framework
URL: https://github.com/apache/drill/pull/1870#discussion_r354303721
 
 

 ##########
 File path: 
exec/vector/src/main/java/org/apache/drill/exec/vector/accessor/reader/UnionReaderImpl.java
 ##########
 @@ -268,4 +274,51 @@ public String getAsString() {
     }
     return requireReader(type).getAsString();
   }
+
+  private UnionReaderImpl getNullReader() {
+    AbstractObjectReader[] nullVariants = new 
AbstractObjectReader[variants.length];
+    for (int i = 0; i < variants.length; i++) {
+      nullVariants[i] = variants[i].createNullReader();
+    }
+    return new NullUnionReader(schema(), unionAccessor, nullVariants);
+  }
+
+  private static class NullUnionReader extends UnionReaderImpl {
+
+    private NullUnionReader(ColumnMetadata metadata, VectorAccessor va, 
AbstractObjectReader[] variants) {
 
 Review comment:
   Yes, there is a need to have multiple methods for each key type to avoid 
invocation of generalized `keyReader.getObject()` which contains `switch` 
checking each type (really bad in production) - will fix it.
   
   *EDIT*: actually, there is another, rather more elegant, way to hadle this 
without the need to duplicate code/add many methods:
   an instance variable `private final Supplier<Object> keyObjectExtractor` can 
be defined in `DictReaderImpl` which will be initializated during creation as 
   ```
   private Supplier<Object> getKeyObjectExtractor() {
       switch (keyColumnType()) {
         case BOOLEAN:
           return keyReader::getBoolean;
         case BYTES:
           return keyReader::getBytes;
         ...
       }
     }
   ```
   This makes possible to use `Object` in `find(Object key)` because we can use 
`keyObjectExtractor.get()` whenever we need key `Object` value, thus making 
code cleaner.
 
----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> Add support for DICT type in RowSet Framework
> ---------------------------------------------
>
>                 Key: DRILL-7359
>                 URL: https://issues.apache.org/jira/browse/DRILL-7359
>             Project: Apache Drill
>          Issue Type: New Feature
>            Reporter: Bohdan Kazydub
>            Assignee: Bohdan Kazydub
>            Priority: Major
>             Fix For: 1.18.0
>
>
> Add support for new DICT data type (see DRILL-7096) in RowSet Framework



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to