This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new 0710d9b2d6a branch-2.1: [fix](orc) Should not pass selection vector
when decode child column of List or Map #50136 (#50316)
0710d9b2d6a is described below
commit 0710d9b2d6a6c6a6c62415c795aed859be30df83
Author: Socrates <[email protected]>
AuthorDate: Fri Apr 25 09:04:06 2025 +0800
branch-2.1: [fix](orc) Should not pass selection vector when decode child
column of List or Map #50136 (#50316)
bp: #50136
---
be/src/vec/exec/format/orc/vorc_reader.cpp | 14 +++++++-------
.../create_hive_orc_tables.hql | 11 +++++++++++
.../preinstalled_data/orc/complex_data_orc/000000_0 | Bin 0 -> 561 bytes
.../external_table_p0/hive/test_hive_orc_predicate.out | Bin 463 -> 2463 bytes
.../hive/test_hive_orc_predicate.groovy | 5 +++++
5 files changed, 23 insertions(+), 7 deletions(-)
diff --git a/be/src/vec/exec/format/orc/vorc_reader.cpp
b/be/src/vec/exec/format/orc/vorc_reader.cpp
index 83e3d9dfbb8..6f6ab41ae3a 100644
--- a/be/src/vec/exec/format/orc/vorc_reader.cpp
+++ b/be/src/vec/exec/format/orc/vorc_reader.cpp
@@ -1455,7 +1455,7 @@ Status OrcReader::_fill_doris_data_column(const
std::string& col_name,
->get_nested_type());
const orc::Type* nested_orc_type = orc_column_type->getSubtype(0);
std::string element_name = col_name + ".element";
- return _orc_column_to_doris_column<is_filter>(
+ return _orc_column_to_doris_column<false>(
element_name,
static_cast<ColumnArray&>(*data_column).get_data_ptr(), nested_type,
nested_orc_type, orc_list->elements.get(), element_size);
}
@@ -1481,12 +1481,12 @@ Status OrcReader::_fill_doris_data_column(const
std::string& col_name,
ColumnPtr& doris_value_column = doris_map.get_values_ptr();
std::string key_col_name = col_name + ".key";
std::string value_col_name = col_name + ".value";
- RETURN_IF_ERROR(_orc_column_to_doris_column<is_filter>(key_col_name,
doris_key_column,
- doris_key_type,
orc_key_type,
-
orc_map->keys.get(), element_size));
- return _orc_column_to_doris_column<is_filter>(value_col_name,
doris_value_column,
- doris_value_type,
orc_value_type,
- orc_map->elements.get(),
element_size);
+ RETURN_IF_ERROR(_orc_column_to_doris_column<false>(key_col_name,
doris_key_column,
+ doris_key_type,
orc_key_type,
+
orc_map->keys.get(), element_size));
+ return _orc_column_to_doris_column<false>(value_col_name,
doris_value_column,
+ doris_value_type,
orc_value_type,
+ orc_map->elements.get(),
element_size);
}
case TypeIndex::Struct: {
if (orc_column_type->getKind() != orc::TypeKind::STRUCT) {
diff --git
a/docker/thirdparties/docker-compose/hive/scripts/create_preinstalled_scripts/create_hive_orc_tables.hql
b/docker/thirdparties/docker-compose/hive/scripts/create_preinstalled_scripts/create_hive_orc_tables.hql
new file mode 100644
index 00000000000..d33061471ea
--- /dev/null
+++
b/docker/thirdparties/docker-compose/hive/scripts/create_preinstalled_scripts/create_hive_orc_tables.hql
@@ -0,0 +1,11 @@
+create database if not exists multi_catalog;
+use multi_catalog;
+
+CREATE TABLE complex_data_orc (
+ id INT,
+ m MAP<STRING, INT>,
+ l ARRAY<STRING>
+)
+STORED AS ORC
+LOCATION
+ '/user/doris/preinstalled_data/orc/complex_data_orc';
diff --git
a/docker/thirdparties/docker-compose/hive/scripts/preinstalled_data/orc/complex_data_orc/000000_0
b/docker/thirdparties/docker-compose/hive/scripts/preinstalled_data/orc/complex_data_orc/000000_0
new file mode 100644
index 00000000000..5e91793abf4
Binary files /dev/null and
b/docker/thirdparties/docker-compose/hive/scripts/preinstalled_data/orc/complex_data_orc/000000_0
differ
diff --git
a/regression-test/data/external_table_p0/hive/test_hive_orc_predicate.out
b/regression-test/data/external_table_p0/hive/test_hive_orc_predicate.out
index f42bb629550..8060ddd620c 100644
Binary files
a/regression-test/data/external_table_p0/hive/test_hive_orc_predicate.out and
b/regression-test/data/external_table_p0/hive/test_hive_orc_predicate.out differ
diff --git
a/regression-test/suites/external_table_p0/hive/test_hive_orc_predicate.groovy
b/regression-test/suites/external_table_p0/hive/test_hive_orc_predicate.groovy
index d9b6357ca0a..899c2d6ad40 100644
---
a/regression-test/suites/external_table_p0/hive/test_hive_orc_predicate.groovy
+++
b/regression-test/suites/external_table_p0/hive/test_hive_orc_predicate.groovy
@@ -43,6 +43,11 @@ suite("test_hive_orc_predicate",
"p0,external,hive,external_docker,external_dock
qt_predicate_changed_type2 """ select * from type_changed_table
where id = '2';"""
qt_predicate_changed_type3 """ select * from type_changed_table
where id = '3';"""
+ qt_lazy_materialization_for_list_type """ select l from
complex_data_orc where id > 2 order by id; """
+ qt_lazy_materialization_for_map_type """ select m from
complex_data_orc where id > 2 order by id; """
+ qt_lazy_materialization_for_list_and_map_type """ select * from
complex_data_orc where id > 2 order by id; """
+ qt_lazy_materialization_for_list_type2 """select t_struct_nested
from `${catalog_name}`.`default`.orc_all_types_t where t_int=3;"""
+
sql """drop catalog if exists ${catalog_name}"""
} finally {
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]