Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2dot5
ClickHouse
提交
b086a78f
C
ClickHouse
项目概览
2dot5
/
ClickHouse
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
ClickHouse
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
b086a78f
编写于
12月 27, 2020
作者:
A
alexey-milovidov
提交者:
GitHub
12月 27, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update FunctionBinaryArithmetic.h
上级
80b96f2c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
12 addition
and
7 deletion
+12
-7
src/Functions/FunctionBinaryArithmetic.h
src/Functions/FunctionBinaryArithmetic.h
+12
-7
未找到文件。
src/Functions/FunctionBinaryArithmetic.h
浏览文件 @
b086a78f
...
...
@@ -767,7 +767,7 @@ class FunctionBinaryArithmetic : public IFunction
template
<
class
LeftDataType
,
class
RightDataType
,
class
ResultDataType
>
ColumnPtr
executeNumericWithDecimal
(
const
auto
&
left
,
const
auto
&
right
,
const
auto
&
left
,
const
auto
&
right
,
const
ColumnConst
*
const
col_left_const
,
const
ColumnConst
*
const
col_right_const
,
const
auto
*
const
col_left
,
const
auto
*
const
col_right
,
size_t
col_left_size
)
const
...
...
@@ -789,7 +789,8 @@ class FunctionBinaryArithmetic : public IFunction
typename
ColVecResult
::
MutablePtr
col_res
=
nullptr
;
const
ResultDataType
type
=
[
&
]
{
const
ResultDataType
type
=
[
&
]
{
if
constexpr
(
left_is_decimal
&&
IsFloatingPoint
<
RightDataType
>
)
return
RightDataType
();
else
if
constexpr
(
right_is_decimal
&&
IsFloatingPoint
<
LeftDataType
>
)
...
...
@@ -798,7 +799,8 @@ class FunctionBinaryArithmetic : public IFunction
return
decimalResultType
<
is_multiply
,
is_division
>
(
left
,
right
);
}();
const
ResultType
scale_a
=
[
&
]
{
const
ResultType
scale_a
=
[
&
]
{
if
constexpr
(
IsDataTypeDecimal
<
RightDataType
>
&&
is_division
)
return
right
.
getScaleMultiplier
();
// the division impl uses only the scale_a
else
if
constexpr
(
result_is_decimal
)
...
...
@@ -825,7 +827,8 @@ class FunctionBinaryArithmetic : public IFunction
return
1
;
// the default value which won't cause any re-scale
}();
const
ResultType
scale_b
=
[
&
]
{
const
ResultType
scale_b
=
[
&
]
{
if
constexpr
(
result_is_decimal
)
{
if
constexpr
(
is_multiply
)
...
...
@@ -1000,9 +1003,9 @@ public:
const
TimezoneMixin
*
tz
=
nullptr
;
if
constexpr
(
std
::
is_same_v
<
RightDataType
,
DataTypeDateTime
>
)
tz
=
&
right
;
tz
=
&
right
;
if
constexpr
(
std
::
is_same_v
<
LeftDataType
,
DataTypeDateTime
>
)
tz
=
&
left
;
tz
=
&
left
;
type_res
=
std
::
make_shared
<
ResultDataType
>
(
*
tz
);
}
else
...
...
@@ -1139,12 +1142,14 @@ public:
const
ColVecT1
*
const
col_right
=
checkAndGetColumn
<
ColVecT1
>
(
col_right_raw
);
if
constexpr
(
IsDataTypeDecimal
<
LeftDataType
>
||
IsDataTypeDecimal
<
RightDataType
>
)
{
return
executeNumericWithDecimal
<
LeftDataType
,
RightDataType
,
ResultDataType
>
(
left
,
right
,
col_left_const
,
col_right_const
,
col_left
,
col_right
,
col_left_size
);
else
//can't avoid else and another indentation level, otherwise the compiler would try to instantiate
}
else
// can't avoid else and another indentation level, otherwise the compiler would try to instantiate
// ColVecResult for Decimals which would lead to a compile error.
{
using
OpImpl
=
BinaryOperationImpl
<
T0
,
T1
,
Op
<
T0
,
T1
>
,
ResultType
>
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录