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


##########
processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndexColumnSelectorFactory.java:
##########
@@ -51,21 +54,44 @@ class IncrementalIndexColumnSelectorFactory implements 
ColumnSelectorFactory, Ro
   IncrementalIndexColumnSelectorFactory(
       IncrementalIndexRowSelector rowSelector,
       IncrementalIndexRowHolder rowHolder,
-      VirtualColumns virtualColumns,
+      CursorBuildSpec cursorBuildSpec,
       Order timeOrder
   )
   {
     this.rowSelector = rowSelector;
-    this.virtualColumns = virtualColumns;
+    this.virtualColumns = cursorBuildSpec.getVirtualColumns();
     this.timeOrder = timeOrder;
     this.rowHolder = rowHolder;
+
+    final Map<String, ColumnCapabilities> capabilitiesMap = new HashMap<>();
+    if (cursorBuildSpec.getPhysicalColumns() == null) {
+      // add everything
+      for (String column : rowSelector.getDimensionNames(true)) {
+        capabilitiesMap.put(column, 
IncrementalIndexCursorFactory.snapshotColumnCapabilities(rowSelector, column));
+      }
+      for (String column : rowSelector.getMetricNames()) {
+        capabilitiesMap.put(column, 
IncrementalIndexCursorFactory.snapshotColumnCapabilities(rowSelector, column));
+      }
+      for (String column : 
cursorBuildSpec.getVirtualColumns().getColumnNames()) {
+        capabilitiesMap.put(column, 
IncrementalIndexCursorFactory.snapshotColumnCapabilities(rowSelector, column));
+      }
+    } else {
+      // just add required columns
+      for (String column : cursorBuildSpec.getPhysicalColumns()) {
+        capabilitiesMap.put(column, 
IncrementalIndexCursorFactory.snapshotColumnCapabilities(rowSelector, column));
+      }
+      // and virtual columns
+      for (String column : 
cursorBuildSpec.getVirtualColumns().getColumnNames()) {
+        capabilitiesMap.put(column, 
IncrementalIndexCursorFactory.snapshotColumnCapabilities(rowSelector, column));
+      }
+    }
     this.snapshotColumnInspector = new ColumnInspector()
     {
       @Nullable
       @Override
       public ColumnCapabilities getColumnCapabilities(String column)
       {
-        return 
IncrementalIndexCursorFactory.snapshotColumnCapabilities(rowSelector, column);
+        return capabilitiesMap.get(column);

Review Comment:
   i added validation for `getColumnCapabilities`. I think I would actually 
like to take it a step further and add this validation for all the selector 
factory methods for `IncrementalIndexColumnSelectorFactory`, 
`QueryableIndexColumnSelectorFactory` and 
`QueryableIndexVectorColumnSelectorFactory`, but have decided to do this as a 
follow-up since I feel like this PR already has enough stuff going on with it.



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