This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch branch-2.1 in repository https://gitbox.apache.org/repos/asf/doris.git
commit c998e2f714cb6b75a622ef23f6272f93fdc27a97 Author: zy-kkk <[email protected]> AuthorDate: Sat Apr 27 01:34:35 2024 +0800 [Enhancement](planner) Support string input for sql_select_limit (#34177) --- .../org/apache/doris/qe/VariableVarConverters.java | 23 ++++++++++++++++++++++ .../session_variable/test_default_limit.groovy | 14 +++++++++++++ 2 files changed, 37 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/VariableVarConverters.java b/fe/fe-core/src/main/java/org/apache/doris/qe/VariableVarConverters.java index bea61557442..789e9933daa 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/VariableVarConverters.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/VariableVarConverters.java @@ -48,6 +48,8 @@ public class VariableVarConverters { converters.put(SessionVariable.RUNTIME_FILTER_TYPE, runtimeFilterTypeConverter); ValidatePasswordPolicyConverter validatePasswordPolicyConverter = new ValidatePasswordPolicyConverter(); converters.put(GlobalVariable.VALIDATE_PASSWORD_POLICY, validatePasswordPolicyConverter); + SqlSelectLimitConverter sqlSelectLimitConverter = new SqlSelectLimitConverter(); + converters.put(SessionVariable.SQL_SELECT_LIMIT, sqlSelectLimitConverter); } public static Boolean hasConverter(String varName) { @@ -96,6 +98,27 @@ public class VariableVarConverters { } } + // Converter to convert sql select limit variable + public static class SqlSelectLimitConverter implements VariableVarConverterI { + @Override + public Long encode(String value) throws DdlException { + if (value.equalsIgnoreCase("DEFAULT")) { + return Long.MAX_VALUE; + } else { + try { + return Long.parseLong(value); + } catch (NumberFormatException e) { + throw new DdlException("Invalid sql_select_limit value: " + value); + } + } + } + + @Override + public String decode(Long value) throws DdlException { + return String.valueOf(value); + } + } + public static class ValidatePasswordPolicyConverter implements VariableVarConverterI { @Override public Long encode(String value) throws DdlException { diff --git a/regression-test/suites/query_p0/session_variable/test_default_limit.groovy b/regression-test/suites/query_p0/session_variable/test_default_limit.groovy index 4133ccc3397..2ce3b647142 100644 --- a/regression-test/suites/query_p0/session_variable/test_default_limit.groovy +++ b/regression-test/suites/query_p0/session_variable/test_default_limit.groovy @@ -277,5 +277,19 @@ suite('test_default_limit', "arrow_flight_sql") { order by c.k1, baseall.k2 limit 8 ''' assertEquals(res.size(), 8) + + // Test setting sql_select_limit with the string "DEFAULT" + sql 'set sql_select_limit = "DEFAULT"' + res = sql 'select * from baseall' + assertEquals(res.size(), 16) // Expecting the default limit to show all rows + + // Test setting sql_select_limit with an explicit numeric string + sql 'set sql_select_limit = "10"' + res = sql 'select * from baseall' + assertEquals(res.size(), 10) // Expecting the limit to restrict the results to 10 rows + + // Reset the sql_select_limit to no limit for further tests + sql 'set sql_select_limit = -1' + } } \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
