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 58504491c0e [fix](orc-reader)Fix orc complex type late materialization. (#50744) 58504491c0e is described below commit 58504491c0ec5ea53e21177a29d1d4a793b7aa43 Author: Qi Chen <che...@selectdb.com> AuthorDate: Fri May 9 18:03:37 2025 +0800 [fix](orc-reader)Fix orc complex type late materialization. (#50744) ### What problem does this PR solve? ### Release note Fix complex type late materialization. Original logic for `computeRGIdx()` has bugs, it will return wrong result when `rowIdx = 0`. But this error does not affect the correctness of most cases. In order to solve this problem,currently refactor the entire delayed materialized node filtering mechanism. Currently Filter/Non Filter Node types: ``` /** * Filter Node Types: * * FILTER_CHILD: Primitive type that is a filter column. * FILTER_PARENT: Compound type that may contain both filter and non-filter children. * FILTER_COMPOUND_ELEMENT: Compound type that is a filter element (list/map). * The entire column will be read, and must have only filter children. * NON_FILTER: Non-filter column. * * Example: * struct<name:string, * age:int, * address:struct<city:string, * zip:int, * location:struct<latitude:double, longitude:double>>, * hobbies:list<struct<name:string, level:int>>, * scores:map<string, struct<subject:string, grade:int>>> * * Filter columns: name, address.city, address.location.latitude, hobbies, scores * * Column Structure: * struct<...> * ├── name (FILTER_CHILD) # Primitive type, filter column * ├── age (NON_FILTER) # Non-filter column * ├── address (FILTER_PARENT) # Compound type with filter children * │ ├── city (FILTER_CHILD) # Primitive type, filter column * │ ├── zip (NON_FILTER) # Non-filter column * │ └── location (FILTER_PARENT) # Compound type with filter children * │ ├── latitude (FILTER_CHILD) # Primitive type, filter column * │ └── longitude (NON_FILTER) # Non-filter column * ├── hobbies (FILTER_COMPOUND_ELEMENT) # Compound type as filter element (list) * │ └── struct<name:string, level:int> (FILTER_PARENT) # Compound type with filter children * │ ├── name (FILTER_CHILD) # Primitive type, filter column * │ └── level (FILTER_CHILD) # Primitive type, filter column * └── scores (FILTER_COMPOUND_ELEMENT) # Compound type as filter element (map) * ├── key (FILTER_CHILD) # Primitive type, filter column * └── value (FILTER_PARENT) # Compound type with filter children * ├── subject (FILTER_CHILD) # Primitive type, filter column * └── grade (FILTER_CHILD) # Primitive type, filter column */ ``` --- be/src/apache-orc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/be/src/apache-orc b/be/src/apache-orc index 77e8f92669c..13ada78b494 160000 --- a/be/src/apache-orc +++ b/be/src/apache-orc @@ -1 +1 @@ -Subproject commit 77e8f92669c9ad658ba7f626364c9ba7eb593e36 +Subproject commit 13ada78b494133cacc0ccb5120e3f4611828fdbb --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org