github-code-scanning[bot] commented on code in PR #13799:
URL: https://github.com/apache/druid/pull/13799#discussion_r1130285655


##########
sql/src/main/java/org/apache/druid/sql/calcite/rule/DruidCorrelateUnnestRule.java:
##########
@@ -101,8 +101,9 @@
     final RexBuilder rexBuilder = correlate.getCluster().getRexBuilder();
 
     final Filter druidRelFilter;
-    final DruidRel<?> newDruidRelFilter;
+    final DruidRel<?> newDruidRel;
     final List<RexNode> newProjectExprs = new ArrayList<>();
+    final List<RexNode> newWheres = new ArrayList<>();

Review Comment:
   ## Unread local variable
   
   Variable 'List<RexNode> newWheres' is never read.
   
   [Show more 
details](https://github.com/apache/druid/security/code-scanning/4386)



##########
processing/src/main/java/org/apache/druid/segment/UnnestDimensionCursor.java:
##########
@@ -322,20 +349,210 @@
   @Nullable
   private void initialize()
   {
-    IdLookup idLookup = dimSelector.idLookup();
-    this.indexIntsForRow = new SingleIndexInts();
-    if (allowSet != null && !allowSet.isEmpty() && idLookup != null) {
-      for (String s : allowSet) {
-        if (idLookup.lookupId(s) >= 0) {
-          allowedBitSet.set(idLookup.lookupId(s));
+    /*
+    for i=0 to baseColFactory.makeDimSelector.getValueCardinality()
+        match each item with the filter and populate bitset if there's a match
+     */
+
+    if (allowFilter != null) {
+      AtomicInteger idRef = new AtomicInteger();
+      ValueMatcher myMatcher = allowFilter.makeMatcher(new 
ColumnSelectorFactory()
+      {
+        @Override
+        public DimensionSelector makeDimensionSelector(DimensionSpec 
dimensionSpec)
+        {
+          if (!outputName.equals(dimensionSpec.getDimension())) {
+            throw new ISE("Asked for bad dimension[%s]", dimensionSpec);
+          }
+          return new DimensionSelector()
+          {
+            private final IndexedInts myInts = new IndexedInts()
+            {
+              @Override
+              public int size()
+              {
+                return 1;
+              }
+
+              @Override
+              public int get(int index)
+              {
+                return 1;
+              }
+
+              @Override
+              public void inspectRuntimeShape(RuntimeShapeInspector inspector)
+              {
+
+              }
+            };
+
+            @Override
+            public IndexedInts getRow()
+            {
+              return myInts;
+            }
+
+            @Override
+            public ValueMatcher makeValueMatcher(@Nullable String value)
+            {
+              // Handle value is null
+              return new ValueMatcher()
+              {
+                @Override
+                public boolean matches()
+                {
+                  return value.equals(lookupName(1));
+                }
+
+                @Override
+                public void inspectRuntimeShape(RuntimeShapeInspector 
inspector)
+                {
+
+                }
+              };
+            }
+
+            @Override
+            public ValueMatcher makeValueMatcher(Predicate<String> predicate)
+            {
+              return new ValueMatcher()
+              {
+                @Override
+                public boolean matches()
+                {
+                  return predicate.apply(lookupName(1));
+                }
+
+                @Override
+                public void inspectRuntimeShape(RuntimeShapeInspector 
inspector)
+                {
+
+                }
+              };
+            }
+
+            @Override
+            public void inspectRuntimeShape(RuntimeShapeInspector inspector)
+            {
+
+            }
+
+            @Nullable
+            @Override
+            public Object getObject()
+            {
+              return null;
+            }
+
+            @Override
+            public Class<?> classOfObject()
+            {
+              return null;
+            }
+
+            @Override
+            public int getValueCardinality()
+            {
+              return dimSelector.getValueCardinality();
+            }
+
+            @Nullable
+            @Override
+            public String lookupName(int id)
+            {
+              return dimSelector.lookupName(idRef.get());
+            }
+
+            @Override
+            public boolean nameLookupPossibleInAdvance()
+            {
+              return dimSelector.nameLookupPossibleInAdvance();
+            }
+
+            @Nullable
+            @Override
+            public IdLookup idLookup()
+            {
+              return dimSelector.idLookup();
+            }
+          };
+        }
+
+        @Override
+        public ColumnValueSelector makeColumnValueSelector(String columnName)
+        {
+          return new ColumnValueSelector()
+          {
+            @Override
+            public double getDouble()
+            {
+              return Double.parseDouble(dimSelector.lookupName(idRef.get()));

Review Comment:
   ## Missing catch of NumberFormatException
   
   Potential uncaught 'java.lang.NumberFormatException'.
   
   [Show more 
details](https://github.com/apache/druid/security/code-scanning/4387)



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