Skip to content

Commit

Permalink
feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
WillAyd committed Jul 31, 2023
1 parent a46400f commit 012be07
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 10 deletions.
18 changes: 9 additions & 9 deletions src/nanoarrow/array_inline.h
Original file line number Diff line number Diff line change
Expand Up @@ -933,21 +933,21 @@ static inline void ArrowArrayViewGetIntervalUnsafe(struct ArrowArrayView* array_
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);
const size_t size = sizeof(int32_t);
memcpy(&out->months, data_view + i * size, sizeof(int32_t));
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);
const size_t size = sizeof(int32_t) + sizeof(int32_t);
memcpy(&out->days, data_view + i * size, sizeof(int32_t));
memcpy(&out->ms, data_view + i * size + 4, sizeof(int32_t));
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);
const size_t size = sizeof(int32_t) + sizeof(int32_t) + sizeof(int64_t);
memcpy(&out->months, data_view + i * size, sizeof(int32_t));
memcpy(&out->days, data_view + i * size + 4, sizeof(int32_t));
memcpy(&out->ns, data_view + i * size + 8, sizeof(int64_t));
break;
}
default:
Expand Down
35 changes: 34 additions & 1 deletion src/nanoarrow/array_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2454,7 +2454,40 @@ TEST(ArrayViewTest, ArrayViewTestGetString) {
}

TEST(ArrayViewTest, ArrayViewTestGetIntervalYearMonth) {
GTEST_SKIP() << "MonthIntervalBuilder not implemented in Arrow";
struct ArrowArray array;
struct ArrowSchema schema;
struct ArrowArrayView array_view;
struct ArrowError error;
struct ArrowInterval interval;

ArrowIntervalInit(&interval, ArrowType::NANOARROW_TYPE_INTERVAL_MONTHS);
interval.months = 42;

ASSERT_EQ(ArrowArrayInitFromType(&array, NANOARROW_TYPE_INTERVAL_MONTHS), NANOARROW_OK);
EXPECT_EQ(ArrowArrayStartAppending(&array), NANOARROW_OK);
EXPECT_EQ(ArrowArrayAppendInterval(&array, &interval), NANOARROW_OK);
EXPECT_EQ(ArrowArrayAppendNull(&array, 2), NANOARROW_OK);

interval.months = -42;
EXPECT_EQ(ArrowArrayAppendInterval(&array, &interval), NANOARROW_OK);
EXPECT_EQ(ArrowArrayFinishBuildingDefault(&array, nullptr), NANOARROW_OK);

ASSERT_EQ(ArrowSchemaInitFromType(&schema, NANOARROW_TYPE_INTERVAL_MONTHS),
NANOARROW_OK);
ASSERT_EQ(ArrowArrayViewInitFromSchema(&array_view, &schema, &error), NANOARROW_OK);
ASSERT_EQ(ArrowArrayViewSetArray(&array_view, &array, &error), NANOARROW_OK);
EXPECT_EQ(ArrowArrayViewValidate(&array_view, NANOARROW_VALIDATION_LEVEL_FULL, &error),
NANOARROW_OK);

ArrowArrayViewGetIntervalUnsafe(&array_view, 0, &interval);
EXPECT_EQ(interval.months, 42);

ArrowArrayViewGetIntervalUnsafe(&array_view, 3, &interval);
EXPECT_EQ(interval.months, -42);

ArrowArrayViewReset(&array_view);
schema.release(&schema);
array.release(&array);
}

TEST(ArrayViewTest, ArrayViewTestGetIntervalDayTime) {
Expand Down

0 comments on commit 012be07

Please sign in to comment.