This is an automated email from the ASF dual-hosted git repository.

apurtell pushed a commit to branch PHOENIX-7876-feature
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/PHOENIX-7876-feature by this 
push:
     new 66be2748ab PHOENIX-7921 Remove unread bookkeeping state from 
StatementContext (#2528)
66be2748ab is described below

commit 66be2748ab68c1ad84d46616b650ebb6731e373a
Author: Andrew Purtell <[email protected]>
AuthorDate: Sat Jun 13 17:40:06 2026 -0700

    PHOENIX-7921 Remove unread bookkeeping state from StatementContext (#2528)
    
    Co-authored-by: Claude Opus 4.8[1m] <[email protected]>
---
 .../org/apache/phoenix/compile/HavingCompiler.java |  5 ---
 .../apache/phoenix/compile/StatementContext.java   | 46 ----------------------
 .../parse/IndexExpressionParseNodeRewriter.java    |  1 -
 3 files changed, 52 deletions(-)

diff --git 
a/phoenix-core-client/src/main/java/org/apache/phoenix/compile/HavingCompiler.java
 
b/phoenix-core-client/src/main/java/org/apache/phoenix/compile/HavingCompiler.java
index 16f77a8b6c..01b3905820 100644
--- 
a/phoenix-core-client/src/main/java/org/apache/phoenix/compile/HavingCompiler.java
+++ 
b/phoenix-core-client/src/main/java/org/apache/phoenix/compile/HavingCompiler.java
@@ -85,11 +85,6 @@ public class HavingCompiler {
     having.accept(visitor);
     if (!visitor.getMoveToWhereClauseExpressions().isEmpty()) {
       context.addAppliedRewrite("HAVING PREDICATE AS WHERE");
-      // Record the parse nodes lifted from HAVING into WHERE so VERBOSE 
predicate attribution can
-      // distinguish them.
-      for (ParseNode lifted : visitor.getMoveToWhereClauseExpressions()) {
-        context.addLiftedHavingNode(lifted);
-      }
     }
     statement = SelectStatementRewriter.moveFromHavingToWhereClause(statement,
       visitor.getMoveToWhereClauseExpressions());
diff --git 
a/phoenix-core-client/src/main/java/org/apache/phoenix/compile/StatementContext.java
 
b/phoenix-core-client/src/main/java/org/apache/phoenix/compile/StatementContext.java
index 17cd40305a..1ae12afac5 100644
--- 
a/phoenix-core-client/src/main/java/org/apache/phoenix/compile/StatementContext.java
+++ 
b/phoenix-core-client/src/main/java/org/apache/phoenix/compile/StatementContext.java
@@ -111,7 +111,6 @@ public class StatementContext {
   private final int slowestScanMetricsCount;
   private List<String> appliedRewrites;
   private int derivedTableFlattenCount;
-  private List<Pair<ParseNode, String>> indexExpressionSubstitutions;
   private Map<String, List<String>> appliedIndexExpressionMatches;
   private Set<String> functionalIndexNames;
   private Set<Pair<String, String>> partialIndexCheckedSet;
@@ -119,7 +118,6 @@ public class StatementContext {
   private StatementContext parentContext;
   private ExplainOptions explainOptions = ExplainOptions.DEFAULT;
   private Map<Expression, Set<String>> predicateOrigins;
-  private Set<ParseNode> liftedHavingNodes;
   private Map<ParseNode, String> decorrelatedSubqueryAlias;
   private Map<Hint, String> ignoredHints;
 
@@ -160,7 +158,6 @@ public class StatementContext {
     this.hasRawRowSizeFunction = context.hasRawRowSizeFunction;
     this.appliedRewrites = context.appliedRewrites;
     this.derivedTableFlattenCount = context.derivedTableFlattenCount;
-    this.indexExpressionSubstitutions = context.indexExpressionSubstitutions;
     this.appliedIndexExpressionMatches = context.appliedIndexExpressionMatches;
     this.functionalIndexNames = context.functionalIndexNames;
     this.partialIndexCheckedSet = context.partialIndexCheckedSet;
@@ -168,7 +165,6 @@ public class StatementContext {
     this.parentContext = context.parentContext;
     this.explainOptions = context.explainOptions;
     this.predicateOrigins = context.predicateOrigins;
-    this.liftedHavingNodes = context.liftedHavingNodes;
     this.decorrelatedSubqueryAlias = context.decorrelatedSubqueryAlias;
     this.ignoredHints = context.ignoredHints;
   }
@@ -235,14 +231,12 @@ public class StatementContext {
     this.subStatementContexts = Sets.newLinkedHashSet();
     this.appliedRewrites = new ArrayList<>();
     this.derivedTableFlattenCount = 0;
-    this.indexExpressionSubstitutions = new ArrayList<>();
     this.appliedIndexExpressionMatches = Maps.newLinkedHashMap();
     this.functionalIndexNames = Sets.newHashSet();
     this.partialIndexCheckedSet = Sets.newHashSet();
     this.serverParsedProjections = null;
     this.parentContext = null;
     this.predicateOrigins = new IdentityHashMap<>();
-    this.liftedHavingNodes = Collections.newSetFromMap(new 
IdentityHashMap<>());
     this.decorrelatedSubqueryAlias = new IdentityHashMap<>();
     this.ignoredHints = new EnumMap<>(Hint.class);
   }
@@ -534,13 +528,11 @@ public class StatementContext {
   public void adoptRewriteState(StatementContext source) {
     this.appliedRewrites = source.appliedRewrites;
     this.derivedTableFlattenCount = source.derivedTableFlattenCount;
-    this.indexExpressionSubstitutions = source.indexExpressionSubstitutions;
     this.appliedIndexExpressionMatches = source.appliedIndexExpressionMatches;
     this.functionalIndexNames = source.functionalIndexNames;
     this.partialIndexCheckedSet = source.partialIndexCheckedSet;
     this.serverParsedProjections = source.serverParsedProjections;
     this.predicateOrigins = source.predicateOrigins;
-    this.liftedHavingNodes = source.liftedHavingNodes;
     this.decorrelatedSubqueryAlias = source.decorrelatedSubqueryAlias;
     this.ignoredHints = source.ignoredHints;
   }
@@ -553,15 +545,6 @@ public class StatementContext {
     return derivedTableFlattenCount;
   }
 
-  /** Structured pairs recorded when a functional index expression is 
substituted. */
-  public List<Pair<ParseNode, String>> getIndexExpressionSubstitutions() {
-    return indexExpressionSubstitutions;
-  }
-
-  public void addIndexExpressionSubstitution(ParseNode source, String 
indexColumnName) {
-    indexExpressionSubstitutions.add(new Pair<>(source, indexColumnName));
-  }
-
   /**
    * Records the path expressions that actually substituted against this query 
for the given
    * functional index. Used by the optimizer to label the chosen index's rule 
as
@@ -660,23 +643,6 @@ public class StatementContext {
     predicateOrigins.computeIfAbsent(expression, k -> new 
LinkedHashSet<>()).add(origin);
   }
 
-  /**
-   * Propagate the accumulated origin tags of each source expression onto a 
freshly minted
-   * destination expression. Used by expression rewriters/clone visitors so 
identity-keyed tags
-   * survive node replacement.
-   */
-  public void unionTags(Expression dst, Iterable<? extends Expression> srcs) {
-    if (dst == null || srcs == null) {
-      return;
-    }
-    for (Expression src : srcs) {
-      Set<String> tags = predicateOrigins.get(src);
-      if (tags != null && !tags.isEmpty()) {
-        predicateOrigins.computeIfAbsent(dst, k -> new 
LinkedHashSet<>()).addAll(tags);
-      }
-    }
-  }
-
   /** Returns the predicate origin tags accumulated during compilation. 
Identity keyed. */
   public Map<Expression, Set<String>> getPredicateOrigins() {
     return predicateOrigins;
@@ -688,18 +654,6 @@ public class StatementContext {
     return tags == null ? Collections.emptySet() : tags;
   }
 
-  /** Records a parse node lifted from HAVING into the WHERE clause (identity 
keyed). */
-  public void addLiftedHavingNode(ParseNode node) {
-    if (node != null) {
-      liftedHavingNodes.add(node);
-    }
-  }
-
-  /** Returns true if {@code node} was lifted from HAVING into the WHERE 
clause. */
-  public boolean isLiftedHavingNode(ParseNode node) {
-    return liftedHavingNodes.contains(node);
-  }
-
   /**
    * Records that the given decorrelated join-condition parse node originated 
from the subquery with
    * the given temp alias.
diff --git 
a/phoenix-core-client/src/main/java/org/apache/phoenix/parse/IndexExpressionParseNodeRewriter.java
 
b/phoenix-core-client/src/main/java/org/apache/phoenix/parse/IndexExpressionParseNodeRewriter.java
index de3faef662..f4863adb02 100644
--- 
a/phoenix-core-client/src/main/java/org/apache/phoenix/parse/IndexExpressionParseNodeRewriter.java
+++ 
b/phoenix-core-client/src/main/java/org/apache/phoenix/parse/IndexExpressionParseNodeRewriter.java
@@ -105,7 +105,6 @@ public class IndexExpressionParseNodeRewriter extends 
ParseNodeRewriter {
       }
       if (breadcrumbContext != null) {
         breadcrumbContext.addAppliedRewrite("INDEX EXPRESSION " + 
expressionStr + " AS " + colName);
-        breadcrumbContext.addIndexExpressionSubstitution(indexedParseNode, 
colName);
       }
     }
   }

Reply via email to