This is an automated email from the ASF dual-hosted git repository.
paleolimbot pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-nanoarrow.git
The following commit(s) were added to refs/heads/main by this push:
new 52688b5 [C] Copy flags in ArrowSchemaDeepCopy (#68)
52688b5 is described below
commit 52688b5d12fb5c93414250d5d6829bb741954610
Author: David Li <[email protected]>
AuthorDate: Wed Nov 23 21:20:11 2022 -0500
[C] Copy flags in ArrowSchemaDeepCopy (#68)
---
src/nanoarrow/schema.c | 2 ++
src/nanoarrow/schema_test.cc | 18 ++++++++++++++++++
2 files changed, 20 insertions(+)
diff --git a/src/nanoarrow/schema.c b/src/nanoarrow/schema.c
index 88dad89..8b372aa 100644
--- a/src/nanoarrow/schema.c
+++ b/src/nanoarrow/schema.c
@@ -422,6 +422,8 @@ int ArrowSchemaDeepCopy(struct ArrowSchema* schema, struct
ArrowSchema* schema_o
return result;
}
+ schema_out->flags = schema->flags;
+
result = ArrowSchemaSetName(schema_out, schema->name);
if (result != NANOARROW_OK) {
schema_out->release(schema_out);
diff --git a/src/nanoarrow/schema_test.cc b/src/nanoarrow/schema_test.cc
index 46d7dd9..9fd3cc1 100644
--- a/src/nanoarrow/schema_test.cc
+++ b/src/nanoarrow/schema_test.cc
@@ -408,6 +408,24 @@ TEST(SchemaTest, SchemaCopyDictType) {
schema_copy.release(&schema_copy);
}
+TEST(SchemaTest, SchemaCopyFlags) {
+ struct ArrowSchema schema;
+ ARROW_EXPECT_OK(ExportType(*int32(), &schema));
+ ASSERT_TRUE(schema.flags & ARROW_FLAG_NULLABLE);
+ schema.flags &= ~ARROW_FLAG_NULLABLE;
+ ASSERT_FALSE(schema.flags & ARROW_FLAG_NULLABLE);
+
+ struct ArrowSchema schema_copy;
+ ArrowSchemaDeepCopy(&schema, &schema_copy);
+
+ ASSERT_NE(schema_copy.release, nullptr);
+ ASSERT_EQ(schema.flags, schema_copy.flags);
+ ASSERT_FALSE(schema_copy.flags & ARROW_FLAG_NULLABLE);
+
+ schema.release(&schema);
+ schema_copy.release(&schema_copy);
+}
+
TEST(SchemaTest, SchemaCopyMetadata) {
struct ArrowSchema schema;
auto arrow_meta = std::make_shared<KeyValueMetadata>();