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]