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


##########
processing/src/main/java/org/apache/druid/query/metadata/SegmentAnalyzer.java:
##########
@@ -322,89 +323,69 @@
       max = storageAdapter.getMaxValue(columnName);
     }
 
-    return new ColumnAnalysis(
-        capabilities.toColumnType(),
-        capabilities.getType().name(),
-        capabilities.hasMultipleValues().isTrue(),
-        capabilities.hasNulls().isMaybeTrue(), // if we don't know for sure, 
then we should plan to check for nulls
-        size,
-        cardinality,
-        min,
-        max,
-        null
-    );
+    return ColumnAnalysis.builder()
+                         .withCapabilities(capabilities)
+                         .withSize(size)
+                         .withCardinality(cardinality)
+                         .withMinValue(min)
+                         .withMaxValue(max)
+                         .build();
   }
 
   private ColumnAnalysis analyzeComplexColumn(
-      @Nullable final ColumnCapabilities capabilities,
+      final ColumnCapabilities capabilities,
       final int numCells,
       @Nullable final ColumnHolder columnHolder
   )
   {
     final TypeSignature<ValueType> typeSignature = capabilities == null ? 
ColumnType.UNKNOWN_COMPLEX : capabilities;
     final String typeName = typeSignature.getComplexTypeName();
 
+    final ColumnAnalysis.Builder bob = ColumnAnalysis.builder()
+                                                     
.withType(ColumnTypeFactory.ofType(typeSignature))
+                                                     .withTypeName(typeName);
+
     try (final BaseColumn theColumn = columnHolder != null ? 
columnHolder.getColumn() : null) {
+      if (theColumn != null && !(theColumn instanceof ComplexColumn)) {
+        return bob.withErrorMessage(
+                    StringUtils.format(
+                        "[%s] is not a [%s]",
+                        theColumn.getClass().getName(),
+                        ComplexColumn.class.getName()
+                    )
+                  )
+                  .build();
+      }
       final ComplexColumn complexColumn = (ComplexColumn) theColumn;
-      final boolean hasMultipleValues = capabilities != null && 
capabilities.hasMultipleValues().isTrue();
-      final boolean hasNulls = capabilities != null && 
capabilities.hasNulls().isMaybeTrue();
-      long size = 0;
 
+      bob.hasMultipleValues(capabilities.hasMultipleValues().isTrue())

Review Comment:
   ## Dereferenced variable may be null
   
   Variable [capabilities](1) may be null at this access as suggested by 
[this](2) null guard.
   
   [Show more 
details](https://github.com/apache/druid/security/code-scanning/4970)



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