Extract shared list-array construction from the split_* functions in split.rs
メンテナーはふだん 1 日以内に返信
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 82/100
- issue の種類
- リファクタリング
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- rust
調査の方向性
native/spark-expr/src/string_funcs/split.rs から始めて、issue がリンクしている 4 つの汎用 split 関数(regex scalar、split_sql_generic_scalar、split_sql_generic_scalar_array、split_sql_generic_array)の末尾を比較してください。values builder を仕上げる共通ブロック、O::IS_LARGE に応じて Utf8 か LargeUtf8 を選ぶ部分、item の field を作る部分、GenericListArray を作る部分を、issue で提案されているシグネチャを持つ新しいヘルパー finish_split_list に移動してください。4 つの関数すべてがこのヘルパーを呼び出し、既存の動作とテストが変わらなければ完了です。
索引モデルが issue の本文から書いたものです。
説明
What is the problem the feature request solves?
In native/spark-expr/src/string_funcs/split.rs, the four generic split functions end with the same block of code: finish the values builder, pick Utf8/LargeUtf8 from O::IS_LARGE, build the item field, and construct a GenericListArray with the offsets.
- L305-L327 (regex scalar)
- L338-L360 (
split_sql_generic_scalar) - L374-L397 (
split_sql_generic_scalar_array) - L415-L441 (
split_sql_generic_array)
They differ only in the per-row call and in how the null buffer is produced (cloned input nulls vs NullBufferBuilder). A fix to the list construction, such as the item field's nullability, has to be made in four places.
Describe the potential solution
Extract fn finish_split_list<O: OffsetSizeTrait>(offsets: Vec<O>, values: GenericStringBuilder<O>, nulls: Option<NullBuffer>) -> ColumnarValue and call it from all four functions. Optionally, also factor the per-row loop into a generic driver so each variant only supplies its null predicate and push call.
Additional context
This is small and a good first issue. Line references are pinned to commit 7d8d9b1544b7.
- 主要言語
- Scala
- スター
- 1.3k
- フォーク
- 391
- 平均マージ
- 2日 12時間
- マージ済み PR(30日)
- 428
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/datafusion-comet のほかの issue
-
enhancement
難易度 1/5 1〜3時間 初心者へのやさしさ 83/100
apache/datafusion-comet#7101 ·
メンテナーはふだん 1 日以内に返信
-
Native hashing of NullType and ANSI interval values fails with "Unsupported data type in hasher"対応中かも @ump45nose が 1 日前に担当しました。 オープンarea:expressions area:shuffle bug priority:high
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
apache/datafusion-comet#7063 ·
メンテナーはふだん 1 日以内に返信
-
requires-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
apache/datafusion-comet#7001 ·
メンテナーはふだん 1 日以内に返信
-
Deduplicate spark_ceil and spark_floor and port floor's decimal boundary tests to ceil対応中かも @med9110 が 3 日前に担当しました。 オープンarea:expressions enhancement help wanted requires-triage rust tech debt
難易度 2/5 半日 初心者へのやさしさ 68/100
apache/datafusion-comet#6974 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Iceberg data tables whose names end with a metadata-table name fall back to Spark再び着手できるかも @aryan9948 が 12 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンrequires-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
apache/datafusion-comet#6719 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
apache/datafusion-comet の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
scope:security type:aquasec
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
AbsaOSS/atum-service#494 ·
-
Send camera_pitch and camera_roll to the AI API so validator crops can be tilt-corrected対応中かも @jonfroehlich が今日担当しました。 オープンAI Auto-validate
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
ProjectSidewalk/SidewalkWebpage#5788 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
A-network C-bug S-ready-for-human
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
ergoplatform/ergo#2741 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 78/100
scalameta/metals-zed#99 ·