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