This works for getting a c string out of the CScalar: ``` name_buffer = (<CBaseBinaryScalar*>GetResultValue(names.get().\
GetScalar(batch_row_index)).get()).value name = <char *>name_buffer.get().data() ``` On Tue, Apr 13, 2021 at 10:43 PM, Xander Dunn < [email protected] > wrote: > > Here is an example code snippet from a .pyx file that successfully > iterates through a CRecordBatch and ensures that the timestamps are > ascending: > > ``` > > while batch_row_index < batch.get().num_rows(): > > timestamp = GetResultValue(times.get().GetScalar(batch_row_index)) > > new_timestamp = <CTimestampScalar*>timestamp.get() > > current_timestamp = timestamps[name] > > if current_timestamp > new_timestamp.value: > > abort() > > batch_row_index += 1 > > ``` > > > > However, I'm having difficulty operating on the values in a column of > string type. Unlike CTimestampScalar, there is no CStringScalar. Although > there is a StringScalar type in C++, it isn't defined in the Cython > interface. There is a `CStringType` and a `c_string` type. > > ``` > > while batch_row_index < batch.get().num_rows(): > > name = GetResultValue(names.get().GetScalar(batch_row_index)) > > name_string = <CStringType*>name.get() # This is wrong > > printf("%s\n", name_string) # This prints garbage > > if name_string == b"Xander": # Doesn't work > > print("found it") > > batch_row_index += 1 > > ``` > > How do I get the string value as a C type and compare it to other strings? > > > > > Thanks, > > Xander >
