From bad2281d4cf391739cbbae7031c80aca4c7ab0b4 Mon Sep 17 00:00:00 2001 From: zy-kkk Date: Fri, 26 Apr 2024 16:16:32 +0800 Subject: [PATCH 1/3] [Enhancement](planner) Support string input for sql_select_limit --- .../doris/qe/VariableVarConverters.java | 26 +++++++++++++++++++ .../test_default_limit.groovy | 14 ++++++++++ 2 files changed, 40 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 bea61557442419..85ca9316e20b37 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,30 @@ public String decode(Long value) throws DdlException { } } + // 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 { + if (value == Long.MAX_VALUE) { + return "DEFAULT"; + } + 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 4133ccc33976be..2ce3b647142ae4 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 From bd24509deea8b29fa1e5be9329944ca9f815fa8d Mon Sep 17 00:00:00 2001 From: zy-kkk Date: Fri, 26 Apr 2024 16:37:37 +0800 Subject: [PATCH 2/3] 2 --- .../main/java/org/apache/doris/qe/VariableVarConverters.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 85ca9316e20b37..7c9ba9fc9b3e82 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 @@ -116,7 +116,7 @@ public Long encode(String value) throws DdlException { @Override public String decode(Long value) throws DdlException { if (value == Long.MAX_VALUE) { - return "DEFAULT"; + return String.valueOf(Long.MAX_VALUE); } return String.valueOf(value); } From df227276488155d83cf5346e024345609e14a391 Mon Sep 17 00:00:00 2001 From: zy-kkk Date: Fri, 26 Apr 2024 16:39:37 +0800 Subject: [PATCH 3/3] 3 --- .../main/java/org/apache/doris/qe/VariableVarConverters.java | 3 --- 1 file changed, 3 deletions(-) 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 7c9ba9fc9b3e82..789e9933daa8ec 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 @@ -115,9 +115,6 @@ public Long encode(String value) throws DdlException { @Override public String decode(Long value) throws DdlException { - if (value == Long.MAX_VALUE) { - return String.valueOf(Long.MAX_VALUE); - } return String.valueOf(value); } }