MiniOB
1
MiniOB is one mini database, helping developers to learn how database works.
载入中...
搜索中...
未找到
src
observer
sql
optimizer
cascade
tasks
cascade_task.h
1
/* Copyright (c) 2021 OceanBase and/or its affiliates. All rights reserved.
2
miniob is licensed under Mulan PSL v2.
3
You can use this software according to the terms and conditions of the Mulan PSL v2.
4
You may obtain a copy of Mulan PSL v2 at:
5
http://license.coscl.org.cn/MulanPSL2
6
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
7
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
8
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
9
See the Mulan PSL v2 for more details. */
10
11
#pragma once
12
13
#include "common/lang/vector.h"
14
15
class
Rule
;
16
class
GroupExpr
;
17
class
RuleSet
;
18
class
OptimizerContext
;
19
class
Memo
;
20
class
RuleWithPromise
;
21
22
enum class
CascadeTaskType
23
{
24
OPTIMIZE_GROUP,
25
OPTIMIZE_EXPR,
26
EXPLORE_GROUP,
27
APPLY_RULE,
28
OPTIMIZE_INPUTS
29
};
30
31
class
CascadeTask
32
{
33
public
:
34
CascadeTask
(
OptimizerContext
*context, CascadeTaskType type) : type_(type), context_(context) {}
35
36
virtual
void
perform() = 0;
37
38
Memo
&get_memo()
const
;
39
40
RuleSet
&get_rule_set()
const
;
41
42
void
push_task(
CascadeTask
*task);
43
44
virtual
~CascadeTask
() =
default
;
45
46
protected
:
47
CascadeTaskType type_;
48
OptimizerContext
*context_;
49
};
CascadeTask
Definition:
cascade_task.h:32
GroupExpr
Definition:
group_expr.h:25
Memo
: memorization
Definition:
memo.h:29
OptimizerContext
Definition:
optimizer_context.h:27
RuleSet
Definition:
rules.h:167
RuleWithPromise
Definition:
rules.h:138
Rule
Definition:
rules.h:80
制作者
1.9.5