Skip to content

Commit

Permalink
Improve readability and error
Browse files Browse the repository at this point in the history
  • Loading branch information
WillAyd committed Aug 21, 2024
1 parent d8ddf08 commit d212053
Showing 1 changed file with 21 additions and 12 deletions.
33 changes: 21 additions & 12 deletions src/capsule_bug/capsule_bug.cc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include <nanobind/nanobind.h>
#include <nanoarrow/nanoarrow.hpp>
#include <nanobind/nanobind.h>

namespace nb = nanobind;

Expand All @@ -21,7 +21,7 @@ auto CheckData(nb::object obj) {
ArrowArrayStreamGetSchema(stream.get(), schema.get(), &error));

// Get the schema view for our child, which we assume is decimal
ArrowSchemaView schema_view;
ArrowSchemaView schema_view;
NANOARROW_THROW_NOT_OK(
ArrowSchemaViewInit(&schema_view, schema->children[0], &error));

Expand All @@ -32,32 +32,41 @@ auto CheckData(nb::object obj) {
nanoarrow::UniqueArrayView array_view;
ArrowArrayViewInitFromSchema(array_view.get(), schema->children[0], &error);
NANOARROW_THROW_NOT_OK(
ArrowArrayViewSetArray(array_view.get(), chunk.children[0], &error));

ArrowArrayViewSetArray(array_view.get(), chunk.children[0], &error));

struct ArrowBuffer buffer;
ArrowBufferInit(&buffer);

struct ArrowDecimal decimal;
ArrowDecimalInit(&decimal, schema_view.decimal_bitwidth,
schema_view.decimal_precision, schema_view.decimal_scale);

ArrowArrayViewGetDecimalUnsafe(array_view.get(), 0, &decimal);
NANOARROW_THROW_NOT_OK(ArrowDecimalAppendDigitsToBuffer(&decimal, &buffer));
if (strncmp(reinterpret_cast<const char*>(buffer.data), "12345678901234567890", buffer.size_bytes)) {
throw nb::value_error("first record did not match expectation");
const char first_value[] = "12345678901234567890";
if (strncmp(reinterpret_cast<const char *>(buffer.data), first_value,
buffer.size_bytes)) {
throw nb::value_error(
"first record did not match expectation - expected: " +
std::string(first_value) + " got: " +
std::string{reinterpret_cast<const char *>(buffer.data),
buffer.size_bytes});
}
ArrowBufferReset(&buffer);

ArrowArrayViewGetDecimalUnsafe(array_view.get(), 1, &decimal);
NANOARROW_THROW_NOT_OK(ArrowDecimalAppendDigitsToBuffer(&decimal, &buffer));
if (strncmp(reinterpret_cast<const char*>(buffer.data), "-998765432109876543210", buffer.size_bytes)) {
throw nb::value_error("second record did not match expectation");
const char first_value[] = "-998765432109876543210";
if (strncmp(reinterpret_cast<const char *>(buffer.data), second_value,
buffer.size_bytes)) {
throw nb::value_error(
"second record did not match expectation - expected: " +
std::string(second_value) + " got: " +
std::string{reinterpret_cast<const char *>(buffer.data),
buffer.size_bytes});
}
ArrowBufferReset(&buffer);
}
}

NB_MODULE(capsule_bug, m) {
m.def("check", &CheckData);
}
NB_MODULE(capsule_bug, m) { m.def("check", &CheckData); }

0 comments on commit d212053

Please sign in to comment.