Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
野花太放肆
oceanbase
提交
0ac29fa0
O
oceanbase
项目概览
野花太放肆
/
oceanbase
与 Fork 源项目一致
Fork自
oceanbase / oceanbase
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
oceanbase
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0ac29fa0
编写于
2月 14, 2023
作者:
O
obdev
提交者:
ob-robot
2月 14, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix reading invalid 8 bytes column in vectorized query.
上级
9abe9670
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
21 addition
and
3 deletion
+21
-3
src/share/datum/ob_datum.h
src/share/datum/ob_datum.h
+20
-2
src/storage/blocksstable/ob_micro_block_reader.cpp
src/storage/blocksstable/ob_micro_block_reader.cpp
+1
-1
未找到文件。
src/share/datum/ob_datum.h
浏览文件 @
0ac29fa0
...
...
@@ -192,7 +192,10 @@ public:
static
uint32_t
get_reserved_size
(
const
ObObjDatumMapType
type
);
// From ObObj, the caller is responsible for ensuring %ptr_ has enough memory
inline
int
from_obj
(
const
ObObj
&
obj
,
const
ObObjDatumMapType
map_type
);
inline
int
from_storage_datum
(
const
ObDatum
&
datum
,
const
ObObjDatumMapType
map_type
);
inline
bool
need_copy_for_encoding_column_in_flat_format
(
const
ObDatum
&
datum
,
const
ObObjDatumMapType
map_type
);
inline
int
from_storage_datum
(
const
ObDatum
&
datum
,
const
ObObjDatumMapType
map_type
,
bool
need_copy
=
false
);
// From ObObj, the caller is responsible for ensuring %ptr_ has enough memory
inline
int
from_obj
(
const
ObObj
&
obj
);
inline
int64_t
checksum
(
const
int64_t
current
)
const
;
...
...
@@ -725,7 +728,14 @@ inline int ObDatum::from_obj(const ObObj &obj, const ObObjDatumMapType map_type)
return
ret
;
}
inline
int
ObDatum
::
from_storage_datum
(
const
ObDatum
&
datum
,
const
ObObjDatumMapType
map_type
)
inline
bool
ObDatum
::
need_copy_for_encoding_column_in_flat_format
(
const
ObDatum
&
datum
,
const
ObObjDatumMapType
map_type
)
{
return
OBJ_DATUM_STRING
==
map_type
&&
sizeof
(
uint64_t
)
==
datum
.
len_
;
}
inline
int
ObDatum
::
from_storage_datum
(
const
ObDatum
&
datum
,
const
ObObjDatumMapType
map_type
,
bool
need_copy
)
{
int
ret
=
common
::
OB_SUCCESS
;
if
(
datum
.
is_ext
())
{
...
...
@@ -733,6 +743,14 @@ inline int ObDatum::from_storage_datum(const ObDatum &datum, const ObObjDatumMap
COMMON_LOG
(
WARN
,
"Invalid argument for ext storage datum to datum"
,
K
(
ret
),
K
(
datum
));
}
else
if
(
datum
.
is_null
())
{
set_null
();
}
else
if
(
need_copy
&&
need_copy_for_encoding_column_in_flat_format
(
datum
,
map_type
))
{
// 1. When need_copy is true, it means that we project multiple rows at one time.
// 2. Datum buffer will be reset each time in ObDASScanOp::reset_access_datums_ptr,
// so it is safe to deep copy 8 bytes column with flat format micro block into datum buffer.
// 3. We project one row each time in ObRow2ExprsProjector::project, so we will not
// deep copy 8 bytes column with flat format micro block into datum buffer.
memcpy
(
no_cv
(
ptr_
),
datum
.
ptr_
,
datum
.
len_
);
pack_
=
datum
.
pack_
;
}
else
{
switch
(
map_type
)
{
case
OBJ_DATUM_NULL
:
{
datum2datum
<
OBJ_DATUM_NULL
>
(
datum
);
break
;
}
...
...
src/storage/blocksstable/ob_micro_block_reader.cpp
浏览文件 @
0ac29fa0
...
...
@@ -653,7 +653,7 @@ int ObMicroBlockReader::get_rows(
LOG_WARN
(
"Fail to transfer datum"
,
K
(
ret
),
K
(
i
),
K
(
idx
),
K
(
row_idx
),
K
(
default_row
));
}
LOG_TRACE
(
"Transfer nop value"
,
K
(
ret
),
K
(
idx
),
K
(
row_idx
),
K
(
col_idx
),
K
(
default_row
));
}
else
if
(
OB_FAIL
(
datum
.
from_storage_datum
(
row_buf
.
storage_datums_
[
col_idx
],
map_types
.
at
(
i
))))
{
}
else
if
(
OB_FAIL
(
datum
.
from_storage_datum
(
row_buf
.
storage_datums_
[
col_idx
],
map_types
.
at
(
i
)
,
true
)))
{
LOG_WARN
(
"Failed to from storage datum"
,
K
(
ret
),
K
(
idx
),
K
(
row_idx
),
K
(
col_idx
),
K
(
row_buf
.
storage_datums_
[
col_idx
]),
KPC_
(
header
));
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录