You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Palash Chauhan (Jira)" <ji...@apache.org> on 2026/02/19 21:34:00 UTC

[jira] [Created] (PHOENIX-7772) TOTAL_SEGMENTS query leads to NPE when table has index

Palash Chauhan created PHOENIX-7772:
---------------------------------------

             Summary: TOTAL_SEGMENTS query leads to NPE when table has index 
                 Key: PHOENIX-7772
                 URL: https://issues.apache.org/jira/browse/PHOENIX-7772
             Project: Phoenix
          Issue Type: Bug
    Affects Versions: 5.3.0
            Reporter: Palash Chauhan
            Assignee: Palash Chauhan
             Fix For: 5.4.0, 5.3.1


 

SegmentInfoPlan passes null as delegate in its constructor. 
{code:java}
public SegmentInfoPlan(StatementContext context, FilterableStatement statement, TableRef tableRef,
  RowProjector projector, Integer totalSegmentsValue) {
  super(context, statement, tableRef, projector, null, null, null, OrderBy.EMPTY_ORDER_BY, null);
  this.totalSegmentsValue = totalSegmentsValue;
  this.sourceTables = ImmutableSet.of(tableRef);
} {code}
During TOTAL_SEGMENTS query, in QueryOptimizer when there is an index on the table, `dataPlan.isDegenerate()` is called
{code:java}
if (
  dataPlan.isApplicable() && (indexes.isEmpty() || dataPlan.isDegenerate()
    || dataPlan.getTableRef().hasDynamicCols() || select.getHint().hasHint(Hint.NO_INDEX))
) {
  return Collections.<QueryPlan> singletonList(dataPlan);
} {code}
SegmentInfoPlan -> ClientProcessingPlan -> DelegateQueryPlan
{code:java}
@Override
public boolean isDegenerate() {
  return delegate.isDegenerate();
} {code}
delegate is null which leads to NPE

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)