Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
oceanbase
miniob
提交
5f4ea56d
M
miniob
项目概览
oceanbase
/
miniob
大约 1 年 前同步成功
通知
74
Star
1521
Fork
537
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
分析
仓库
DevOps
项目成员
Pages
M
miniob
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Pages
分析
分析
仓库分析
DevOps
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
提交
体验新版 GitCode,发现更多精彩内容 >>
提交
5f4ea56d
编写于
7月 02, 2022
作者:
羽飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix do_predicate bug
上级
3d7051b9
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
30 addition
and
10 deletion
+30
-10
src/observer/sql/executor/predicate_operator.cpp
src/observer/sql/executor/predicate_operator.cpp
+23
-9
src/observer/sql/stmt/filter_stmt.cpp
src/observer/sql/stmt/filter_stmt.cpp
+6
-0
src/observer/sql/stmt/filter_stmt.h
src/observer/sql/stmt/filter_stmt.h
+1
-1
未找到文件。
src/observer/sql/executor/predicate_operator.cpp
浏览文件 @
5f4ea56d
...
...
@@ -12,8 +12,6 @@ See the Mulan PSL v2 for more details. */
// Created by WangYunlai on 2022/6/27.
//
#pragma once
#include "common/log/log.h"
#include "sql/executor/predicate_operator.h"
#include "storage/common/record.h"
...
...
@@ -88,19 +86,35 @@ bool PredicateOperator::do_predicate(RowTuple &tuple)
get_cell
(
tuple
,
right
,
right_cell
);
const
int
compare
=
left_cell
.
compare
(
right_cell
);
bool
filter_result
=
false
;
switch
(
comp
)
{
case
EQUAL_TO
:
return
0
==
compare
;
case
LESS_EQUAL
:
return
compare
<=
0
;
case
NOT_EQUAL
:
return
compare
!=
0
;
case
LESS_THAN
:
return
compare
<
0
;
case
GREAT_EQUAL
:
return
compare
>=
0
;
case
GREAT_THAN
:
return
compare
>
0
;
case
EQUAL_TO
:
{
filter_result
=
(
0
==
compare
);
}
break
;
case
LESS_EQUAL
:
{
filter_result
=
(
compare
<=
0
);
}
break
;
case
NOT_EQUAL
:
{
filter_result
=
(
compare
!=
0
);
}
break
;
case
LESS_THAN
:
{
filter_result
=
(
compare
<
0
);
}
break
;
case
GREAT_EQUAL
:
{
filter_result
=
(
compare
>=
0
);
}
break
;
case
GREAT_THAN
:
{
filter_result
=
(
compare
>
0
);
}
break
;
default:
{
LOG_WARN
(
"invalid compare type: %d"
,
comp
);
}
break
;
}
if
(
!
filter_result
)
{
return
false
;
}
}
return
fals
e
;
return
tru
e
;
}
int
PredicateOperator
::
tuple_cell_num
()
const
...
...
src/observer/sql/stmt/filter_stmt.cpp
浏览文件 @
5f4ea56d
...
...
@@ -70,6 +70,12 @@ RC FilterStmt::create_filter_unit(Db *db, Table *default_table,
RC
rc
=
RC
::
SUCCESS
;
CompOp
comp
=
condition
.
comp
;
if
(
comp
<
EQUAL_TO
||
comp
>=
NO_OP
)
{
LOG_WARN
(
"invalid compare operator : %d"
,
comp
);
return
RC
::
INVALID_ARGUMENT
;
}
filter_unit
.
set_comp
(
comp
);
FilterItem
&
left_item
=
filter_unit
.
left
();
FilterItem
&
right_item
=
filter_unit
.
right
();
...
...
src/observer/sql/stmt/filter_stmt.h
浏览文件 @
5f4ea56d
...
...
@@ -109,7 +109,7 @@ public:
return
right_
;
}
private:
CompOp
comp_
;
CompOp
comp_
=
NO_OP
;
FilterItem
left_
;
FilterItem
right_
;
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录