File tree Expand file tree Collapse file tree
phoenix-core-client/src/main/java/org/apache/phoenix/execute Expand file tree Collapse file tree Original file line number Diff line number Diff line change 3939
4040public abstract class DelegateQueryPlan implements QueryPlan {
4141 protected final QueryPlan delegate ;
42+ // Fallback storage for the optimizer decision used only when this plan has no delegate to
43+ // forward to. Some DelegateQueryPlan subclasses intentionally pass a null delegate and override
44+ // getContext()/getTableRef()/getProjector() to serve from local state.
45+ private OptimizerDecision optimizerDecision ;
4246
4347 public DelegateQueryPlan (QueryPlan delegate ) {
4448 this .delegate = delegate ;
@@ -175,11 +179,15 @@ public boolean isApplicable() {
175179
176180 @ Override
177181 public OptimizerDecision getOptimizerDecision () {
178- return delegate .getOptimizerDecision ();
182+ return delegate != null ? delegate .getOptimizerDecision () : optimizerDecision ;
179183 }
180184
181185 @ Override
182186 public void setOptimizerDecision (OptimizerDecision decision ) {
183- delegate .setOptimizerDecision (decision );
187+ if (delegate != null ) {
188+ delegate .setOptimizerDecision (decision );
189+ } else {
190+ this .optimizerDecision = decision ;
191+ }
184192 }
185193}
You can’t perform that action at this time.
0 commit comments