This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 6bf5fc6db5 [improvement](storage) For debugging problems: add session 
variable `skip_storage_engine_merge` to treat agg and unique data model as dup 
model (#11952)
6bf5fc6db5 is described below

commit 6bf5fc6db50f1c543b9c5b50bef00ceb4b60ff3e
Author: TengJianPing <[email protected]>
AuthorDate: Tue Sep 13 19:18:56 2022 +0800

    [improvement](storage) For debugging problems: add session variable 
`skip_storage_engine_merge` to treat agg and unique data model as dup model 
(#11952)
    
    For debug purpose:
    Add session variable skip_storage_engine_merge, when set to true, tables of 
aggregate key model and unique key model will be read as duplicate key model.
    Add session variable skip_delete_predicate, when set to true, rows deleted 
with delete statement will be selected.
---
 be/src/runtime/runtime_state.h                     |  9 ++++++++
 be/src/vec/exec/volap_scanner.cpp                  | 16 ++++++++++-----
 docs/en/docs/advanced/variables.md                 |  6 ++++++
 docs/zh-CN/docs/advanced/variables.md              |  6 ++++++
 .../java/org/apache/doris/common/util/Util.java    |  4 +++-
 .../java/org/apache/doris/qe/SessionVariable.java  | 24 ++++++++++++++++++++++
 gensrc/thrift/PaloInternalService.thrift           |  6 ++++++
 7 files changed, 65 insertions(+), 6 deletions(-)

diff --git a/be/src/runtime/runtime_state.h b/be/src/runtime/runtime_state.h
index 8b49f0a161..1b7042815a 100644
--- a/be/src/runtime/runtime_state.h
+++ b/be/src/runtime/runtime_state.h
@@ -349,6 +349,15 @@ public:
         return segment_v2::CompressionTypePB::SNAPPY;
     }
 
+    bool skip_storage_engine_merge() const {
+        return _query_options.__isset.skip_storage_engine_merge &&
+               _query_options.skip_storage_engine_merge;
+    }
+
+    bool skip_delete_predicate() const {
+        return _query_options.__isset.skip_delete_predicate && 
_query_options.skip_delete_predicate;
+    }
+
     const std::vector<TTabletCommitInfo>& tablet_commit_infos() const {
         return _tablet_commit_infos;
     }
diff --git a/be/src/vec/exec/volap_scanner.cpp 
b/be/src/vec/exec/volap_scanner.cpp
index efa80b36ac..4b820aa1ce 100644
--- a/be/src/vec/exec/volap_scanner.cpp
+++ b/be/src/vec/exec/volap_scanner.cpp
@@ -171,7 +171,11 @@ Status VOlapScanner::_init_tablet_reader_params(
                       ->rowset_meta()
                       ->is_segments_overlapping());
 
-    _tablet_reader_params.direct_mode = _aggregation || single_version;
+    if (_runtime_state->skip_storage_engine_merge()) {
+        _tablet_reader_params.direct_mode = true;
+    } else {
+        _tablet_reader_params.direct_mode = _aggregation || single_version;
+    }
 
     RETURN_IF_ERROR(_init_return_columns(!_tablet_reader_params.direct_mode));
 
@@ -192,10 +196,12 @@ Status VOlapScanner::_init_tablet_reader_params(
     std::copy(function_filters.cbegin(), function_filters.cend(),
               std::inserter(_tablet_reader_params.function_filters,
                             _tablet_reader_params.function_filters.begin()));
-    auto& delete_preds = _tablet->delete_predicates();
-    std::copy(delete_preds.cbegin(), delete_preds.cend(),
-              std::inserter(_tablet_reader_params.delete_predicates,
-                            _tablet_reader_params.delete_predicates.begin()));
+    if (!_runtime_state->skip_delete_predicate()) {
+        auto& delete_preds = _tablet->delete_predicates();
+        std::copy(delete_preds.cbegin(), delete_preds.cend(),
+                  std::inserter(_tablet_reader_params.delete_predicates,
+                                
_tablet_reader_params.delete_predicates.begin()));
+    }
 
     // Merge the columns in delete predicate that not in latest schema in to 
current tablet schema
     for (auto& del_pred_rs : _tablet_reader_params.delete_predicates) {
diff --git a/docs/en/docs/advanced/variables.md 
b/docs/en/docs/advanced/variables.md
index 5b388c8a05..537a271e73 100644
--- a/docs/en/docs/advanced/variables.md
+++ b/docs/en/docs/advanced/variables.md
@@ -526,3 +526,9 @@ Translated with www.DeepL.com/Translator (free version)
 * `trim_tailing_spaces_for_external_table_query`
 
   Used to control whether trim the tailing spaces while quering Hive external 
tables. The default is false.
+
+* `skip_storage_engine_merge`
+  For debugging purpose. In vectorized execution engine, in case of problems 
of reading data of Aggregate Key model and Unique Key model, setting value to 
`true` will read data as Duplicate Key model.
+
+* `skip_delete_predicate`
+  For debugging purpose. In vectorized execution engine, in case of problems 
of reading data, setting value to `true` will also read deleted data.
diff --git a/docs/zh-CN/docs/advanced/variables.md 
b/docs/zh-CN/docs/advanced/variables.md
index c548f452f9..6ce5eb836e 100644
--- a/docs/zh-CN/docs/advanced/variables.md
+++ b/docs/zh-CN/docs/advanced/variables.md
@@ -515,3 +515,9 @@ SELECT /*+ SET_VAR(query_timeout = 1, 
enable_partition_cache=true) */ sleep(3);
 - `trim_tailing_spaces_for_external_table_query`
 
   用于控制查询Hive外表时是否过滤掉字段末尾的空格。默认为false。
+
+* `skip_storage_engine_merge`
+  用于调试目的。在向量化执行引擎中,当发现读取Aggregate Key模型或者Unique 
Key模型的数据结果有问题的时候,把此变量的值设置为`true`,将会把Aggregate Key模型或者Unique Key模型的数据当成Duplicate 
Key模型读取。
+
+* `skip_delete_predicate`
+  用于调试目的。在向量化执行引擎中,当发现读取表的数据结果有误的时候,把此变量的值设置为`true`,将会把被删除的数据当成正常数据读取。
\ No newline at end of file
diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/util/Util.java 
b/fe/fe-core/src/main/java/org/apache/doris/common/util/Util.java
index 0d5cf4eed7..f1f6fc6282 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/common/util/Util.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/Util.java
@@ -455,7 +455,9 @@ public class Util {
     }
 
     public static boolean showHiddenColumns() {
-        return ConnectContext.get() != null && 
ConnectContext.get().getSessionVariable().showHiddenColumns();
+        return ConnectContext.get() != null && (
+            ConnectContext.get().getSessionVariable().showHiddenColumns()
+            || 
ConnectContext.get().getSessionVariable().skipStorageEngineMerge());
     }
 
     public static String escapeSingleRegex(String s) {
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 da79ae0410..a12ee9059c 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
@@ -211,6 +211,10 @@ public class SessionVariable implements Serializable, 
Writable {
 
     public static final String ENABLE_LOCAL_EXCHANGE = "enable_local_exchange";
 
+    public static final String SKIP_STORAGE_ENGINE_MERGE = 
"skip_storage_engine_merge";
+
+    public static final String SKIP_DELETE_PREDICATE = "skip_delete_predicate";
+
     // session origin value
     public Map<Field, String> sessionOriginValue = new HashMap<Field, 
String>();
     // check stmt is or not [select /*+ SET_VAR(...)*/ ...]
@@ -530,6 +534,18 @@ public class SessionVariable implements Serializable, 
Writable {
     @VariableMgr.VarAttr(name = ENABLE_LOCAL_EXCHANGE)
     public boolean enableLocalExchange = false;
 
+    /**
+     * For debugg purpose, dont' merge unique key and agg key when reading 
data.
+     */
+    @VariableMgr.VarAttr(name = SKIP_STORAGE_ENGINE_MERGE)
+    public boolean skipStorageEngineMerge = false;
+
+    /**
+     * For debugg purpose, skip delte predicate when reading data.
+     */
+    @VariableMgr.VarAttr(name = SKIP_DELETE_PREDICATE)
+    public boolean skipDeletePredicate = false;
+
     public String getBlockEncryptionMode() {
         return blockEncryptionMode;
     }
@@ -843,6 +859,10 @@ public class SessionVariable implements Serializable, 
Writable {
         this.showHiddenColumns = showHiddenColumns;
     }
 
+    public boolean skipStorageEngineMerge() {
+        return skipStorageEngineMerge;
+    }
+
     public boolean isAllowPartitionColumnNullable() {
         return allowPartitionColumnNullable;
     }
@@ -1124,6 +1144,10 @@ public class SessionVariable implements Serializable, 
Writable {
         
tResult.setFragmentTransmissionCompressionCodec(fragmentTransmissionCompressionCodec);
         tResult.setEnableLocalExchange(enableLocalExchange);
 
+        tResult.setSkipStorageEngineMerge(skipStorageEngineMerge);
+
+        tResult.setSkipDeletePredicate(skipDeletePredicate);
+
         return tResult;
     }
 
diff --git a/gensrc/thrift/PaloInternalService.thrift 
b/gensrc/thrift/PaloInternalService.thrift
index c1c9f97d07..d9911e6141 100644
--- a/gensrc/thrift/PaloInternalService.thrift
+++ b/gensrc/thrift/PaloInternalService.thrift
@@ -169,6 +169,12 @@ struct TQueryOptions {
   46: optional string fragment_transmission_compression_codec;
 
   47: optional bool enable_local_exchange;
+
+  // For debug purpose, dont' merge unique key and agg key when reading data.
+  48: optional bool skip_storage_engine_merge = false
+
+  // For debug purpose, skip delete predicates when reading data
+  49: optional bool skip_delete_predicate = false
 }
     
 


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

Reply via email to