@@ -8,7 +8,7 @@ from cpython.pycapsule cimport (
88)
99
1010from libc.stddef cimport size_t
11- from libc.stdint cimport uintptr_t, int32_t, int64_t
11+ from libc.stdint cimport uintptr_t
1212
1313from libcpp.limits cimport numeric_limits
1414from libcpp.memory cimport make_unique, unique_ptr
@@ -27,7 +27,8 @@ from pylibcudf.libcudf.interop cimport (
2727 to_arrow_schema_raw,
2828)
2929from pylibcudf.libcudf.null_mask cimport bitmask_allocation_size_bytes
30- from pylibcudf.libcudf.scalar.scalar cimport scalar, numeric_scalar
30+ from pylibcudf.libcudf.scalar.scalar cimport scalar
31+ from pylibcudf.libcudf.strings.strings_column_view cimport strings_column_view
3132from pylibcudf.libcudf.types cimport size_type, size_of as cpp_size_of, bitmask_type
3233from pylibcudf.libcudf.utilities.traits cimport is_fixed_width
3334from pylibcudf.libcudf.copying cimport get_element
@@ -88,26 +89,13 @@ cdef class OwnerWithCAI:
8889 obj = OwnerWithCAI()
8990 obj.owner = owner
9091 cdef size_t size
91- cdef column_view offsets_column
92- cdef unique_ptr[scalar] last_offset
9392 if cv.type().id() == type_id.EMPTY:
9493 size = cv.size()
9594 elif is_fixed_width(cv.type()):
9695 size = cv.size() * cpp_size_of(cv.type())
9796 elif cv.type().id() == type_id.STRING:
98- # The size of the character array in the parent is the offsets size
99- num_children = cv.num_children()
100- size = 0
101- # A strings column with no children is created for empty/all null
102- if num_children:
103- offsets_column = cv.child(0 )
104- last_offset = get_element(offsets_column, offsets_column.size() - 1 )
105- if offsets_column.type().id() == type_id.INT32:
106- size = (< numeric_scalar[int32_t] * > last_offset.get()).value()
107- elif offsets_column.type().id() == type_id.INT64:
108- size = (< numeric_scalar[int64_t] * > last_offset.get()).value()
109- else :
110- raise RuntimeError (" Invalid strings column offset dtype" )
97+ # TODO: stream-ordered
98+ size = strings_column_view(cv).chars_size(_get_stream().view())
11199 else :
112100 # All other types store data in the children, so the parent size is 0
113101 size = 0
0 commit comments