Skip to content

Commit 4498359

Browse files
authored
fix: create temp table as select not work in HTTP handler. (#18304)
1 parent 99c8413 commit 4498359

21 files changed

+24
-24
lines changed

src/query/service/src/interpreters/interpreter_table_create.rs

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,9 @@ impl CreateTableInterpreter {
214214
if !reply.new_table && self.plan.create_option != CreateOption::CreateOrReplace {
215215
return Ok(PipelineBuildResult::create());
216216
}
217+
if let Some(prefix) = req.table_meta.options.get(OPT_KEY_TEMP_PREFIX).cloned() {
218+
self.register_temp_table(prefix).await?;
219+
}
217220

218221
let table_id = reply.table_id;
219222
let prev_table_id = reply.prev_table_id;
@@ -378,18 +381,7 @@ impl CreateTableInterpreter {
378381

379382
let reply = catalog.create_table(req.clone()).await?;
380383
if let Some(prefix) = req.table_meta.options.get(OPT_KEY_TEMP_PREFIX).cloned() {
381-
let session = self.ctx.get_current_session();
382-
if let Some(id) = session.get_client_session_id() {
383-
let client_session_manager = ClientSessionManager::instance();
384-
client_session_manager.add_temp_tbl_mgr(prefix, session.temp_tbl_mgr().clone());
385-
client_session_manager
386-
.refresh_session_handle(
387-
self.ctx.get_tenant(),
388-
self.ctx.get_current_user()?.name,
389-
&id,
390-
)
391-
.await?;
392-
}
384+
self.register_temp_table(prefix).await?;
393385
}
394386

395387
if !req.table_meta.options.contains_key(OPT_KEY_TEMP_PREFIX) && !catalog.is_external() {
@@ -531,6 +523,22 @@ impl CreateTableInterpreter {
531523
.build_attach_table_request(storage_prefix, &self.plan)
532524
.await
533525
}
526+
527+
async fn register_temp_table(&self, prefix: String) -> Result<()> {
528+
let session = self.ctx.get_current_session();
529+
if let Some(id) = session.get_client_session_id() {
530+
let client_session_manager = ClientSessionManager::instance();
531+
client_session_manager.add_temp_tbl_mgr(prefix, session.temp_tbl_mgr().clone());
532+
client_session_manager
533+
.refresh_session_handle(
534+
self.ctx.get_tenant(),
535+
self.ctx.get_current_user()?.name,
536+
&id,
537+
)
538+
.await?;
539+
}
540+
Ok(())
541+
}
534542
}
535543

536544
pub fn is_valid_column(name: &str) -> Result<()> {

tests/sqllogictests/suites/base/09_fuse_engine/09_0048_issue_17936.sql renamed to tests/sqllogictests/suites/base/09_fuse_engine/09_0048_issue_17936.test

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ WHEN NOT MATCHED THEN
2121

2222
query I
2323
select count(*) from target_table;
24-
---
24+
----
2525
2
2626

2727
statement ok
@@ -35,7 +35,7 @@ WHEN NOT MATCHED THEN
3535

3636
query I
3737
select count(*) from target_table;
38-
---
38+
----
3939
4
4040

4141
query I

0 commit comments

Comments
 (0)