@@ -589,7 +589,7 @@ class ColumnIterator : ChunkingPolicy
589589 mutable int mOffset ;
590590
591591 private:
592- void checkSkipChunk ()
592+ void checkSkipChunk () const
593593 requires((ChunkingPolicy::chunked == true ) && std::same_as<arrow_array_for_t<T>, arrow::ListArray>)
594594 {
595595 auto list = std::static_pointer_cast<arrow::ListArray>(mColumn ->chunk (mCurrentChunk ));
@@ -598,33 +598,44 @@ class ColumnIterator : ChunkingPolicy
598598 }
599599 }
600600
601- void checkSkipChunk ()
601+ void checkSkipChunk () const
602602 requires((ChunkingPolicy::chunked == true ) && !std::same_as<arrow_array_for_t<T>, arrow::ListArray>)
603603 {
604604 if (O2_BUILTIN_UNLIKELY (((mCurrent + (*mCurrentPos >> SCALE_FACTOR)) >= mLast ))) {
605605 nextChunk ();
606606 }
607607 }
608608
609- void checkSkipChunk ()
609+ void checkSkipChunk () const
610610 requires(ChunkingPolicy::chunked == false )
611611 {
612612 }
613613 // / get pointer to mCurrentChunk chunk
614614 auto getCurrentArray () const
615+ requires(std::same_as<arrow_array_for_t <T>, arrow::FixedSizeListArray>)
615616 {
616617 std::shared_ptr<arrow::Array> chunkToUse = mColumn ->chunk (mCurrentChunk );
617618 mOffset = chunkToUse->offset ();
618- if constexpr (std::same_as<arrow_array_for_t <T>, arrow::FixedSizeListArray>) {
619- chunkToUse = std::dynamic_pointer_cast<arrow::FixedSizeListArray>(chunkToUse)->values ();
620- return std::static_pointer_cast<arrow_array_for_t <value_for_t <T>>>(chunkToUse);
621- } else if constexpr (std::same_as<arrow_array_for_t <T>, arrow::ListArray>) {
622- chunkToUse = std::dynamic_pointer_cast<arrow::ListArray>(chunkToUse)->values ();
623- mOffset = chunkToUse->offset ();
624- return std::static_pointer_cast<arrow_array_for_t <value_for_t <T>>>(chunkToUse);
625- } else {
626- return std::static_pointer_cast<arrow_array_for_t <T>>(chunkToUse);
627- }
619+ chunkToUse = std::dynamic_pointer_cast<arrow::FixedSizeListArray>(chunkToUse)->values ();
620+ return std::static_pointer_cast<arrow_array_for_t <value_for_t <T>>>(chunkToUse);
621+ }
622+
623+ auto getCurrentArray () const
624+ requires(std::same_as<arrow_array_for_t <T>, arrow::ListArray>)
625+ {
626+ std::shared_ptr<arrow::Array> chunkToUse = mColumn ->chunk (mCurrentChunk );
627+ mOffset = chunkToUse->offset ();
628+ chunkToUse = std::dynamic_pointer_cast<arrow::ListArray>(chunkToUse)->values ();
629+ mOffset = chunkToUse->offset ();
630+ return std::static_pointer_cast<arrow_array_for_t <value_for_t <T>>>(chunkToUse);
631+ }
632+
633+ auto getCurrentArray () const
634+ requires(!std::same_as<arrow_array_for_t <T>, arrow::FixedSizeListArray> && !std::same_as<arrow_array_for_t <T>, arrow::ListArray>)
635+ {
636+ std::shared_ptr<arrow::Array> chunkToUse = mColumn ->chunk (mCurrentChunk );
637+ mOffset = chunkToUse->offset ();
638+ return std::static_pointer_cast<arrow_array_for_t <T>>(chunkToUse);
628639 }
629640};
630641
0 commit comments