From 29dd28198e7bf60bee8cd2f8b169937460a56cc7 Mon Sep 17 00:00:00 2001 From: Hengfei Yang Date: Mon, 20 Mar 2023 12:41:58 +0800 Subject: [PATCH] fix: allow limit zero in context sql_mode (#320) --- src/service/search/sql.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/service/search/sql.rs b/src/service/search/sql.rs index 22da321100..1f5eaed1ff 100644 --- a/src/service/search/sql.rs +++ b/src/service/search/sql.rs @@ -30,7 +30,7 @@ use crate::service::stream::get_stream_setting_fts_fields; use crate::service::{db, file_list, logs}; const SQL_DELIMITERS: [u8; 10] = [b' ', b'*', b'(', b')', b'<', b'>', b',', b';', b'=', b'!']; -const SQL_DEFAULT_LIMIT: usize = 1000; +const SQL_DEFAULT_FULL_MODE_LIMIT: usize = 1000; #[derive(Clone, Debug, Serialize)] pub struct Sql { @@ -267,8 +267,10 @@ impl Sql { if meta.limit == 0 { meta.offset = req_query.from as usize; meta.limit = req_query.size as usize; - if meta.limit == 0 { - meta.limit = SQL_DEFAULT_LIMIT; + if meta.limit == 0 && sql_mode.eq(&SqlMode::Full) { + // sql mode context, allow limit 0, used to no hits, but return aggs + // sql mode full, disallow without limit, default limit 1000 + meta.limit = SQL_DEFAULT_FULL_MODE_LIMIT; } origin_sql = if meta.order_by.is_empty() { format!(