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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]