From bf903d4bb1855fd8bcc9c0c3c6c87541948e1327 Mon Sep 17 00:00:00 2001 From: Yijia Su Date: Sat, 8 Oct 2022 12:56:06 +0800 Subject: [PATCH 1/8] fix doc --- .../Show-Statements/SHOW-ALTER-TABLE-MATERIALIZED-VIEW.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-ALTER-TABLE-MATERIALIZED-VIEW.md b/docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-ALTER-TABLE-MATERIALIZED-VIEW.md index 62ee04bd969e68..ba1f6590527a5f 100644 --- a/docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-ALTER-TABLE-MATERIALIZED-VIEW.md +++ b/docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-ALTER-TABLE-MATERIALIZED-VIEW.md @@ -32,7 +32,7 @@ SHOW ALTER TABLE MATERIALIZED VIEW ### Description -该命令用于查看通过 [CREATE-MATERIALIZED-VIEW](../../sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-MATERIALIZED-VIEW.md) 语句提交的创建物化视图作业的执行情况。 +该命令用于查看通过 [CREATE-MATERIALIZED-VIEW](../../sql-reference/Data-Definition-Statements/Create/CREATE-MATERIALIZED-VIEW) 语句提交的创建物化视图作业的执行情况。 > 该语句等同于 `SHOW ALTER TABLE ROLLUP`; From af5b081b1b5dc42ced01bd0a5c3cac76e812a78a Mon Sep 17 00:00:00 2001 From: Yijia Su Date: Thu, 8 Sep 2022 17:11:37 +0800 Subject: [PATCH 2/8] Cancel the return value default 65535 limit. Signed-off-by: Yijia Su --- .../org/apache/doris/planner/SingleNodePlanner.java | 5 +---- .../main/java/org/apache/doris/qe/ConnectContext.java | 10 ++++++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java index 24d07d98e39e58..d27e76e74fd388 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java @@ -235,10 +235,7 @@ private void unmarkCollectionSlots(QueryStmt stmt) { */ private PlanNode createQueryPlan(QueryStmt stmt, Analyzer analyzer, long defaultOrderByLimit) throws UserException { - long newDefaultOrderByLimit = defaultOrderByLimit; - if (newDefaultOrderByLimit == -1) { - newDefaultOrderByLimit = 65535; - } + long newDefaultOrderByLimit = analyzer.getContext().getDefaultOrderByLimit(); PlanNode root; if (stmt instanceof SelectStmt) { SelectStmt selectStmt = (SelectStmt) stmt; diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java index 03c75400dec121..45197e66674201 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java @@ -79,6 +79,8 @@ public class ConnectContext { protected volatile MysqlCapability capability; // Indicate if this client is killed. protected volatile boolean isKilled; + // Default Order By Limit + protected volatile int defaultOrderByLimit = -1; // Db protected volatile String currentDb = ""; protected volatile long currentDbId = -1; @@ -476,6 +478,14 @@ public void setKilled() { isKilled = true; } + public int getDefaultOrderByLimit() { + return defaultOrderByLimit; + } + + public void setDefaultOrderByLimit(int defaultOrderByLimit) { + this.defaultOrderByLimit = defaultOrderByLimit; + } + public void setQueryId(TUniqueId queryId) { this.queryId = queryId; if (connectScheduler != null && !Strings.isNullOrEmpty(traceId)) { From fe8e5300469ff875b6a1800cfafb08a43c09a704 Mon Sep 17 00:00:00 2001 From: Yijia Su Date: Thu, 8 Sep 2022 18:00:57 +0800 Subject: [PATCH 3/8] Correction logic --- .../org/apache/doris/planner/SingleNodePlanner.java | 10 +++++++++- .../main/java/org/apache/doris/qe/ConnectContext.java | 10 ---------- .../main/java/org/apache/doris/qe/SessionVariable.java | 6 ++++++ 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java index d27e76e74fd388..65452a7441eb93 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java @@ -235,7 +235,15 @@ private void unmarkCollectionSlots(QueryStmt stmt) { */ private PlanNode createQueryPlan(QueryStmt stmt, Analyzer analyzer, long defaultOrderByLimit) throws UserException { - long newDefaultOrderByLimit = analyzer.getContext().getDefaultOrderByLimit(); + long newDefaultOrderByLimit = defaultOrderByLimit; + if (newDefaultOrderByLimit == -1){ + if (analyzer.getContext().getSessionVariable().defaultOrderByLimit <= -1){ + newDefaultOrderByLimit = Long.MAX_VALUE; + }else { + newDefaultOrderByLimit = analyzer.getContext().getSessionVariable().defaultOrderByLimit; + } + + } PlanNode root; if (stmt instanceof SelectStmt) { SelectStmt selectStmt = (SelectStmt) stmt; diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java index 45197e66674201..03c75400dec121 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java @@ -79,8 +79,6 @@ public class ConnectContext { protected volatile MysqlCapability capability; // Indicate if this client is killed. protected volatile boolean isKilled; - // Default Order By Limit - protected volatile int defaultOrderByLimit = -1; // Db protected volatile String currentDb = ""; protected volatile long currentDbId = -1; @@ -478,14 +476,6 @@ public void setKilled() { isKilled = true; } - public int getDefaultOrderByLimit() { - return defaultOrderByLimit; - } - - public void setDefaultOrderByLimit(int defaultOrderByLimit) { - this.defaultOrderByLimit = defaultOrderByLimit; - } - public void setQueryId(TUniqueId queryId) { this.queryId = queryId; if (connectScheduler != null && !Strings.isNullOrEmpty(traceId)) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java index e28e4545123da1..5c5f75754f8c7e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java @@ -203,6 +203,8 @@ public class SessionVariable implements Serializable, Writable { static final String SESSION_CONTEXT = "session_context"; + public static final String DEFAULT_ORDER_BY_LIMIT = "default_order_by_limit"; + public static final String ENABLE_SINGLE_REPLICA_INSERT = "enable_single_replica_insert"; public static final String ENABLE_FUNCTION_PUSHDOWN = "enable_function_pushdown"; @@ -244,6 +246,10 @@ public class SessionVariable implements Serializable, Writable { @VariableMgr.VarAttr(name = ENABLE_EXCHANGE_NODE_PARALLEL_MERGE) public boolean enableExchangeNodeParallelMerge = false; + // Default Order By Limit + @VariableMgr.VarAttr(name = DEFAULT_ORDER_BY_LIMIT) + public long defaultOrderByLimit = -1; + // query timeout in second. @VariableMgr.VarAttr(name = QUERY_TIMEOUT) public int queryTimeoutS = 300; From dceaf2e851fcd413b5655cc125abf2515dc6b281 Mon Sep 17 00:00:00 2001 From: Yijia Su Date: Fri, 9 Sep 2022 11:57:17 +0800 Subject: [PATCH 4/8] change style --- .../main/java/org/apache/doris/planner/SingleNodePlanner.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java index 65452a7441eb93..9496f43584aa06 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java @@ -237,9 +237,9 @@ private PlanNode createQueryPlan(QueryStmt stmt, Analyzer analyzer, long default throws UserException { long newDefaultOrderByLimit = defaultOrderByLimit; if (newDefaultOrderByLimit == -1){ - if (analyzer.getContext().getSessionVariable().defaultOrderByLimit <= -1){ + if (analyzer.getContext().getSessionVariable().defaultOrderByLimit <= -1) { newDefaultOrderByLimit = Long.MAX_VALUE; - }else { + } else { newDefaultOrderByLimit = analyzer.getContext().getSessionVariable().defaultOrderByLimit; } From 562c6b1beae19f20fbd239238214ee40ad4ae282 Mon Sep 17 00:00:00 2001 From: Yijia Su Date: Fri, 9 Sep 2022 12:50:53 +0800 Subject: [PATCH 5/8] change style --- .../main/java/org/apache/doris/planner/SingleNodePlanner.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java index 9496f43584aa06..9fa5e35aa20427 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java @@ -236,7 +236,7 @@ private void unmarkCollectionSlots(QueryStmt stmt) { private PlanNode createQueryPlan(QueryStmt stmt, Analyzer analyzer, long defaultOrderByLimit) throws UserException { long newDefaultOrderByLimit = defaultOrderByLimit; - if (newDefaultOrderByLimit == -1){ + if (newDefaultOrderByLimit == -1) { if (analyzer.getContext().getSessionVariable().defaultOrderByLimit <= -1) { newDefaultOrderByLimit = Long.MAX_VALUE; } else { From e1bf5cf4aacee036ab62129f18a65ce5138758ba Mon Sep 17 00:00:00 2001 From: Yijia Su Date: Wed, 14 Sep 2022 12:19:03 +0800 Subject: [PATCH 6/8] ADD LOG --- .../main/java/org/apache/doris/planner/SingleNodePlanner.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java index 9fa5e35aa20427..08ae0447649c4f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java @@ -239,8 +239,10 @@ private PlanNode createQueryPlan(QueryStmt stmt, Analyzer analyzer, long default if (newDefaultOrderByLimit == -1) { if (analyzer.getContext().getSessionVariable().defaultOrderByLimit <= -1) { newDefaultOrderByLimit = Long.MAX_VALUE; + LOG.warn("The current default Order By Limit number is the maximum value of Long."); } else { newDefaultOrderByLimit = analyzer.getContext().getSessionVariable().defaultOrderByLimit; + LOG.warn("The current default Order By Limit number is {}." + newDefaultOrderByLimit); } } From 3d70ebdbd704f3cb7a3bc4a3d72feaf5d4eeb9ed Mon Sep 17 00:00:00 2001 From: Yijia Su Date: Fri, 18 Nov 2022 10:19:40 +0800 Subject: [PATCH 7/8] change --- .../java/org/apache/doris/planner/SingleNodePlanner.java | 8 +++----- .../main/java/org/apache/doris/qe/SessionVariable.java | 3 ++- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java index 08ae0447649c4f..50677acc7a4855 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/SingleNodePlanner.java @@ -236,15 +236,13 @@ private void unmarkCollectionSlots(QueryStmt stmt) { private PlanNode createQueryPlan(QueryStmt stmt, Analyzer analyzer, long defaultOrderByLimit) throws UserException { long newDefaultOrderByLimit = defaultOrderByLimit; + long defaultLimit = analyzer.getContext().getSessionVariable().defaultOrderByLimit; if (newDefaultOrderByLimit == -1) { - if (analyzer.getContext().getSessionVariable().defaultOrderByLimit <= -1) { + if (defaultLimit <= -1) { newDefaultOrderByLimit = Long.MAX_VALUE; - LOG.warn("The current default Order By Limit number is the maximum value of Long."); } else { - newDefaultOrderByLimit = analyzer.getContext().getSessionVariable().defaultOrderByLimit; - LOG.warn("The current default Order By Limit number is {}." + newDefaultOrderByLimit); + newDefaultOrderByLimit = defaultLimit; } - } PlanNode root; if (stmt instanceof SelectStmt) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java index 5c5f75754f8c7e..95fb7f8a02429c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java @@ -246,7 +246,8 @@ public class SessionVariable implements Serializable, Writable { @VariableMgr.VarAttr(name = ENABLE_EXCHANGE_NODE_PARALLEL_MERGE) public boolean enableExchangeNodeParallelMerge = false; - // Default Order By Limit + // By default, the number of Limit items after OrderBy is changed from 65535 items + // before v1.2.0 (not included), to return all items by default @VariableMgr.VarAttr(name = DEFAULT_ORDER_BY_LIMIT) public long defaultOrderByLimit = -1; From 5a09b296f0e87bfaf80158c0868528d62a370d3d Mon Sep 17 00:00:00 2001 From: Yijia Su Date: Fri, 18 Nov 2022 12:00:29 +0800 Subject: [PATCH 8/8] add docs --- docs/en/docs/advanced/variables.md | 6 +++++- docs/zh-CN/docs/advanced/variables.md | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/en/docs/advanced/variables.md b/docs/en/docs/advanced/variables.md index 806068fc3d09a1..b61a175c87bf90 100644 --- a/docs/en/docs/advanced/variables.md +++ b/docs/en/docs/advanced/variables.md @@ -176,6 +176,10 @@ Note that the comment must start with /*+ and can only follow the SELECT. Used for compatibility with MySQL clients. No practical effect. +* `default_order_by_limit` + + Used to control the default number of items returned after OrderBy. The default value is -1, and the maximum number of records after the query is returned by default, and the upper limit is the MAX_VALUE of the long data type. + * `delete_without_partition` When set to true. When using the delete command to delete partition table data, no partition is required. The delete operation will be automatically applied to all partitions. @@ -548,4 +552,4 @@ Translated with www.DeepL.com/Translator (free version) * `validate_password_policy` - Password strength verification policy. Defaults to `NONE` or `0`, i.e. no verification. Can be set to `STRONG` or `2`. When set to `STRONG` or `2`, when setting a password via the `ALTER USER` or `SET PASSWORD` commands, the password must contain any of "uppercase letters", "lowercase letters", "numbers" and "special characters". 3 items, and the length must be greater than or equal to 8. Special characters include: `~!@#$%^&*()_+|<>,.?/:;'[]{}"`. \ No newline at end of file + Password strength verification policy. Defaults to `NONE` or `0`, i.e. no verification. Can be set to `STRONG` or `2`. When set to `STRONG` or `2`, when setting a password via the `ALTER USER` or `SET PASSWORD` commands, the password must contain any of "uppercase letters", "lowercase letters", "numbers" and "special characters". 3 items, and the length must be greater than or equal to 8. Special characters include: `~!@#$%^&*()_+|<>,.?/:;'[]{}"`. diff --git a/docs/zh-CN/docs/advanced/variables.md b/docs/zh-CN/docs/advanced/variables.md index 80e1b6e4fe793a..39cf63610e6d63 100644 --- a/docs/zh-CN/docs/advanced/variables.md +++ b/docs/zh-CN/docs/advanced/variables.md @@ -174,6 +174,10 @@ SELECT /*+ SET_VAR(query_timeout = 1, enable_partition_cache=true) */ sleep(3); 用于兼容 MySQL 客户端。无实际作用。 +- `default_order_by_limit` + + 用于控制 OrderBy 以后返回的默认条数。默认值为 -1,默认返回查询后的最大条数,上限为 long 数据类型的 MAX_VALUE 值。 + - `delete_without_partition` 设置为 true 时。当使用 delete 命令删除分区表数据时,可以不指定分区。delete 操作将会自动应用到所有分区。