Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2dot5
ClickHouse
提交
74f69adc
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,体验更适合开发者的 AI 搜索 >>
提交
74f69adc
编写于
1月 26, 2017
作者:
A
artpaul
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
infer type of sharding expression [#CLICKHOUSE-2191]
上级
7b06fe6b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
12 addition
and
12 deletion
+12
-12
dbms/src/Storages/StorageFactory.cpp
dbms/src/Storages/StorageFactory.cpp
+12
-12
未找到文件。
dbms/src/Storages/StorageFactory.cpp
浏览文件 @
74f69adc
...
...
@@ -11,6 +11,7 @@
#include <DB/Interpreters/Context.h>
#include <DB/Interpreters/evaluateConstantExpression.h>
#include <DB/Interpreters/ExpressionAnalyzer.h>
#include <DB/Interpreters/getClusterName.h>
#include <DB/Storages/StorageLog.h>
...
...
@@ -469,18 +470,17 @@ StoragePtr StorageFactory::get(
/// Check that sharding_key exists in the table and has numeric type.
if
(
sharding_key
)
{
auto
ci
=
std
::
find_if
(
columns
->
begin
(),
columns
->
end
(),
[
sharding_key
]
(
const
auto
&
column
)
{
return
column
.
name
==
sharding_key
->
getColumnName
();
}
);
if
(
ci
==
columns
->
end
())
throw
Exception
(
"Sharding key column "
+
sharding_key
->
getColumnName
()
+
" doesn't exists in the list of table's columns."
,
ErrorCodes
::
BAD_ARGUMENTS
);
if
(
!
ci
->
type
->
isNumeric
())
throw
Exception
(
"Type of sharding key is "
+
ci
->
type
->
getName
()
+
", but should be one of integer type."
,
ErrorCodes
::
TYPE_MISMATCH
);
auto
sharding_expr
=
ExpressionAnalyzer
(
sharding_key
,
context
,
nullptr
,
*
columns
).
getActions
(
false
);
const
Block
&
block
=
sharding_expr
->
getSampleBlock
();
if
(
block
.
columns
()
!=
0
)
{
auto
type
=
block
.
getColumns
().
back
().
type
;
if
(
!
type
->
isNumeric
())
throw
Exception
(
"Sharding expression has type "
+
type
->
getName
()
+
", but should be one of integer type"
,
ErrorCodes
::
TYPE_MISMATCH
);
}
}
return
StorageDistributed
::
create
(
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录