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

morningman 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 293e8426056 [Fix](trino-connector) Fix the bug of query wrongs when 
using trino-connector (#32100)
293e8426056 is described below

commit 293e84260560cb366edaf86d334377db9aa7d011
Author: Tiewei Fang <43782773+bepppo...@users.noreply.github.com>
AuthorDate: Wed Mar 13 10:30:42 2024 +0800

    [Fix](trino-connector) Fix the bug of query wrongs when using 
trino-connector (#32100)
---
 .../format/table/trino_connector_jni_reader.cpp    | 40 +++++++++++-----------
 .../trinoconnector/TrinoConnectorJniScanner.java   |  2 +-
 .../source/TrinoConnectorScanNode.java             | 11 +++---
 gensrc/thrift/PlanNodes.thrift                     |  2 +-
 4 files changed, 28 insertions(+), 27 deletions(-)

diff --git a/be/src/vec/exec/format/table/trino_connector_jni_reader.cpp 
b/be/src/vec/exec/format/table/trino_connector_jni_reader.cpp
index bdd1c27e1ce..93e122ae0de 100644
--- a/be/src/vec/exec/format/table/trino_connector_jni_reader.cpp
+++ b/be/src/vec/exec/format/table/trino_connector_jni_reader.cpp
@@ -44,31 +44,31 @@ TrinoConnectorJniReader::TrinoConnectorJniReader(
         RuntimeProfile* profile, const TFileRangeDesc& range)
         : _file_slot_descs(file_slot_descs), _state(state), _profile(profile) {
     std::vector<std::string> column_names;
-    for (auto& desc : _file_slot_descs) {
+    for (const auto& desc : _file_slot_descs) {
         std::string field = desc->col_name();
         column_names.emplace_back(field);
     }
-    std::map<String, String> params;
-    params["catalog_name"] = 
range.table_format_params.trino_connector_params.catalog_name;
-    params["db_name"] = 
range.table_format_params.trino_connector_params.db_name;
-    params["table_name"] = 
range.table_format_params.trino_connector_params.table_name;
-    params["trino_connector_split"] =
-            
range.table_format_params.trino_connector_params.trino_connector_split;
-    params["trino_connector_table_handle"] =
-            
range.table_format_params.trino_connector_params.trino_connector_table_handle;
-    params["trino_connector_column_handles"] =
-            
range.table_format_params.trino_connector_params.trino_connector_column_handles;
-    params["trino_connector_column_metadata"] =
-            
range.table_format_params.trino_connector_params.trino_connector_column_metadata;
-    params["trino_connector_column_names"] =
-            
range.table_format_params.trino_connector_params.trino_connector_column_names;
-    params["trino_connector_predicate"] =
-            
range.table_format_params.trino_connector_params.trino_connector_predicate;
-    params["trino_connector_trascation_handle"] =
-            
range.table_format_params.trino_connector_params.trino_connector_trascation_handle;
+    std::map<String, String> params = {
+            {"catalog_name", 
range.table_format_params.trino_connector_params.catalog_name},
+            {"db_name", 
range.table_format_params.trino_connector_params.db_name},
+            {"table_name", 
range.table_format_params.trino_connector_params.table_name},
+            {"trino_connector_split",
+             
range.table_format_params.trino_connector_params.trino_connector_split},
+            {"trino_connector_table_handle",
+             
range.table_format_params.trino_connector_params.trino_connector_table_handle},
+            {"trino_connector_column_handles",
+             
range.table_format_params.trino_connector_params.trino_connector_column_handles},
+            {"trino_connector_column_metadata",
+             
range.table_format_params.trino_connector_params.trino_connector_column_metadata},
+            {"trino_connector_predicate",
+             
range.table_format_params.trino_connector_params.trino_connector_predicate},
+            {"trino_connector_trascation_handle",
+             
range.table_format_params.trino_connector_params.trino_connector_trascation_handle},
+            {"required_fields", join(column_names, ",")}};
 
     // Used to create trino connector options
-    for (auto& kv : 
range.table_format_params.trino_connector_params.trino_connector_options) {
+    for (const auto& kv :
+         
range.table_format_params.trino_connector_params.trino_connector_options) {
         params[TRINO_CONNECTOR_OPTION_PREFIX + kv.first] = kv.second;
     }
     _jni_connector = std::make_unique<JniConnector>(
diff --git 
a/fe/be-java-extensions/trino-connector-scanner/src/main/java/org/apache/doris/trinoconnector/TrinoConnectorJniScanner.java
 
b/fe/be-java-extensions/trino-connector-scanner/src/main/java/org/apache/doris/trinoconnector/TrinoConnectorJniScanner.java
index 1daa57eee37..dae1149d6c7 100644
--- 
a/fe/be-java-extensions/trino-connector-scanner/src/main/java/org/apache/doris/trinoconnector/TrinoConnectorJniScanner.java
+++ 
b/fe/be-java-extensions/trino-connector-scanner/src/main/java/org/apache/doris/trinoconnector/TrinoConnectorJniScanner.java
@@ -126,7 +126,7 @@ public class TrinoConnectorJniScanner extends JniScanner {
     public TrinoConnectorJniScanner(int batchSize, Map<String, String> params) 
{
         catalogNameString = params.get("catalog_name");
         super.batchSize = batchSize;
-        super.fields = params.get("trino_connector_column_names").split(",");
+        super.fields = params.get("required_fields").split(",");
         super.predicates = new ScanPredicate[0];
 
         connectorSplitString = params.get("trino_connector_split");
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/trinoconnector/source/TrinoConnectorScanNode.java
 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/trinoconnector/source/TrinoConnectorScanNode.java
index 3c0d108b2cb..9e1282f349d 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/trinoconnector/source/TrinoConnectorScanNode.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/trinoconnector/source/TrinoConnectorScanNode.java
@@ -84,7 +84,8 @@ import java.util.stream.Collectors;
 
 public class TrinoConnectorScanNode extends FileQueryScanNode {
     private static final int minScheduleSplitBatchSize = 10;
-    private static TrinoConnectorSource source = null;
+    private TrinoConnectorSource source = null;
+    private ObjectMapperProvider objectMapperProvider;
 
     // private static List<Predicate> predicates;
 
@@ -173,14 +174,11 @@ public class TrinoConnectorScanNode extends 
FileQueryScanNode {
 
     public void setTrinoConnectorParams(TFileRangeDesc rangeDesc, 
TrinoConnectorSplit trinoConnectorSplit) {
         // mock ObjectMapperProvider
-        ObjectMapperProvider objectMapperProvider = 
createObjectMapperProvider();
+        objectMapperProvider = createObjectMapperProvider();
 
         // set TTrinoConnectorFileDesc
         TTrinoConnectorFileDesc fileDesc = new TTrinoConnectorFileDesc();
         
fileDesc.setTrinoConnectorSplit(encodeObjectToString(trinoConnectorSplit.getSplit(),
 objectMapperProvider));
-        fileDesc.setTrinoConnectorColumnNames(
-                source.getDesc().getSlots().stream().map(slot -> 
slot.getColumn().getName())
-                        .collect(Collectors.joining(",")));
         fileDesc.setCatalogName(source.getCatalog().getName());
         fileDesc.setDbName(source.getTargetTable().getDbName());
         
fileDesc.setTrinoConnectorOptions(source.getCatalog().getTrinoConnectorProperties());
@@ -193,6 +191,9 @@ public class TrinoConnectorScanNode extends 
FileQueryScanNode {
         List<ColumnHandle> columnHandles = new ArrayList<>();
         List<ColumnMetadata> columnMetadataList = new ArrayList<>();
         for (SlotDescriptor slotDescriptor : source.getDesc().getSlots()) {
+            if (!slotDescriptor.isMaterialized()) {
+                continue;
+            }
             String colName = slotDescriptor.getColumn().getName();
             if (columnMetadataMap.containsKey(colName)) {
                 columnMetadataList.add(columnMetadataMap.get(colName));
diff --git a/gensrc/thrift/PlanNodes.thrift b/gensrc/thrift/PlanNodes.thrift
index 51aa67aabf8..36761dd6170 100644
--- a/gensrc/thrift/PlanNodes.thrift
+++ b/gensrc/thrift/PlanNodes.thrift
@@ -324,7 +324,7 @@ struct TTrinoConnectorFileDesc {
     5: optional string trino_connector_table_handle
     6: optional string trino_connector_column_handles
     7: optional string trino_connector_column_metadata
-    8: optional string trino_connector_column_names
+    8: optional string trino_connector_column_names // not used
     9: optional string trino_connector_split
     10: optional string trino_connector_predicate
     11: optional string trino_connector_trascation_handle


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to