This is an automated email from the ASF dual-hosted git repository.
panxiaolei pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
from 49becf696ca [fix](case)fix unstable parquet join runtime filter case.
(#59557)
add c771d079a6a [Feature](cte) support recursive cte (#58916)
No new revisions were added by this update.
Summary of changes:
be/src/pipeline/exec/exchange_sink_buffer.cpp | 2 +-
be/src/pipeline/exec/exchange_sink_buffer.h | 2 +-
be/src/pipeline/exec/exchange_source_operator.cpp | 8 +-
be/src/pipeline/exec/exchange_source_operator.h | 19 +
be/src/pipeline/exec/operator.cpp | 10 +
be/src/pipeline/exec/operator.h | 2 +
.../pipeline/exec/rec_cte_anchor_sink_operator.cpp | 56 ++
.../pipeline/exec/rec_cte_anchor_sink_operator.h | 128 +++
be/src/pipeline/exec/rec_cte_scan_operator.h | 89 ++
be/src/pipeline/exec/rec_cte_sink_operator.cpp | 55 ++
be/src/pipeline/exec/rec_cte_sink_operator.h | 100 +++
be/src/pipeline/exec/rec_cte_source_operator.cpp | 85 ++
be/src/pipeline/exec/rec_cte_source_operator.h | 224 +++++
be/src/pipeline/exec/scan_operator.cpp | 1 +
be/src/pipeline/exec/union_sink_operator.h | 41 +-
be/src/pipeline/pipeline.h | 2 +-
be/src/pipeline/pipeline_fragment_context.cpp | 258 ++++--
be/src/pipeline/pipeline_fragment_context.h | 17 +-
be/src/pipeline/pipeline_task.cpp | 24 +-
be/src/pipeline/rec_cte_shared_state.h | 180 ++++
be/src/runtime/fragment_mgr.cpp | 58 ++
be/src/runtime/fragment_mgr.h | 11 +
be/src/runtime/query_context.cpp | 47 +
be/src/runtime/query_context.h | 28 +-
be/src/runtime/runtime_predicate.h | 1 +
be/src/runtime/runtime_state.cpp | 16 +-
be/src/runtime/runtime_state.h | 20 +-
be/src/runtime/task_execution_context.cpp | 60 ++
be/src/runtime/task_execution_context.h | 26 +-
be/src/runtime_filter/runtime_filter_consumer.h | 15 +-
be/src/runtime_filter/runtime_filter_merger.h | 2 +
be/src/runtime_filter/runtime_filter_mgr.cpp | 27 +-
be/src/runtime_filter/runtime_filter_mgr.h | 30 +-
be/src/service/internal_service.cpp | 51 ++
be/src/service/internal_service.h | 10 +
be/src/vec/exec/scan/scanner_context.cpp | 2 +-
be/src/vec/runtime/vdata_stream_recvr.cpp | 2 +-
be/src/vec/sink/vdata_stream_sender.cpp | 1 -
.../runtime_filter_consumer_test.cpp | 20 +-
be/test/runtime_filter/runtime_filter_mgr_test.cpp | 2 +-
.../antlr4/org/apache/doris/nereids/DorisLexer.g4 | 1 +
.../antlr4/org/apache/doris/nereids/DorisParser.g4 | 3 +-
.../org/apache/doris/analysis/DescriptorTable.java | 5 +
.../doris/catalog/RecursiveCteTempTable.java | 35 +
.../java/org/apache/doris/catalog/TableIf.java | 19 +-
.../org/apache/doris/nereids/CascadesContext.java | 41 +-
.../glue/translator/PhysicalPlanTranslator.java | 105 ++-
.../doris/nereids/parser/LogicalPlanBuilder.java | 10 +-
.../apache/doris/nereids/pattern/MemoPatterns.java | 24 +
.../processor/post/RuntimeFilterPruner.java | 9 +
.../processor/pre/PullUpSubqueryAliasToCTE.java | 16 +-
.../properties/ChildOutputPropertyDeriver.java | 20 +
.../nereids/properties/RequestPropertyDeriver.java | 11 +
.../org/apache/doris/nereids/rules/RuleSet.java | 6 +
.../org/apache/doris/nereids/rules/RuleType.java | 3 +
.../doris/nereids/rules/analysis/AnalyzeCTE.java | 167 +++-
.../doris/nereids/rules/analysis/BindRelation.java | 36 +-
.../nereids/rules/analysis/CollectRelation.java | 11 +-
.../nereids/rules/analysis/SubExprAnalyzer.java | 4 +-
...eChildToPhysicalRecursiveCteRecursiveChild.java | 37 +
...RecursiveCteScanToPhysicalRecursiveCteScan.java | 42 +
.../LogicalRecursiveCteToPhysicalRecursiveCte.java | 39 +
.../nereids/rules/rewrite/AdjustNullable.java | 48 ++
.../doris/nereids/rules/rewrite/CTEInline.java | 44 +-
.../doris/nereids/rules/rewrite/ColumnPruning.java | 55 ++
.../doris/nereids/stats/StatsCalculator.java | 109 +++
.../trees/copier/LogicalPlanDeepCopier.java | 26 +
.../apache/doris/nereids/trees/plans/PlanType.java | 6 +
.../nereids/trees/plans/algebra/RecursiveCte.java | 36 +
.../plans/commands/UpdateMvByPartitionCommand.java | 3 +-
.../worker/job/UnassignedJobBuilder.java | 13 +
.../worker/job/UnassignedRecursiveCteScanJob.java | 65 ++
.../nereids/trees/plans/logical/LogicalCTE.java | 27 +-
.../trees/plans/logical/LogicalRecursiveCte.java | 284 ++++++
.../logical/LogicalRecursiveCteRecursiveChild.java | 117 +++
.../plans/logical/LogicalRecursiveCteScan.java | 87 ++
.../trees/plans/logical/LogicalSubQueryAlias.java | 22 +
.../trees/plans/physical/PhysicalRecursiveCte.java | 292 +++++++
.../PhysicalRecursiveCteRecursiveChild.java | 121 +++
.../plans/physical/PhysicalRecursiveCteScan.java | 85 ++
.../nereids/trees/plans/visitor/PlanVisitor.java | 22 +
.../trees/plans/visitor/RelationVisitor.java | 10 +
.../org/apache/doris/planner/RecursiveCteNode.java | 86 ++
.../apache/doris/planner/RecursiveCteScanNode.java | 121 +++
.../java/org/apache/doris/qe/SessionVariable.java | 9 +-
.../doris/qe/runtime/ThriftPlansBuilder.java | 145 +++-
.../nereids/postprocess/RuntimeFilterTest.java | 29 +
.../nereids/rules/analysis/AnalyzeCTETest.java | 219 +++++
.../doris/nereids/rules/rewrite/CTEInlineTest.java | 84 ++
.../nereids/rules/rewrite/ColumnPruningTest.java | 30 +
gensrc/proto/internal_service.proto | 42 +
gensrc/thrift/PaloInternalService.thrift | 6 +-
gensrc/thrift/PlanNodes.thrift | 30 +-
.../data/rec_cte_p0/rec_cte/rec_cte.out | 953 +++++++++++++++++++++
.../rec_cte_from_ck_doc/rec_cte_from_ck_doc.out | 29 +
.../rec_cte_from_duckdb_doc.out | 30 +
.../rec_cte_from_mysql_doc.out | 42 +
.../suites/rec_cte_p0/rec_cte/rec_cte.groovy | 271 ++++++
.../rec_cte_from_ck_doc/rec_cte_from_ck_doc.groovy | 144 ++++
.../rec_cte_from_duckdb_doc.groovy | 185 ++++
.../rec_cte_from_mysql_doc.groovy | 140 +++
.../column_attribute_null_test.groovy | 94 ++
.../recursive_cte/complex_rec_cte_test.groovy | 478 +++++++++++
.../create_and_insert_select_test.groovy | 140 +++
.../suites/recursive_cte/mtmv_and_cte_test.groovy | 88 ++
.../suites/recursive_cte/mv_and_cte_test.groovy | 88 ++
.../suites/recursive_cte/no_data_test.groovy | 77 ++
.../recursive_cte/recursive_100_number_test.groovy | 106 +++
.../recursive_cte_exception_test.groovy | 216 +++++
.../same_data_type_recursive_test.groovy | 430 ++++++++++
110 files changed, 7945 insertions(+), 215 deletions(-)
create mode 100644 be/src/pipeline/exec/rec_cte_anchor_sink_operator.cpp
create mode 100644 be/src/pipeline/exec/rec_cte_anchor_sink_operator.h
create mode 100644 be/src/pipeline/exec/rec_cte_scan_operator.h
create mode 100644 be/src/pipeline/exec/rec_cte_sink_operator.cpp
create mode 100644 be/src/pipeline/exec/rec_cte_sink_operator.h
create mode 100644 be/src/pipeline/exec/rec_cte_source_operator.cpp
create mode 100644 be/src/pipeline/exec/rec_cte_source_operator.h
create mode 100644 be/src/pipeline/rec_cte_shared_state.h
create mode 100644 be/src/runtime/task_execution_context.cpp
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/catalog/RecursiveCteTempTable.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/implementation/LogicalRecursiveCteRecursiveChildToPhysicalRecursiveCteRecursiveChild.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/implementation/LogicalRecursiveCteScanToPhysicalRecursiveCteScan.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/implementation/LogicalRecursiveCteToPhysicalRecursiveCte.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/algebra/RecursiveCte.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/distribute/worker/job/UnassignedRecursiveCteScanJob.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalRecursiveCte.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalRecursiveCteRecursiveChild.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalRecursiveCteScan.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalRecursiveCte.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalRecursiveCteRecursiveChild.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalRecursiveCteScan.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/planner/RecursiveCteNode.java
create mode 100644
fe/fe-core/src/main/java/org/apache/doris/planner/RecursiveCteScanNode.java
create mode 100644
fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/CTEInlineTest.java
create mode 100644 regression-test/data/rec_cte_p0/rec_cte/rec_cte.out
create mode 100644
regression-test/data/rec_cte_p0/rec_cte_from_ck_doc/rec_cte_from_ck_doc.out
create mode 100644
regression-test/data/rec_cte_p0/rec_cte_from_duckdb_doc/rec_cte_from_duckdb_doc.out
create mode 100644
regression-test/data/rec_cte_p0/rec_cte_from_mysql_doc/rec_cte_from_mysql_doc.out
create mode 100644 regression-test/suites/rec_cte_p0/rec_cte/rec_cte.groovy
create mode 100644
regression-test/suites/rec_cte_p0/rec_cte_from_ck_doc/rec_cte_from_ck_doc.groovy
create mode 100644
regression-test/suites/rec_cte_p0/rec_cte_from_duckdb_doc/rec_cte_from_duckdb_doc.groovy
create mode 100644
regression-test/suites/rec_cte_p0/rec_cte_from_mysql_doc/rec_cte_from_mysql_doc.groovy
create mode 100644
regression-test/suites/recursive_cte/column_attribute_null_test.groovy
create mode 100644
regression-test/suites/recursive_cte/complex_rec_cte_test.groovy
create mode 100644
regression-test/suites/recursive_cte/create_and_insert_select_test.groovy
create mode 100644
regression-test/suites/recursive_cte/mtmv_and_cte_test.groovy
create mode 100644 regression-test/suites/recursive_cte/mv_and_cte_test.groovy
create mode 100644 regression-test/suites/recursive_cte/no_data_test.groovy
create mode 100644
regression-test/suites/recursive_cte/recursive_100_number_test.groovy
create mode 100644
regression-test/suites/recursive_cte/recursive_cte_exception_test.groovy
create mode 100644
regression-test/suites/recursive_cte/same_data_type_recursive_test.groovy
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]