github-actions[bot] commented on code in PR #69998:
URL: https://github.com/apache/doris/pull/69998#discussion_r4446841050


##########
fe/fe-core/src/main/java/org/apache/doris/qe/ShortCircuitQueryContext.java:
##########
@@ -82,14 +92,16 @@ List<Type> getReturnTypes() {
         return returnTypes;
     }
 
-    public ShortCircuitQueryContext(Planner planner, Queriable analzyedQuery) 
throws TException {
+    public ShortCircuitQueryContext(Planner planner, Queriable analzyedQuery,
+            SessionVariable sessionVariable) throws TException {
         this.planner = planner;
         this.serializedDescTable = ByteString.copyFrom(
                 new 
TSerializer().serialize(planner.getDescTable().toThrift()));
         TQueryOptions options = planner.getQueryOptions() != null ? 
planner.getQueryOptions() : new TQueryOptions();

Review Comment:
   [P1] Invalidate cached point queries when sql_select_limit changes
   
   `sql_select_limit` is an FE-only result-affecting variable 
(`affectQueryResultInExecution=true`) and is absent from both 
`SessionVariable.toThrift()` and `getAffectQueryResultInPlanVariables()`. With 
`enable_condition_cache=false`, changing it still passes `isReusable()`. 
`AddDefaultLimit` would add `LIMIT 0` (or another finite limit) during a normal 
replan, but the direct cached point-query branch returns the row. Include this 
variable in the reuse fingerprint (and audit the other FE execution-only limit 
controls), or force a replan when it changes.



##########
be/src/service/point_query_executor.cpp:
##########
@@ -26,6 +26,7 @@
 #include <google/protobuf/extension_set.h>
 #include <stdlib.h>
 
+#include <algorithm>
 #include <climits>

Review Comment:
   [P1] Do not index the descriptor map for the hidden delete-sign UID
   
   `get_missing_and_include_cids()` always adds the tablet's delete-sign UID, 
but `skip_delete_sign` leaves that hidden column out of the point-query 
descriptor. On a table with a partial row store, `missing_col_uids()` therefore 
contains a UID absent from `get_col_uid_to_idx()`. The new `.at(cid)` here 
throws `std::out_of_range` while constructing the column-store-disabled error, 
escaping `_tablet_fetch_data()`'s Status-only boundary and potentially 
terminating the BE worker instead of returning the intended error. Resolve the 
name from the tablet schema as before, or skip/handle UIDs without descriptor 
slots; the fallback must also avoid reading a column that is not represented in 
the result block.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to