WillAyd commented on code in PR #270:
URL: https://github.com/apache/arrow-nanoarrow/pull/270#discussion_r1279218633
##########
src/nanoarrow/array_inline.h:
##########
@@ -928,6 +928,34 @@ static inline struct ArrowBufferView
ArrowArrayViewGetBytesUnsafe(
return view;
}
+static inline void ArrowArrayViewGetIntervalUnsafe(struct ArrowArrayView*
array_view,
+ int64_t i, struct
ArrowInterval* out) {
+ const uint8_t* data_view = array_view->buffer_views[1].data.as_uint8;
+ switch (array_view->storage_type) {
+ case NANOARROW_TYPE_INTERVAL_MONTHS: {
+ const size_t size = 4;
+ memcpy(&out->months, data_view + i * size, 4);
+ break;
+ }
+ case NANOARROW_TYPE_INTERVAL_DAY_TIME: {
+ const size_t size = 8;
+ memcpy(&out->days, data_view + i * size, 4);
+ memcpy(&out->ms, data_view + i * size + 4, 4);
+ break;
+ }
+ case NANOARROW_TYPE_INTERVAL_MONTH_DAY_NANO: {
+ const size_t size = 16;
+ memcpy(&out->months, data_view + i * size, 4);
+ memcpy(&out->days, data_view + i * size + 4, 4);
+ memcpy(&out->ns, data_view + i * size + 8, 8);
+ break;
+ }
+ default:
+ out = NULL;
Review Comment:
I think the downside to setting to 0 is that it is ambiguous if you've had
an error or an interval is legitimately 0
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]