>From Preetham Poluparthi <[email protected]>:

Attention is currently required from: Preetham Poluparthi.

Hello Anon. E. Moose #1000171, Jenkins,

I'd like you to reexamine a change. Please visit

    https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21406?usp=email

to look at the new patch set (#2).

The following approvals got outdated and were removed:
Contrib-2 by Anon. E. Moose #1000171, Integration-Tests+1 by Jenkins, 
Verified-1 by Jenkins


Change subject: [ASTERIXDB-3606][COMP]: Refactor CBO into registry-based, 
class-per-concern design
......................................................................

[ASTERIXDB-3606][COMP]: Refactor CBO into registry-based, class-per-concern 
design

 - user model changes: no
 - storage format changes: no
 - interface changes: no

Details:
Combines the phase-wise CBO refactors (previously staged on branches
cbo_refac_2.0 through cbo_refac_5.0) into a single change on top of the
already-merged plan-representation refactor:

- Parsing IR: phase-one parsing moved out of EnumerateJoinsRule into
  RawPlanBuilder producing a typed RawPlanTree (AbstractRawPlanNode,
  JoinRawPlanNode, ScanRawPlanNode, LeafDataset), separating raw plan
  capture from optimization.
- Virtual plan construction: VirtualOpBuilder / VirtualPlanBuilder /
  VirtualPlanTree / VirtualOperatorRegistry build the CBO's working plan
  (including unnest-to-fake-LOJ modeling) as registry-tracked virtual
  structures instead of mutating the incoming plan in place. Leaf inputs
  become AbstractVirtualLeafInput / DatasetVirtualLeafInput /
  UnnestVirtualLeafInput; UnnestLeafInput becomes UnnestArray.
- Join conditions: the flag-based JoinCondition is replaced by a typed
  hierarchy (AbstractJoinCondition, AbstractBinaryJoinCondition,
  EquiJoinCondition, NonEquiBinaryJoinCondition, NonBinaryJoinCondition)
  owned by JoinConditionRegistry; internal-edge assign tracking moves to
  ExtraAssigns.
- Join node registry: the raw jnArray in JoinEnum is replaced by
  JoinNodeRegistry, which owns the DP table and provides subset-,
  leaf-input- and index-based lookups. Completes the previously WIP
  migration: all remaining jnArray/getJnArray/findJoinNodeIndexByName
  usages in JoinEnum, JoinNode and Stats now go through the registry.

Carried forward from master while merging:
- Skip-index hint handling in disjunctive predicates (ASTERIXDB-3750).
- Join condition handling for bushy plans: getNewJoinConditionsOnly()
  keeps conditions spanning both child subsets instead of assuming
  zigzag-only trees.
- Disjunction support in index lookups (ASTERIXDB-3709).

Adds the extra-assigns runtime test.

Ext-ref: MB-66641

Co-Authored-By: Claude Fable 5 <[email protected]>
Change-Id: Ife1f88cdef5c6cd603cc4a60e1f194d221d6f32b
---
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/AttachCompileTimeRangeMapRule.java
A 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/AbstractBinaryJoinCondition.java
A 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/AbstractJoinCondition.java
C 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/AbstractRawPlanNode.java
R 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/AbstractVirtualLeafInput.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/DatasetRegistry.java
A 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/DatasetVirtualLeafInput.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EnumerateJoinsRule.java
A 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EquiJoinCondition.java
A 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/ExtraAssigns.java
D 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinCondition.java
A 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinConditionRegistry.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinNode.java
A 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinNodeRegistry.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinPlanNode.java
A 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinRawPlanNode.java
C 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/LeafDataset.java
R 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/NonBinaryJoinCondition.java
C 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/NonEquiBinaryJoinCondition.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/OperatorUtils.java
A 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/RawPlanBuilder.java
A 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/RawPlanTree.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/ScanPlanNode.java
A 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/ScanRawPlanNode.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java
R 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/UnnestArray.java
C 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/UnnestVirtualLeafInput.java
A 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/VirtualOpBuilder.java
C 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/VirtualOperatorRegistry.java
A 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/VirtualPlanBuilder.java
A 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/VirtualPlanTree.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/indexadvisor/AbstractAdvisorPlanNode.java
R 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/indexadvisor/AdvPlanStateTree.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/indexadvisor/AdvisorJoinPlanNode.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/indexadvisor/AdvisorPlanParser.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/indexadvisor/AdvisorScanPlanNode.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/indexadvisor/FakeIndexProvider.java
C 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/cbo-join/extra-assigns/extra-assigns.1.ddl.sqlpp
C 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/cbo-join/extra-assigns/extra-assigns.2.update.sqlpp
C 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/cbo-join/extra-assigns/extra-assigns.4.query.sqlpp
A 
asterixdb/asterix-app/src/test/resources/runtimets/results/cbo-join/extra-assigns/extra-assigns.4.adm
42 files changed, 2,459 insertions(+), 1,673 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/06/21406/2
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21406?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings?usp=email

Gerrit-MessageType: newpatchset
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: Ife1f88cdef5c6cd603cc4a60e1f194d221d6f32b
Gerrit-Change-Number: 21406
Gerrit-PatchSet: 2
Gerrit-Owner: Preetham Poluparthi <[email protected]>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <[email protected]>
Gerrit-Attention: Preetham Poluparthi <[email protected]>

Reply via email to