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

huajianlan pushed a commit to branch nested_column_prune
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 73bbdb9b35807b5f4f8b4d933d1b5c1a6405428c
Author: 924060929 <[email protected]>
AuthorDate: Wed Sep 24 17:04:44 2025 +0800

    define the interface of nested column prune
---
 gensrc/thrift/Descriptors.thrift | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gensrc/thrift/Descriptors.thrift b/gensrc/thrift/Descriptors.thrift
index 805060fc9cf..7624357d030 100644
--- a/gensrc/thrift/Descriptors.thrift
+++ b/gensrc/thrift/Descriptors.thrift
@@ -72,10 +72,50 @@ struct TSlotDescriptor {
   13: optional bool need_materialize = true
   14: optional bool is_auto_increment = false;
   // subcolumn path info list for semi structure column(variant)
+  // deprecated: will be replace to column_access_paths
   15: optional list<string> column_paths
   16: optional string col_default_value
   17: optional Types.TPrimitiveType primitive_type = 
Types.TPrimitiveType.INVALID_TYPE
   18: optional Exprs.TExpr virtual_column_expr
+  19: optional ColumnAccessPaths column_access_paths
+}
+
+enum AccessPathType {
+  NAME = 1,
+  // ICEBERG = 2 // implement in the future
+}
+
+struct ColumnNameAccessPath {
+   // the specification of special path:
+   //   <empty>: access the whole complex column
+   //   *: access every items in the array
+   //   KEYS: only access the keys of map
+   //   VALUES: only access the keys of map
+   //
+   // example:
+   //  s: struct<
+   //    data: array<
+   //      map<int, double>
+   //    >
+   //  >
+   // if we want to access the keys of the map, the path will be: ['data', 
'*', 'KEYS'],
+   // if we want to access the whole struct of s, the path will be: []
+   1: required list<string> path
+   2: required bool is_predicate
+}
+
+/*
+// implement in the future
+struct IcebergColumnAccessPath {
+   1: required list<i64> path
+   2: required bool is_predicate
+}
+*/
+
+struct ColumnAccessPaths {
+  1: required AccessPathType type
+  2: optional list<ColumnNameAccessPath> name_access_paths
+  // 3: optional list<IcebergColumnAccessPath> iceberg_column_access_paths // 
implement in the future
 }
 
 struct TTupleDescriptor {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to