Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2dot5
ClickHouse
提交
f0292f99
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,发现更多精彩内容 >>
提交
f0292f99
编写于
7月 16, 2018
作者:
A
Alexey Milovidov
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'amosbird-master'
上级
4d1c4704
77ed75e1
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
44 addition
and
9 deletion
+44
-9
dbms/src/Interpreters/InterpreterDropQuery.cpp
dbms/src/Interpreters/InterpreterDropQuery.cpp
+20
-9
dbms/src/Parsers/ASTDropQuery.cpp
dbms/src/Parsers/ASTDropQuery.cpp
+3
-0
dbms/tests/queries/0_stateless/00670_truncate_temporary_table.reference
...ries/0_stateless/00670_truncate_temporary_table.reference
+5
-0
dbms/tests/queries/0_stateless/00670_truncate_temporary_table.sql
...ts/queries/0_stateless/00670_truncate_temporary_table.sql
+16
-0
未找到文件。
dbms/src/Interpreters/InterpreterDropQuery.cpp
浏览文件 @
f0292f99
...
...
@@ -121,18 +121,29 @@ BlockIO InterpreterDropQuery::executeToTemporaryTable(String & table_name, ASTDr
{
if
(
kind
==
ASTDropQuery
::
Kind
::
Detach
)
throw
Exception
(
"Unable to detach temporary table."
,
ErrorCodes
::
SYNTAX_ERROR
);
else
if
(
kind
==
ASTDropQuery
::
Kind
::
Drop
)
else
{
StoragePtr
table
=
(
context
.
hasSessionContext
()
?
context
.
getSessionContext
()
:
context
).
tryRemoveExternalTable
(
table_name
);
auto
&
context_handle
=
context
.
hasSessionContext
()
?
context
.
getSessionContext
()
:
context
;
StoragePtr
table
=
context_handle
.
tryGetExternalTable
(
table_name
);
if
(
table
)
{
table
->
shutdown
();
/// If table was already dropped by anyone, an exception will be thrown
auto
table_lock
=
table
->
lockForAlter
(
__PRETTY_FUNCTION__
);
/// Delete table data
table
->
drop
();
table
->
is_dropped
=
true
;
return
{};
if
(
kind
==
ASTDropQuery
::
Kind
::
Truncate
)
{
/// If table was already dropped by anyone, an exception will be thrown
auto
table_lock
=
table
->
lockDataForAlter
(
__PRETTY_FUNCTION__
);
/// Drop table data, don't touch metadata
table
->
truncate
(
query_ptr
);
}
else
if
(
kind
==
ASTDropQuery
::
Kind
::
Drop
)
{
context_handle
.
tryRemoveExternalTable
(
table_name
);
table
->
shutdown
();
/// If table was already dropped by anyone, an exception will be thrown
auto
table_lock
=
table
->
lockForAlter
(
__PRETTY_FUNCTION__
);
/// Delete table data
table
->
drop
();
table
->
is_dropped
=
true
;
}
}
}
...
...
dbms/src/Parsers/ASTDropQuery.cpp
浏览文件 @
f0292f99
...
...
@@ -53,6 +53,9 @@ void ASTDropQuery::formatQueryImpl(const FormatSettings & settings, FormatState
else
throw
Exception
(
"Not supported kind of drop query."
,
ErrorCodes
::
SYNTAX_ERROR
);
if
(
temporary
)
settings
.
ostr
<<
"TEMPORARY "
;
settings
.
ostr
<<
((
table
.
empty
()
&&
!
database
.
empty
())
?
"DATABASE "
:
"TABLE "
);
if
(
if_exists
)
...
...
dbms/tests/queries/0_stateless/00670_truncate_temporary_table.reference
0 → 100644
浏览文件 @
f0292f99
======Before Truncate======
0
======After Truncate And Empty======
======After Truncate And Insert Data======
0
dbms/tests/queries/0_stateless/00670_truncate_temporary_table.sql
0 → 100644
浏览文件 @
f0292f99
drop
temporary
table
if
exists
test
;
create
temporary
table
test
(
id
int
);
select
'======Before Truncate======'
;
insert
into
test
values
(
0
);
select
*
from
test
;
select
'======After Truncate And Empty======'
;
truncate
temporary
table
test
;
select
*
from
test
;
select
'======After Truncate And Insert Data======'
;
insert
into
test
values
(
0
);
select
*
from
test
;
drop
temporary
table
test
;
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录