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