Skip to content

Commit 3ca80b1

Browse files
authored
fix: need_sticky field was incorrectly set to true. (#16997)
* fix: need_sticky field was incorrectly set to true. * update cargo.lock
1 parent ba9aa5f commit 3ca80b1

File tree

4 files changed

+21
-34
lines changed

4 files changed

+21
-34
lines changed

Cargo.lock

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/query/service/src/servers/http/v1/query/http_query.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -532,12 +532,10 @@ impl HttpQuery {
532532
let tenant = session.get_current_tenant();
533533
let user_name = session.get_current_user()?.name;
534534

535-
let has_temp_table_before_run = if let Some(cid) = session.get_client_session_id() {
535+
if let Some(cid) = session.get_client_session_id() {
536536
ClientSessionManager::instance().on_query_start(&cid, &user_name, &session);
537-
true
538-
} else {
539-
false
540537
};
538+
let has_temp_table_before_run = !session.temp_tbl_mgr().lock().is_empty();
541539
http_query_runtime_instance.runtime().try_spawn(
542540
async move {
543541
let state = state_clone.clone();
@@ -672,7 +670,7 @@ impl HttpQuery {
672670
let mut guard = self.has_temp_table_after_run.lock();
673671
match *guard {
674672
None => {
675-
let not_empty = !session_state.temp_tbl_mgr.lock().is_empty().0;
673+
let not_empty = !session_state.temp_tbl_mgr.lock().is_empty();
676674
*guard = Some(not_empty);
677675
ClientSessionManager::instance().on_query_finish(
678676
cid,

src/query/storages/common/session/src/temp_table.rs

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,6 @@ pub struct TempTblMgr {
5353
name_to_id: HashMap<String, u64>,
5454
id_to_table: HashMap<u64, TempTable>,
5555
next_id: u64,
56-
57-
empty_state_changed: bool,
5856
}
5957

6058
#[derive(Debug, Clone)]
@@ -71,7 +69,6 @@ impl TempTblMgr {
7169
name_to_id: HashMap::new(),
7270
id_to_table: HashMap::new(),
7371
next_id: TEMP_TBL_ID_BEGIN,
74-
empty_state_changed: false,
7572
}))
7673
}
7774

@@ -82,14 +79,8 @@ impl TempTblMgr {
8279
}
8380
}
8481

85-
pub fn is_empty(&mut self) -> (bool, bool) {
86-
let is_empty = self.id_to_table.is_empty();
87-
if self.empty_state_changed {
88-
self.empty_state_changed = false;
89-
(is_empty, true)
90-
} else {
91-
(is_empty, false)
92-
}
82+
pub fn is_empty(&mut self) -> bool {
83+
self.id_to_table.is_empty()
9384
}
9485

9586
pub fn create_table(&mut self, req: CreateTableReq) -> Result<CreateTableReply> {
@@ -137,9 +128,6 @@ impl TempTblMgr {
137128
true
138129
}
139130
};
140-
if self.id_to_table.len() == 1 {
141-
self.empty_state_changed = true;
142-
}
143131
Ok(CreateTableReply {
144132
table_id,
145133
table_id_seq: Some(0),
@@ -345,9 +333,6 @@ pub async fn drop_table_by_id(
345333
guard, req
346334
))
347335
})?;
348-
if guard.name_to_id.is_empty() {
349-
guard.empty_state_changed = true;
350-
}
351336
dir
352337
}
353338
Entry::Vacant(_) => {
@@ -371,9 +356,6 @@ pub async fn drop_table_by_id(
371356
guard, req
372357
))
373358
})?;
374-
if guard.name_to_id.is_empty() {
375-
guard.empty_state_changed = true;
376-
}
377359
}
378360
Entry::Vacant(_) => {
379361
return Ok(None);

tests/suites/1_stateful/09_http_handler/09_0008_forward.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010
logging.basicConfig(level=logging.ERROR, format="%(asctime)s %(levelname)s %(message)s")
1111

1212

13-
def do_query(query, port=8000, session=None, node_id=None):
13+
def do_query(query, port=8000, session=None, node_id=None, wait=100):
1414
url = f"http://localhost:{port}/v1/query"
1515
query_payload = {
1616
"sql": query,
17-
"pagination": {"wait_time_secs": 100, "max_rows_per_page": 2},
17+
"pagination": {"wait_time_secs": wait, "max_rows_per_page": 2},
1818
}
1919
if session:
2020
query_payload["session"] = session
@@ -88,15 +88,22 @@ def test_query():
8888
assert resp.status_code == 400, resp.text
8989

9090

91+
def test_initial_response():
92+
sql = "select * from numbers(1000000000000) ignore_result"
93+
resp = do_query(sql, wait=1).json()
94+
assert not (resp.get("session").get("need_sticky")), resp
95+
96+
9197
def main():
98+
test_initial_response()
99+
92100
# only test under cluster mode
93101
query_resp = do_query("select count(*) from system.clusters").json()
94102
num_nodes = int(query_resp.get("data")[0][0])
95103
if num_nodes == 1:
96104
return
97105

98-
# test_query()
99-
106+
test_query()
100107
test_txn()
101108

102109

0 commit comments

Comments
 (0)