This is an automated email from the ASF dual-hosted git repository.
lidavidm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-adbc.git
The following commit(s) were added to refs/heads/main by this push:
new da37a11 fix(c/driver/sqlite): fix nullability of GetInfo schema (#457)
da37a11 is described below
commit da37a1138ae51a9973e3af4d6740ce037069f52b
Author: David Li <[email protected]>
AuthorDate: Tue Feb 14 15:30:20 2023 -0500
fix(c/driver/sqlite): fix nullability of GetInfo schema (#457)
Also updates Nanoarrow.
Fixes #453.
---
c/driver/postgresql/postgresql_test.cc | 2 +-
c/driver/postgresql/statement.cc | 23 ++-
c/driver/sqlite/sqlite.c | 30 ++--
c/driver/sqlite/sqlite_test.cc | 36 ++---
c/driver/sqlite/statement_reader.c | 10 +-
c/validation/adbc_validation.cc | 54 ++++---
c/validation/adbc_validation_util.cc | 7 +-
c/validation/adbc_validation_util.h | 4 +-
c/vendor/nanoarrow/nanoarrow.c | 249 +++++++++++++++++----------------
c/vendor/nanoarrow/nanoarrow.h | 107 +++++++-------
10 files changed, 275 insertions(+), 247 deletions(-)
diff --git a/c/driver/postgresql/postgresql_test.cc
b/c/driver/postgresql/postgresql_test.cc
index 3a41018..ba118f0 100644
--- a/c/driver/postgresql/postgresql_test.cc
+++ b/c/driver/postgresql/postgresql_test.cc
@@ -228,7 +228,7 @@ TEST_P(PostgresTypeTest, SelectValue) {
} else if constexpr (std::is_same_v<T, std::string>) {
ArrowStringView view =
ArrowArrayViewGetStringUnsafe(reader.array_view->children[0], 0);
- ASSERT_EQ(arg.size(), view.n_bytes);
+ ASSERT_EQ(arg.size(), view.size_bytes);
ASSERT_EQ(0, std::strncmp(arg.c_str(), view.data, arg.size()));
} else {
FAIL() << "Unimplemented case";
diff --git a/c/driver/postgresql/statement.cc b/c/driver/postgresql/statement.cc
index 0a13931..968badd 100644
--- a/c/driver/postgresql/statement.cc
+++ b/c/driver/postgresql/statement.cc
@@ -191,7 +191,7 @@ struct BindStream {
ArrowSchemaViewInit(&bind_schema_view, &bind_schema.value, /*error*/
nullptr),
error);
- if (bind_schema_view.data_type != ArrowType::NANOARROW_TYPE_STRUCT) {
+ if (bind_schema_view.type != ArrowType::NANOARROW_TYPE_STRUCT) {
SetError(error, "Bind parameters must have type STRUCT");
return ADBC_STATUS_INVALID_STATE;
}
@@ -215,7 +215,7 @@ struct BindStream {
for (size_t i = 0; i < bind_schema_fields.size(); i++) {
PgType pg_type;
- switch (bind_schema_fields[i].data_type) {
+ switch (bind_schema_fields[i].type) {
case ArrowType::NANOARROW_TYPE_INT16:
pg_type = PgType::kInt2;
param_lengths[i] = 2;
@@ -235,7 +235,7 @@ struct BindStream {
default:
// TODO: data type to string
SetError(error, "Field #", i + 1, " ('",
bind_schema->children[i]->name,
- "') has unsupported parameter type ",
bind_schema_fields[i].data_type);
+ "') has unsupported parameter type ",
bind_schema_fields[i].type);
return ADBC_STATUS_NOT_IMPLEMENTED;
}
@@ -244,7 +244,7 @@ struct BindStream {
// TODO: data type to string
SetError(error, "Field #", i + 1, " ('",
bind_schema->children[i]->name,
"') has type with no corresponding PostgreSQL type ",
- bind_schema_fields[i].data_type);
+ bind_schema_fields[i].type);
return ADBC_STATUS_NOT_IMPLEMENTED;
}
}
@@ -303,7 +303,7 @@ struct BindStream {
} else {
param_values[col] = param_values_buffer.data() +
param_values_offsets[col];
}
- switch (bind_schema_fields[col].data_type) {
+ switch (bind_schema_fields[col].type) {
case ArrowType::NANOARROW_TYPE_INT64: {
const int64_t value = ToNetworkInt64(
array_view->children[col]->buffer_views[1].data.as_int64[row]);
@@ -314,7 +314,7 @@ struct BindStream {
const ArrowBufferView view =
ArrowArrayViewGetBytesUnsafe(array_view->children[col], row);
// TODO: overflow check?
- param_lengths[col] = static_cast<int>(view.n_bytes);
+ param_lengths[col] = static_cast<int>(view.size_bytes);
param_values[col] = const_cast<char*>(view.data.as_char);
break;
}
@@ -322,7 +322,7 @@ struct BindStream {
// TODO: data type to string
SetError(error, "Field #", col + 1, " ('",
bind_schema->children[col]->name,
"') has unsupported type for ingestion ",
- bind_schema_fields[col].data_type);
+ bind_schema_fields[col].type);
return ADBC_STATUS_NOT_IMPLEMENTED;
}
}
@@ -519,7 +519,7 @@ int TupleReader::AppendNext(struct ArrowSchemaView* fields,
const char* buf, int
// TODO: set error message here
CHECK_NA(ArrowBitmapAppend(bitmap, field_length >= 0, 1));
- switch (fields[col].data_type) {
+ switch (fields[col].type) {
case NANOARROW_TYPE_BOOL: {
// DCHECK_EQ(field_length, 1);
struct ArrowBuffer* buffer = ArrowArrayBuffer(out->children[col], 1);
@@ -612,7 +612,7 @@ int TupleReader::AppendNext(struct ArrowSchemaView* fields,
const char* buf, int
default:
last_error_ = StringBuilder("[libpq] Column #", col + 1, " (\"",
schema_.children[col]->name,
- "\") has unsupported type ",
fields[col].data_type);
+ "\") has unsupported type ",
fields[col].type);
return ENOTSUP;
}
}
@@ -712,7 +712,7 @@ AdbcStatusCode PostgresStatement::CreateBulkTable(
for (size_t i = 0; i < source_schema_fields.size(); i++) {
if (i > 0) create += ", ";
create += source_schema.children[i]->name;
- switch (source_schema_fields[i].data_type) {
+ switch (source_schema_fields[i].type) {
case ArrowType::NANOARROW_TYPE_INT16:
create += " SMALLINT";
break;
@@ -728,8 +728,7 @@ AdbcStatusCode PostgresStatement::CreateBulkTable(
default:
// TODO: data type to string
SetError(error, "Field #", i + 1, " ('",
source_schema.children[i]->name,
- "') has unsupported type for ingestion ",
- source_schema_fields[i].data_type);
+ "') has unsupported type for ingestion ",
source_schema_fields[i].type);
return ADBC_STATUS_NOT_IMPLEMENTED;
}
}
diff --git a/c/driver/sqlite/sqlite.c b/c/driver/sqlite/sqlite.c
index b833b96..6f49350 100644
--- a/c/driver/sqlite/sqlite.c
+++ b/c/driver/sqlite/sqlite.c
@@ -333,7 +333,7 @@ AdbcStatusCode SqliteConnectionGetInfoImpl(const uint32_t*
info_codes,
break;
case ADBC_INFO_DRIVER_ARROW_VERSION:
RAISE_ADBC(SqliteConnectionGetInfoAppendStringImpl(array,
info_codes[i],
- NANOARROW_BUILD_ID,
error));
+ NANOARROW_VERSION,
error));
break;
default:
// Ignore
@@ -620,7 +620,7 @@ AdbcStatusCode SqliteConnectionGetColumnsImpl(
while ((rc = sqlite3_step(stmt)) == SQLITE_ROW) {
const char* col_name = (const char*)sqlite3_column_text(stmt, 1);
struct ArrowStringView str = {.data = col_name,
- .n_bytes = sqlite3_column_bytes(stmt, 1)};
+ .size_bytes = sqlite3_column_bytes(stmt, 1)};
CHECK_NA(INTERNAL, ArrowArrayAppendString(column_name_col, str), error);
const int32_t col_cid = sqlite3_column_int(stmt, 0);
@@ -632,7 +632,7 @@ AdbcStatusCode SqliteConnectionGetColumnsImpl(
const char* col_type = (const char*)sqlite3_column_text(stmt, 2);
if (col_type) {
str.data = col_type;
- str.n_bytes = sqlite3_column_bytes(stmt, 2);
+ str.size_bytes = sqlite3_column_bytes(stmt, 2);
CHECK_NA(INTERNAL, ArrowArrayAppendString(xdbc_type_name_col, str),
error);
} else {
CHECK_NA(INTERNAL, ArrowArrayAppendNull(xdbc_type_name_col, 1), error);
@@ -654,7 +654,7 @@ AdbcStatusCode SqliteConnectionGetColumnsImpl(
const char* col_def = (const char*)sqlite3_column_text(stmt, 4);
if (col_def) {
str.data = col_def;
- str.n_bytes = sqlite3_column_bytes(stmt, 4);
+ str.size_bytes = sqlite3_column_bytes(stmt, 4);
CHECK_NA(INTERNAL, ArrowArrayAppendString(xdbc_column_def_col, str),
error);
} else {
CHECK_NA(INTERNAL, ArrowArrayAppendNull(xdbc_column_def_col, 1), error);
@@ -666,10 +666,10 @@ AdbcStatusCode SqliteConnectionGetColumnsImpl(
if (col_notnull == 0) {
str.data = "YES";
- str.n_bytes = 3;
+ str.size_bytes = 3;
} else {
str.data = "NO";
- str.n_bytes = 2;
+ str.size_bytes = 2;
}
CHECK_NA(INTERNAL, ArrowArrayAppendString(xdbc_is_nullable_col, str),
error);
@@ -727,7 +727,7 @@ AdbcStatusCode SqliteConnectionGetConstraintsImpl(
ArrowArrayAppendString(
constraint_column_names_items,
(struct ArrowStringView){.data = (const
char*)sqlite3_column_text(pk_stmt, 0),
- .n_bytes = sqlite3_column_bytes(pk_stmt,
0)}),
+ .size_bytes =
sqlite3_column_bytes(pk_stmt, 0)}),
error);
}
if (has_primary_key) {
@@ -767,8 +767,8 @@ AdbcStatusCode SqliteConnectionGetConstraintsImpl(
CHECK_NA(INTERNAL,
ArrowArrayAppendString(
constraint_column_names_items,
- (struct ArrowStringView){.data = from_col,
- .n_bytes =
sqlite3_column_bytes(pk_stmt, 3)}),
+ (struct ArrowStringView){
+ .data = from_col, .size_bytes =
sqlite3_column_bytes(pk_stmt, 3)}),
error);
CHECK_NA(INTERNAL, ArrowArrayAppendString(fk_catalog_col,
ArrowCharView("main")),
error);
@@ -776,14 +776,14 @@ AdbcStatusCode SqliteConnectionGetConstraintsImpl(
CHECK_NA(INTERNAL,
ArrowArrayAppendString(
fk_table_col,
- (struct ArrowStringView){.data = to_table,
- .n_bytes =
sqlite3_column_bytes(pk_stmt, 2)}),
+ (struct ArrowStringView){
+ .data = to_table, .size_bytes =
sqlite3_column_bytes(pk_stmt, 2)}),
error);
CHECK_NA(INTERNAL,
ArrowArrayAppendString(
fk_column_name_col,
- (struct ArrowStringView){.data = to_col,
- .n_bytes =
sqlite3_column_bytes(pk_stmt, 4)}),
+ (struct ArrowStringView){
+ .data = to_col, .size_bytes =
sqlite3_column_bytes(pk_stmt, 4)}),
error);
}
}
@@ -825,12 +825,12 @@ AdbcStatusCode SqliteConnectionGetTablesInner(
}
struct ArrowStringView str = {.data = cur_table_type,
- .n_bytes = sqlite3_column_bytes(tables_stmt,
1)};
+ .size_bytes =
sqlite3_column_bytes(tables_stmt, 1)};
CHECK_NA(INTERNAL, ArrowArrayAppendString(table_type_col, str), error);
const char* cur_table = (const char*)sqlite3_column_text(tables_stmt, 0);
str.data = cur_table;
- str.n_bytes = sqlite3_column_bytes(tables_stmt, 0);
+ str.size_bytes = sqlite3_column_bytes(tables_stmt, 0);
CHECK_NA(INTERNAL, ArrowArrayAppendString(table_name_col, str), error);
if (columns_stmt == NULL) {
diff --git a/c/driver/sqlite/sqlite_test.cc b/c/driver/sqlite/sqlite_test.cc
index 418035c..3af4a8b 100644
--- a/c/driver/sqlite/sqlite_test.cc
+++ b/c/driver/sqlite/sqlite_test.cc
@@ -159,7 +159,7 @@ class SqliteReaderTest : public ::testing::Test {
TEST_F(SqliteReaderTest, IntsNulls) {
adbc_validation::StreamReader reader;
ASSERT_NO_FATAL_FAILURE(ExecSelect("(NULL), (1), (NULL), (-1)", kInferRows,
&reader));
- ASSERT_EQ(NANOARROW_TYPE_INT64, reader.fields[0].data_type);
+ ASSERT_EQ(NANOARROW_TYPE_INT64, reader.fields[0].type);
ASSERT_NO_FATAL_FAILURE(reader.Next());
ASSERT_NO_FATAL_FAILURE(CompareArray<int64_t>(reader.array_view->children[0],
@@ -170,7 +170,7 @@ TEST_F(SqliteReaderTest, FloatsNulls) {
adbc_validation::StreamReader reader;
ASSERT_NO_FATAL_FAILURE(
ExecSelect("(NULL), (1.0), (NULL), (-1.0), (0.0)", kInferRows, &reader));
- ASSERT_EQ(NANOARROW_TYPE_DOUBLE, reader.fields[0].data_type);
+ ASSERT_EQ(NANOARROW_TYPE_DOUBLE, reader.fields[0].type);
ASSERT_NO_FATAL_FAILURE(reader.Next());
ASSERT_NO_FATAL_FAILURE(CompareArray<double>(
@@ -181,7 +181,7 @@ TEST_F(SqliteReaderTest, IntsFloatsNulls) {
adbc_validation::StreamReader reader;
ASSERT_NO_FATAL_FAILURE(
ExecSelect("(NULL), (1), (NULL), (-1.0), (0)", kInferRows, &reader));
- ASSERT_EQ(NANOARROW_TYPE_DOUBLE, reader.fields[0].data_type);
+ ASSERT_EQ(NANOARROW_TYPE_DOUBLE, reader.fields[0].type);
ASSERT_NO_FATAL_FAILURE(reader.Next());
ASSERT_NO_FATAL_FAILURE(CompareArray<double>(
@@ -192,7 +192,7 @@ TEST_F(SqliteReaderTest, IntsNullsStrsNullsInts) {
adbc_validation::StreamReader reader;
ASSERT_NO_FATAL_FAILURE(ExecSelect(
R"((NULL), (1), (NULL), (-1), ("foo"), (NULL), (""), (24))", kInferRows,
&reader));
- ASSERT_EQ(NANOARROW_TYPE_STRING, reader.fields[0].data_type);
+ ASSERT_EQ(NANOARROW_TYPE_STRING, reader.fields[0].type);
ASSERT_NO_FATAL_FAILURE(reader.Next());
ASSERT_NO_FATAL_FAILURE(CompareArray<std::string>(
@@ -205,7 +205,7 @@ TEST_F(SqliteReaderTest, IntExtremes) {
ASSERT_NO_FATAL_FAILURE(
ExecSelect(R"((NULL), (9223372036854775807), (NULL),
(-9223372036854775808))",
kInferRows, &reader));
- ASSERT_EQ(NANOARROW_TYPE_INT64, reader.fields[0].data_type);
+ ASSERT_EQ(NANOARROW_TYPE_INT64, reader.fields[0].type);
ASSERT_NO_FATAL_FAILURE(reader.Next());
ASSERT_NO_FATAL_FAILURE(
@@ -219,7 +219,7 @@ TEST_F(SqliteReaderTest, IntExtremesStrs) {
ASSERT_NO_FATAL_FAILURE(ExecSelect(
R"((NULL), (9223372036854775807), (-9223372036854775808), (""),
(9223372036854775807), (-9223372036854775808))",
kInferRows, &reader));
- ASSERT_EQ(NANOARROW_TYPE_STRING, reader.fields[0].data_type);
+ ASSERT_EQ(NANOARROW_TYPE_STRING, reader.fields[0].type);
ASSERT_NO_FATAL_FAILURE(reader.Next());
ASSERT_NO_FATAL_FAILURE(CompareArray<std::string>(reader.array_view->children[0],
@@ -237,7 +237,7 @@ TEST_F(SqliteReaderTest, FloatExtremes) {
adbc_validation::StreamReader reader;
ASSERT_NO_FATAL_FAILURE(
ExecSelect(R"((NULL), (9e999), (NULL), (-9e999))", kInferRows, &reader));
- ASSERT_EQ(NANOARROW_TYPE_DOUBLE, reader.fields[0].data_type);
+ ASSERT_EQ(NANOARROW_TYPE_DOUBLE, reader.fields[0].type);
ASSERT_NO_FATAL_FAILURE(reader.Next());
ASSERT_NO_FATAL_FAILURE(CompareArray<double>(
@@ -253,7 +253,7 @@ TEST_F(SqliteReaderTest, IntsFloatsStrs) {
adbc_validation::StreamReader reader;
ASSERT_NO_FATAL_FAILURE(
ExecSelect(R"((1), (1.0), (""), (9e999), (-9e999))", kInferRows,
&reader));
- ASSERT_EQ(NANOARROW_TYPE_STRING, reader.fields[0].data_type);
+ ASSERT_EQ(NANOARROW_TYPE_STRING, reader.fields[0].type);
ASSERT_NO_FATAL_FAILURE(reader.Next());
ASSERT_NO_FATAL_FAILURE(
@@ -265,7 +265,7 @@ TEST_F(SqliteReaderTest, InferIntReadInt) {
adbc_validation::StreamReader reader;
ASSERT_NO_FATAL_FAILURE(
ExecSelect(R"((1), (NULL), (2), (NULL))", /*infer_rows=*/2, &reader));
- ASSERT_EQ(NANOARROW_TYPE_INT64, reader.fields[0].data_type);
+ ASSERT_EQ(NANOARROW_TYPE_INT64, reader.fields[0].type);
ASSERT_NO_FATAL_FAILURE(reader.Next());
ASSERT_NO_FATAL_FAILURE(
CompareArray<int64_t>(reader.array_view->children[0], {1,
std::nullopt}));
@@ -280,7 +280,7 @@ TEST_F(SqliteReaderTest, InferIntRejectFloat) {
adbc_validation::StreamReader reader;
ASSERT_NO_FATAL_FAILURE(
ExecSelect(R"((1), (NULL), (2E0), (NULL))", /*infer_rows=*/2, &reader));
- ASSERT_EQ(NANOARROW_TYPE_INT64, reader.fields[0].data_type);
+ ASSERT_EQ(NANOARROW_TYPE_INT64, reader.fields[0].type);
ASSERT_NO_FATAL_FAILURE(reader.Next());
ASSERT_NO_FATAL_FAILURE(
CompareArray<int64_t>(reader.array_view->children[0], {1,
std::nullopt}));
@@ -295,7 +295,7 @@ TEST_F(SqliteReaderTest, InferIntRejectStr) {
adbc_validation::StreamReader reader;
ASSERT_NO_FATAL_FAILURE(
ExecSelect(R"((1), (NULL), (""), (NULL))", /*infer_rows=*/2, &reader));
- ASSERT_EQ(NANOARROW_TYPE_INT64, reader.fields[0].data_type);
+ ASSERT_EQ(NANOARROW_TYPE_INT64, reader.fields[0].type);
ASSERT_NO_FATAL_FAILURE(reader.Next());
ASSERT_NO_FATAL_FAILURE(
CompareArray<int64_t>(reader.array_view->children[0], {1,
std::nullopt}));
@@ -311,7 +311,7 @@ TEST_F(SqliteReaderTest, InferFloatReadIntFloat) {
adbc_validation::StreamReader reader;
ASSERT_NO_FATAL_FAILURE(
ExecSelect(R"((1E0), (NULL), (2E0), (3), (NULL))", /*infer_rows=*/2,
&reader));
- ASSERT_EQ(NANOARROW_TYPE_DOUBLE, reader.fields[0].data_type);
+ ASSERT_EQ(NANOARROW_TYPE_DOUBLE, reader.fields[0].type);
ASSERT_NO_FATAL_FAILURE(reader.Next());
ASSERT_NO_FATAL_FAILURE(
CompareArray<double>(reader.array_view->children[0], {1.0,
std::nullopt}));
@@ -329,7 +329,7 @@ TEST_F(SqliteReaderTest, InferFloatRejectStr) {
adbc_validation::StreamReader reader;
ASSERT_NO_FATAL_FAILURE(ExecSelect(R"((1E0), (NULL), (2E0), (3), (""),
(NULL))",
/*infer_rows=*/2, &reader));
- ASSERT_EQ(NANOARROW_TYPE_DOUBLE, reader.fields[0].data_type);
+ ASSERT_EQ(NANOARROW_TYPE_DOUBLE, reader.fields[0].type);
ASSERT_NO_FATAL_FAILURE(reader.Next());
ASSERT_NO_FATAL_FAILURE(
CompareArray<double>(reader.array_view->children[0], {1.0,
std::nullopt}));
@@ -348,7 +348,7 @@ TEST_F(SqliteReaderTest, InferStrReadAll) {
adbc_validation::StreamReader reader;
ASSERT_NO_FATAL_FAILURE(ExecSelect(R"((""), (NULL), (2), (3E0), ("foo"),
(NULL))",
/*infer_rows=*/2, &reader));
- ASSERT_EQ(NANOARROW_TYPE_STRING, reader.fields[0].data_type);
+ ASSERT_EQ(NANOARROW_TYPE_STRING, reader.fields[0].type);
ASSERT_NO_FATAL_FAILURE(reader.Next());
ASSERT_NO_FATAL_FAILURE(
CompareArray<std::string>(reader.array_view->children[0], {"",
std::nullopt}));
@@ -378,7 +378,7 @@ TEST_F(SqliteReaderTest, InferOneParam) {
ASSERT_NO_FATAL_FAILURE(Exec("SELECT ?", /*infer_rows=*/2, &reader));
ASSERT_EQ(1, reader.schema->n_children);
- ASSERT_EQ(NANOARROW_TYPE_INT64, reader.fields[0].data_type);
+ ASSERT_EQ(NANOARROW_TYPE_INT64, reader.fields[0].type);
ASSERT_NO_FATAL_FAILURE(reader.Next());
ASSERT_NO_FATAL_FAILURE(
CompareArray<int64_t>(reader.array_view->children[0], {std::nullopt,
2}));
@@ -411,7 +411,7 @@ TEST_F(SqliteReaderTest, InferOneParamStream) {
ASSERT_NO_FATAL_FAILURE(Exec("SELECT ?", /*infer_rows=*/3, &reader));
ASSERT_EQ(1, reader.schema->n_children);
- ASSERT_EQ(NANOARROW_TYPE_INT64, reader.fields[0].data_type);
+ ASSERT_EQ(NANOARROW_TYPE_INT64, reader.fields[0].type);
ASSERT_NO_FATAL_FAILURE(reader.Next());
ASSERT_NO_FATAL_FAILURE(
CompareArray<int64_t>(reader.array_view->children[0], {std::nullopt, 1,
2}));
@@ -441,7 +441,7 @@ TEST_F(SqliteReaderTest, InferTypedParams) {
ASSERT_NO_FATAL_FAILURE(
Exec("SELECT value FROM foo WHERE idx = ?", /*infer_rows=*/2, &reader));
ASSERT_EQ(1, reader.schema->n_children);
- ASSERT_EQ(NANOARROW_TYPE_INT64, reader.fields[0].data_type);
+ ASSERT_EQ(NANOARROW_TYPE_INT64, reader.fields[0].type);
ASSERT_NO_FATAL_FAILURE(reader.Next());
ASSERT_NO_FATAL_FAILURE(
@@ -472,7 +472,7 @@ class SqliteNumericParamTest : public SqliteReaderTest,
ASSERT_NO_FATAL_FAILURE(Exec("SELECT ?", /*infer_rows=*/2, &reader));
ASSERT_EQ(1, reader.schema->n_children);
- ASSERT_EQ(expected_type, reader.fields[0].data_type);
+ ASSERT_EQ(expected_type, reader.fields[0].type);
ASSERT_NO_FATAL_FAILURE(reader.Next());
ASSERT_NO_FATAL_FAILURE(
CompareArray<CType>(reader.array_view->children[0], {std::nullopt,
0}));
diff --git a/c/driver/sqlite/statement_reader.c
b/c/driver/sqlite/statement_reader.c
index e91491b..694b8cc 100644
--- a/c/driver/sqlite/statement_reader.c
+++ b/c/driver/sqlite/statement_reader.c
@@ -63,11 +63,11 @@ AdbcStatusCode AdbcSqliteBinderSet(struct AdbcSqliteBinder*
binder,
return ADBC_STATUS_INVALID_ARGUMENT;
}
- if (view.data_type == NANOARROW_TYPE_UNINITIALIZED) {
+ if (view.type == NANOARROW_TYPE_UNINITIALIZED) {
SetError(error, "Column %d has UNINITIALIZED type", i);
return ADBC_STATUS_INTERNAL;
}
- binder->types[i] = view.data_type;
+ binder->types[i] = view.type;
}
return ADBC_STATUS_OK;
@@ -151,7 +151,7 @@ AdbcStatusCode AdbcSqliteBinderBindNext(struct
AdbcSqliteBinder* binder, sqlite3
case NANOARROW_TYPE_LARGE_BINARY: {
struct ArrowBufferView value =
ArrowArrayViewGetBytesUnsafe(binder->batch.children[col],
binder->next_row);
- status = sqlite3_bind_text(stmt, col + 1, value.data.as_char,
value.n_bytes,
+ status = sqlite3_bind_text(stmt, col + 1, value.data.as_char,
value.size_bytes,
SQLITE_STATIC);
break;
}
@@ -191,7 +191,7 @@ AdbcStatusCode AdbcSqliteBinderBindNext(struct
AdbcSqliteBinder* binder, sqlite3
case NANOARROW_TYPE_LARGE_STRING: {
struct ArrowBufferView value =
ArrowArrayViewGetBytesUnsafe(binder->batch.children[col],
binder->next_row);
- status = sqlite3_bind_text(stmt, col + 1, value.data.as_char,
value.n_bytes,
+ status = sqlite3_bind_text(stmt, col + 1, value.data.as_char,
value.size_bytes,
SQLITE_STATIC);
break;
}
@@ -334,7 +334,7 @@ int StatementReaderGetOneValue(struct StatementReader*
reader, int col,
// Let SQLite convert
struct ArrowStringView value = {
.data = (const char*)sqlite3_column_text(reader->stmt, col),
- .n_bytes = sqlite3_column_bytes(reader->stmt, col),
+ .size_bytes = sqlite3_column_bytes(reader->stmt, col),
};
return ArrowArrayAppendString(out, value);
}
diff --git a/c/validation/adbc_validation.cc b/c/validation/adbc_validation.cc
index cd6cd1e..c99f5cc 100644
--- a/c/validation/adbc_validation.cc
+++ b/c/validation/adbc_validation.cc
@@ -272,6 +272,25 @@ void ConnectionTest::TestMetadataGetInfo() {
{"string_list", NANOARROW_TYPE_LIST, NULLABLE},
{"int32_to_int32_list_map", NANOARROW_TYPE_MAP,
NULLABLE},
}));
+
ASSERT_NO_FATAL_FAILURE(CompareSchema(reader.schema->children[1]->children[4],
+ {
+ {"item", NANOARROW_TYPE_STRING,
NULLABLE},
+ }));
+
ASSERT_NO_FATAL_FAILURE(CompareSchema(reader.schema->children[1]->children[5],
+ {
+ {"entries", NANOARROW_TYPE_STRUCT,
NOT_NULL},
+ }));
+ ASSERT_NO_FATAL_FAILURE(
+ CompareSchema(reader.schema->children[1]->children[5]->children[0],
+ {
+ {"key", NANOARROW_TYPE_INT32, NOT_NULL},
+ {"value", NANOARROW_TYPE_LIST, NULLABLE},
+ }));
+ ASSERT_NO_FATAL_FAILURE(
+
CompareSchema(reader.schema->children[1]->children[5]->children[0]->children[1],
+ {
+ {"item", NANOARROW_TYPE_INT32, NULLABLE},
+ }));
std::vector<uint32_t> seen;
while (true) {
@@ -586,7 +605,8 @@ void ConnectionTest::TestMetadataGetObjectsTables() {
tables_index++) {
ArrowStringView table_name = ArrowArrayViewGetStringUnsafe(
db_schema_tables->children[0], tables_index);
- if (std::string_view(table_name.data, table_name.n_bytes) ==
"bulk_ingest") {
+ if (std::string_view(table_name.data, table_name.size_bytes) ==
+ "bulk_ingest") {
found_expected_table = true;
}
@@ -659,7 +679,8 @@ void ConnectionTest::TestMetadataGetObjectsTablesTypes() {
tables_index++) {
ArrowStringView table_name = ArrowArrayViewGetStringUnsafe(
db_schema_tables->children[0], tables_index);
- if (std::string_view(table_name.data, table_name.n_bytes) ==
"bulk_ingest") {
+ if (std::string_view(table_name.data, table_name.size_bytes) ==
+ "bulk_ingest") {
found_expected_table = true;
}
@@ -762,7 +783,8 @@ void ConnectionTest::TestMetadataGetObjectsColumns() {
ASSERT_FALSE(ArrowArrayViewIsNull(table_constraints_list,
tables_index))
<< "Row " << row << " should have non-null table_constraints";
- if (std::string_view(table_name.data, table_name.n_bytes) ==
"bulk_ingest") {
+ if (std::string_view(table_name.data, table_name.size_bytes) ==
+ "bulk_ingest") {
found_expected_table = true;
for (int64_t columns_index =
@@ -772,7 +794,7 @@ void ConnectionTest::TestMetadataGetObjectsColumns() {
columns_index++) {
ArrowStringView name = ArrowArrayViewGetStringUnsafe(
table_columns->children[0], columns_index);
- column_names.push_back(std::string(name.data, name.n_bytes));
+ column_names.push_back(std::string(name.data,
name.size_bytes));
ordinal_positions.push_back(
static_cast<int32_t>(ArrowArrayViewGetIntUnsafe(
table_columns->children[1], columns_index)));
@@ -1171,7 +1193,7 @@ void StatementTest::TestSqlPartitionedInts() {
ASSERT_EQ(1, reader.array->length);
ASSERT_EQ(1, reader.array->n_children);
- switch (reader.fields[0].data_type) {
+ switch (reader.fields[0].type) {
case NANOARROW_TYPE_INT32:
ASSERT_NO_FATAL_FAILURE(
CompareArray<int32_t>(reader.array_view->children[0], {42}));
@@ -1181,7 +1203,7 @@ void StatementTest::TestSqlPartitionedInts() {
CompareArray<int64_t>(reader.array_view->children[0], {42}));
break;
default:
- FAIL() << "Unexpected data type: " << reader.fields[0].data_type;
+ FAIL() << "Unexpected data type: " << reader.fields[0].type;
}
ASSERT_NO_FATAL_FAILURE(reader.Next());
@@ -1235,7 +1257,7 @@ void StatementTest::TestSqlPrepareSelectNoParams() {
ASSERT_EQ(1, reader.array->length);
ASSERT_EQ(1, reader.array->n_children);
- switch (reader.fields[0].data_type) {
+ switch (reader.fields[0].type) {
case NANOARROW_TYPE_INT32:
ASSERT_NO_FATAL_FAILURE(CompareArray<int32_t>(reader.array_view->children[0],
{1}));
break;
@@ -1243,7 +1265,7 @@ void StatementTest::TestSqlPrepareSelectNoParams() {
ASSERT_NO_FATAL_FAILURE(CompareArray<int64_t>(reader.array_view->children[0],
{1}));
break;
default:
- FAIL() << "Unexpected data type: " << reader.fields[0].data_type;
+ FAIL() << "Unexpected data type: " << reader.fields[0].type;
}
ASSERT_NO_FATAL_FAILURE(reader.Next());
@@ -1300,7 +1322,7 @@ void StatementTest::TestSqlPrepareSelectParams() {
auto start = nrows;
auto end = nrows + reader.array->length;
- switch (reader.fields[0].data_type) {
+ switch (reader.fields[0].type) {
case NANOARROW_TYPE_INT32:
ASSERT_NO_FATAL_FAILURE(CompareArray<int32_t>(
reader.array_view->children[0],
@@ -1312,7 +1334,7 @@ void StatementTest::TestSqlPrepareSelectParams() {
{expected_int64.begin() + start, expected_int64.begin() + end}));
break;
default:
- FAIL() << "Unexpected data type: " << reader.fields[0].data_type;
+ FAIL() << "Unexpected data type: " << reader.fields[0].type;
}
ASSERT_NO_FATAL_FAILURE(CompareArray<std::string>(
reader.array_view->children[1],
@@ -1559,7 +1581,7 @@ void StatementTest::TestSqlQueryInts() {
ASSERT_EQ(1, reader.array->length);
ASSERT_EQ(1, reader.array->n_children);
- switch (reader.fields[0].data_type) {
+ switch (reader.fields[0].type) {
case NANOARROW_TYPE_INT32:
ASSERT_NO_FATAL_FAILURE(
CompareArray<int32_t>(reader.array_view->children[0], {42}));
@@ -1569,7 +1591,7 @@ void StatementTest::TestSqlQueryInts() {
CompareArray<int64_t>(reader.array_view->children[0], {42}));
break;
default:
- FAIL() << "Unexpected data type: " << reader.fields[0].data_type;
+ FAIL() << "Unexpected data type: " << reader.fields[0].type;
}
ASSERT_NO_FATAL_FAILURE(reader.Next());
@@ -1602,7 +1624,7 @@ void StatementTest::TestSqlQueryFloats() {
ASSERT_FALSE(ArrowArrayViewIsNull(&reader.array_view.value, 0));
ASSERT_FALSE(ArrowArrayViewIsNull(reader.array_view->children[0], 0));
- switch (reader.fields[0].data_type) {
+ switch (reader.fields[0].type) {
case NANOARROW_TYPE_FLOAT:
ASSERT_NO_FATAL_FAILURE(
CompareArray<float>(reader.array_view->children[0], {1.0f}));
@@ -1612,7 +1634,7 @@ void StatementTest::TestSqlQueryFloats() {
CompareArray<double>(reader.array_view->children[0], {1.0}));
break;
default:
- FAIL() << "Unexpected data type: " << reader.fields[0].data_type;
+ FAIL() << "Unexpected data type: " << reader.fields[0].type;
}
ASSERT_NO_FATAL_FAILURE(reader.Next());
@@ -1645,14 +1667,14 @@ void StatementTest::TestSqlQueryStrings() {
ASSERT_FALSE(ArrowArrayViewIsNull(&reader.array_view.value, 0));
ASSERT_FALSE(ArrowArrayViewIsNull(reader.array_view->children[0], 0));
- switch (reader.fields[0].data_type) {
+ switch (reader.fields[0].type) {
case NANOARROW_TYPE_STRING: {
ASSERT_NO_FATAL_FAILURE(
CompareArray<std::string>(reader.array_view->children[0],
{"SaShiSuSeSo"}));
break;
}
default:
- FAIL() << "Unexpected data type: " << reader.fields[0].data_type;
+ FAIL() << "Unexpected data type: " << reader.fields[0].type;
}
ASSERT_NO_FATAL_FAILURE(reader.Next());
diff --git a/c/validation/adbc_validation_util.cc
b/c/validation/adbc_validation_util.cc
index 67e5dce..e67be6d 100644
--- a/c/validation/adbc_validation_util.cc
+++ b/c/validation/adbc_validation_util.cc
@@ -236,8 +236,9 @@ void CompareSchema(
struct ArrowSchemaView view;
ASSERT_THAT(ArrowSchemaViewInit(&view, schema, &na_error),
IsOkErrno(&na_error));
- ASSERT_THAT(view.data_type, ::testing::AnyOf(NANOARROW_TYPE_LIST,
NANOARROW_TYPE_STRUCT,
- NANOARROW_TYPE_DENSE_UNION));
+ ASSERT_THAT(view.type,
+ ::testing::AnyOf(NANOARROW_TYPE_LIST, NANOARROW_TYPE_MAP,
+ NANOARROW_TYPE_STRUCT,
NANOARROW_TYPE_DENSE_UNION));
ASSERT_EQ(fields.size(), schema->n_children);
for (int64_t i = 0; i < schema->n_children; i++) {
@@ -245,7 +246,7 @@ void CompareSchema(
struct ArrowSchemaView field_view;
ASSERT_THAT(ArrowSchemaViewInit(&field_view, schema->children[i],
&na_error),
IsOkErrno(&na_error));
- ASSERT_EQ(std::get<1>(fields[i]), field_view.data_type);
+ ASSERT_EQ(std::get<1>(fields[i]), field_view.type);
ASSERT_EQ(std::get<2>(fields[i]),
(schema->children[i]->flags & ARROW_FLAG_NULLABLE) != 0)
<< "Nullability mismatch";
diff --git a/c/validation/adbc_validation_util.h
b/c/validation/adbc_validation_util.h
index ca9d9da..9c23ab3 100644
--- a/c/validation/adbc_validation_util.h
+++ b/c/validation/adbc_validation_util.h
@@ -235,7 +235,7 @@ int MakeArray(struct ArrowArray* parent, struct ArrowArray*
array,
} else if constexpr (std::is_same<T, std::string>::value) {
struct ArrowStringView view;
view.data = v->c_str();
- view.n_bytes = v->size();
+ view.size_bytes = v->size();
if (int errno_res = ArrowArrayAppendString(array, view); errno_res !=
0) {
return errno_res;
}
@@ -327,7 +327,7 @@ void CompareArray(struct ArrowArrayView* array,
ASSERT_EQ(*v, array->buffer_views[1].data.as_int64[i]);
} else if constexpr (std::is_same<T, std::string>::value) {
struct ArrowStringView view = ArrowArrayViewGetStringUnsafe(array, i);
- std::string str(view.data, view.n_bytes);
+ std::string str(view.data, view.size_bytes);
ASSERT_EQ(*v, str);
} else {
static_assert(!sizeof(T), "Not yet implemented");
diff --git a/c/vendor/nanoarrow/nanoarrow.c b/c/vendor/nanoarrow/nanoarrow.c
index 7f9d18c..23042dc 100644
--- a/c/vendor/nanoarrow/nanoarrow.c
+++ b/c/vendor/nanoarrow/nanoarrow.c
@@ -24,8 +24,6 @@
#include "nanoarrow.h"
-const char* ArrowNanoarrowBuildId(void) { return NANOARROW_BUILD_ID; }
-
const char* ArrowNanoarrowVersion() { return NANOARROW_VERSION; }
int ArrowNanoarrowVersionInt() { return NANOARROW_VERSION_INT; }
@@ -267,8 +265,8 @@ static void ArrowSchemaRelease(struct ArrowSchema* schema) {
schema->release = NULL;
}
-static const char* ArrowSchemaFormatTemplate(enum ArrowType data_type) {
- switch (data_type) {
+static const char* ArrowSchemaFormatTemplate(enum ArrowType type) {
+ switch (type) {
case NANOARROW_TYPE_UNINITIALIZED:
return NULL;
case NANOARROW_TYPE_NA:
@@ -335,8 +333,8 @@ static const char* ArrowSchemaFormatTemplate(enum ArrowType
data_type) {
}
static int ArrowSchemaInitChildrenIfNeeded(struct ArrowSchema* schema,
- enum ArrowType data_type) {
- switch (data_type) {
+ enum ArrowType type) {
+ switch (type) {
case NANOARROW_TYPE_LIST:
case NANOARROW_TYPE_LARGE_LIST:
case NANOARROW_TYPE_FIXED_SIZE_LIST:
@@ -349,11 +347,13 @@ static int ArrowSchemaInitChildrenIfNeeded(struct
ArrowSchema* schema,
NANOARROW_RETURN_NOT_OK(
ArrowSchemaInitFromType(schema->children[0], NANOARROW_TYPE_STRUCT));
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetName(schema->children[0],
"entries"));
+ schema->children[0]->flags &= ~ARROW_FLAG_NULLABLE;
NANOARROW_RETURN_NOT_OK(ArrowSchemaAllocateChildren(schema->children[0],
2));
ArrowSchemaInit(schema->children[0]->children[0]);
ArrowSchemaInit(schema->children[0]->children[1]);
NANOARROW_RETURN_NOT_OK(
ArrowSchemaSetName(schema->children[0]->children[0], "key"));
+ schema->children[0]->children[0]->flags &= ~ARROW_FLAG_NULLABLE;
NANOARROW_RETURN_NOT_OK(
ArrowSchemaSetName(schema->children[0]->children[1], "value"));
break;
@@ -376,22 +376,22 @@ void ArrowSchemaInit(struct ArrowSchema* schema) {
schema->release = &ArrowSchemaRelease;
}
-ArrowErrorCode ArrowSchemaSetType(struct ArrowSchema* schema, enum ArrowType
data_type) {
+ArrowErrorCode ArrowSchemaSetType(struct ArrowSchema* schema, enum ArrowType
type) {
// We don't allocate the dictionary because it has to be nullptr
// for non-dictionary-encoded arrays.
- // Set the format to a valid format string for data_type
- const char* template_format = ArrowSchemaFormatTemplate(data_type);
+ // Set the format to a valid format string for type
+ const char* template_format = ArrowSchemaFormatTemplate(type);
- // If data_type isn't recognized and not explicitly unset
- if (template_format == NULL && data_type != NANOARROW_TYPE_UNINITIALIZED) {
+ // If type isn't recognized and not explicitly unset
+ if (template_format == NULL && type != NANOARROW_TYPE_UNINITIALIZED) {
return EINVAL;
}
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetFormat(schema, template_format));
// For types with an umabiguous child structure, allocate children
- return ArrowSchemaInitChildrenIfNeeded(schema, data_type);
+ return ArrowSchemaInitChildrenIfNeeded(schema, type);
}
ArrowErrorCode ArrowSchemaSetTypeStruct(struct ArrowSchema* schema, int64_t
n_children) {
@@ -404,11 +404,10 @@ ArrowErrorCode ArrowSchemaSetTypeStruct(struct
ArrowSchema* schema, int64_t n_ch
return NANOARROW_OK;
}
-ArrowErrorCode ArrowSchemaInitFromType(struct ArrowSchema* schema,
- enum ArrowType data_type) {
+ArrowErrorCode ArrowSchemaInitFromType(struct ArrowSchema* schema, enum
ArrowType type) {
ArrowSchemaInit(schema);
- int result = ArrowSchemaSetType(schema, data_type);
+ int result = ArrowSchemaSetType(schema, type);
if (result != NANOARROW_OK) {
schema->release(schema);
return result;
@@ -418,14 +417,14 @@ ArrowErrorCode ArrowSchemaInitFromType(struct
ArrowSchema* schema,
}
ArrowErrorCode ArrowSchemaSetTypeFixedSize(struct ArrowSchema* schema,
- enum ArrowType data_type, int32_t
fixed_size) {
+ enum ArrowType type, int32_t
fixed_size) {
if (fixed_size <= 0) {
return EINVAL;
}
char buffer[64];
int n_chars;
- switch (data_type) {
+ switch (type) {
case NANOARROW_TYPE_FIXED_SIZE_BINARY:
n_chars = snprintf(buffer, sizeof(buffer), "w:%d", (int)fixed_size);
break;
@@ -439,15 +438,14 @@ ArrowErrorCode ArrowSchemaSetTypeFixedSize(struct
ArrowSchema* schema,
buffer[n_chars] = '\0';
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetFormat(schema, buffer));
- if (data_type == NANOARROW_TYPE_FIXED_SIZE_LIST) {
- NANOARROW_RETURN_NOT_OK(ArrowSchemaInitChildrenIfNeeded(schema,
data_type));
+ if (type == NANOARROW_TYPE_FIXED_SIZE_LIST) {
+ NANOARROW_RETURN_NOT_OK(ArrowSchemaInitChildrenIfNeeded(schema, type));
}
return NANOARROW_OK;
}
-ArrowErrorCode ArrowSchemaSetTypeDecimal(struct ArrowSchema* schema,
- enum ArrowType data_type,
+ArrowErrorCode ArrowSchemaSetTypeDecimal(struct ArrowSchema* schema, enum
ArrowType type,
int32_t decimal_precision,
int32_t decimal_scale) {
if (decimal_precision <= 0) {
@@ -456,7 +454,7 @@ ArrowErrorCode ArrowSchemaSetTypeDecimal(struct
ArrowSchema* schema,
char buffer[64];
int n_chars;
- switch (data_type) {
+ switch (type) {
case NANOARROW_TYPE_DECIMAL128:
n_chars =
snprintf(buffer, sizeof(buffer), "d:%d,%d", decimal_precision,
decimal_scale);
@@ -488,8 +486,7 @@ static const char* ArrowTimeUnitFormatString(enum
ArrowTimeUnit time_unit) {
}
}
-ArrowErrorCode ArrowSchemaSetTypeDateTime(struct ArrowSchema* schema,
- enum ArrowType data_type,
+ArrowErrorCode ArrowSchemaSetTypeDateTime(struct ArrowSchema* schema, enum
ArrowType type,
enum ArrowTimeUnit time_unit,
const char* timezone) {
const char* time_unit_str = ArrowTimeUnitFormatString(time_unit);
@@ -499,7 +496,7 @@ ArrowErrorCode ArrowSchemaSetTypeDateTime(struct
ArrowSchema* schema,
char buffer[128];
int n_chars;
- switch (data_type) {
+ switch (type) {
case NANOARROW_TYPE_TIME32:
case NANOARROW_TYPE_TIME64:
if (timezone != NULL) {
@@ -532,8 +529,8 @@ ArrowErrorCode ArrowSchemaSetTypeDateTime(struct
ArrowSchema* schema,
return ArrowSchemaSetFormat(schema, buffer);
}
-ArrowErrorCode ArrowSchemaSetTypeUnion(struct ArrowSchema* schema,
- enum ArrowType data_type, int64_t
n_children) {
+ArrowErrorCode ArrowSchemaSetTypeUnion(struct ArrowSchema* schema, enum
ArrowType type,
+ int64_t n_children) {
if (n_children < 0 || n_children > 127) {
return EINVAL;
}
@@ -545,7 +542,7 @@ ArrowErrorCode ArrowSchemaSetTypeUnion(struct ArrowSchema*
schema,
int n_chars;
char* format_cursor = format_out;
- switch (data_type) {
+ switch (type) {
case NANOARROW_TYPE_SPARSE_UNION:
n_chars = snprintf(format_cursor, format_out_size, "+us:");
format_cursor += n_chars;
@@ -744,9 +741,9 @@ ArrowErrorCode ArrowSchemaDeepCopy(struct ArrowSchema*
schema,
}
static void ArrowSchemaViewSetPrimitive(struct ArrowSchemaView* schema_view,
- enum ArrowType data_type) {
- schema_view->data_type = data_type;
- schema_view->storage_data_type = data_type;
+ enum ArrowType type) {
+ schema_view->type = type;
+ schema_view->storage_type = type;
}
static ArrowErrorCode ArrowSchemaViewParse(struct ArrowSchemaView* schema_view,
@@ -761,8 +758,8 @@ static ArrowErrorCode ArrowSchemaViewParse(struct
ArrowSchemaView* schema_view,
switch (format[0]) {
case 'n':
- schema_view->data_type = NANOARROW_TYPE_NA;
- schema_view->storage_data_type = NANOARROW_TYPE_NA;
+ schema_view->type = NANOARROW_TYPE_NA;
+ schema_view->storage_type = NANOARROW_TYPE_NA;
*format_end_out = format + 1;
return NANOARROW_OK;
case 'b':
@@ -862,8 +859,8 @@ static ArrowErrorCode ArrowSchemaViewParse(struct
ArrowSchemaView* schema_view,
// validity + data
case 'w':
- schema_view->data_type = NANOARROW_TYPE_FIXED_SIZE_BINARY;
- schema_view->storage_data_type = NANOARROW_TYPE_FIXED_SIZE_BINARY;
+ schema_view->type = NANOARROW_TYPE_FIXED_SIZE_BINARY;
+ schema_view->storage_type = NANOARROW_TYPE_FIXED_SIZE_BINARY;
if (format[1] != ':' || format[2] == '\0') {
ArrowErrorSet(error, "Expected ':<width>' following 'w'");
return EINVAL;
@@ -874,25 +871,25 @@ static ArrowErrorCode ArrowSchemaViewParse(struct
ArrowSchemaView* schema_view,
// validity + offset + data
case 'z':
- schema_view->data_type = NANOARROW_TYPE_BINARY;
- schema_view->storage_data_type = NANOARROW_TYPE_BINARY;
+ schema_view->type = NANOARROW_TYPE_BINARY;
+ schema_view->storage_type = NANOARROW_TYPE_BINARY;
*format_end_out = format + 1;
return NANOARROW_OK;
case 'u':
- schema_view->data_type = NANOARROW_TYPE_STRING;
- schema_view->storage_data_type = NANOARROW_TYPE_STRING;
+ schema_view->type = NANOARROW_TYPE_STRING;
+ schema_view->storage_type = NANOARROW_TYPE_STRING;
*format_end_out = format + 1;
return NANOARROW_OK;
// validity + large_offset + data
case 'Z':
- schema_view->data_type = NANOARROW_TYPE_LARGE_BINARY;
- schema_view->storage_data_type = NANOARROW_TYPE_LARGE_BINARY;
+ schema_view->type = NANOARROW_TYPE_LARGE_BINARY;
+ schema_view->storage_type = NANOARROW_TYPE_LARGE_BINARY;
*format_end_out = format + 1;
return NANOARROW_OK;
case 'U':
- schema_view->data_type = NANOARROW_TYPE_LARGE_STRING;
- schema_view->storage_data_type = NANOARROW_TYPE_LARGE_STRING;
+ schema_view->type = NANOARROW_TYPE_LARGE_STRING;
+ schema_view->storage_type = NANOARROW_TYPE_LARGE_STRING;
*format_end_out = format + 1;
return NANOARROW_OK;
@@ -901,15 +898,15 @@ static ArrowErrorCode ArrowSchemaViewParse(struct
ArrowSchemaView* schema_view,
switch (format[1]) {
// list has validity + offset or offset
case 'l':
- schema_view->storage_data_type = NANOARROW_TYPE_LIST;
- schema_view->data_type = NANOARROW_TYPE_LIST;
+ schema_view->storage_type = NANOARROW_TYPE_LIST;
+ schema_view->type = NANOARROW_TYPE_LIST;
*format_end_out = format + 2;
return NANOARROW_OK;
// large list has validity + large_offset or large_offset
case 'L':
- schema_view->storage_data_type = NANOARROW_TYPE_LARGE_LIST;
- schema_view->data_type = NANOARROW_TYPE_LARGE_LIST;
+ schema_view->storage_type = NANOARROW_TYPE_LARGE_LIST;
+ schema_view->type = NANOARROW_TYPE_LARGE_LIST;
*format_end_out = format + 2;
return NANOARROW_OK;
@@ -920,19 +917,19 @@ static ArrowErrorCode ArrowSchemaViewParse(struct
ArrowSchemaView* schema_view,
return EINVAL;
}
- schema_view->storage_data_type = NANOARROW_TYPE_FIXED_SIZE_LIST;
- schema_view->data_type = NANOARROW_TYPE_FIXED_SIZE_LIST;
+ schema_view->storage_type = NANOARROW_TYPE_FIXED_SIZE_LIST;
+ schema_view->type = NANOARROW_TYPE_FIXED_SIZE_LIST;
schema_view->fixed_size =
(int32_t)strtol(format + 3, (char**)format_end_out, 10);
return NANOARROW_OK;
case 's':
- schema_view->storage_data_type = NANOARROW_TYPE_STRUCT;
- schema_view->data_type = NANOARROW_TYPE_STRUCT;
+ schema_view->storage_type = NANOARROW_TYPE_STRUCT;
+ schema_view->type = NANOARROW_TYPE_STRUCT;
*format_end_out = format + 2;
return NANOARROW_OK;
case 'm':
- schema_view->storage_data_type = NANOARROW_TYPE_MAP;
- schema_view->data_type = NANOARROW_TYPE_MAP;
+ schema_view->storage_type = NANOARROW_TYPE_MAP;
+ schema_view->type = NANOARROW_TYPE_MAP;
*format_end_out = format + 2;
return NANOARROW_OK;
@@ -940,12 +937,12 @@ static ArrowErrorCode ArrowSchemaViewParse(struct
ArrowSchemaView* schema_view,
case 'u':
switch (format[2]) {
case 'd':
- schema_view->storage_data_type = NANOARROW_TYPE_DENSE_UNION;
- schema_view->data_type = NANOARROW_TYPE_DENSE_UNION;
+ schema_view->storage_type = NANOARROW_TYPE_DENSE_UNION;
+ schema_view->type = NANOARROW_TYPE_DENSE_UNION;
break;
case 's':
- schema_view->storage_data_type = NANOARROW_TYPE_SPARSE_UNION;
- schema_view->data_type = NANOARROW_TYPE_SPARSE_UNION;
+ schema_view->storage_type = NANOARROW_TYPE_SPARSE_UNION;
+ schema_view->type = NANOARROW_TYPE_SPARSE_UNION;
break;
default:
ArrowErrorSet(error,
@@ -991,12 +988,12 @@ static ArrowErrorCode ArrowSchemaViewParse(struct
ArrowSchemaView* schema_view,
switch (format[2]) {
case 'D':
ArrowSchemaViewSetPrimitive(schema_view, NANOARROW_TYPE_INT32);
- schema_view->data_type = NANOARROW_TYPE_DATE32;
+ schema_view->type = NANOARROW_TYPE_DATE32;
*format_end_out = format + 3;
return NANOARROW_OK;
case 'm':
ArrowSchemaViewSetPrimitive(schema_view, NANOARROW_TYPE_INT64);
- schema_view->data_type = NANOARROW_TYPE_DATE64;
+ schema_view->type = NANOARROW_TYPE_DATE64;
*format_end_out = format + 3;
return NANOARROW_OK;
default:
@@ -1010,25 +1007,25 @@ static ArrowErrorCode ArrowSchemaViewParse(struct
ArrowSchemaView* schema_view,
switch (format[2]) {
case 's':
ArrowSchemaViewSetPrimitive(schema_view, NANOARROW_TYPE_INT32);
- schema_view->data_type = NANOARROW_TYPE_TIME32;
+ schema_view->type = NANOARROW_TYPE_TIME32;
schema_view->time_unit = NANOARROW_TIME_UNIT_SECOND;
*format_end_out = format + 3;
return NANOARROW_OK;
case 'm':
ArrowSchemaViewSetPrimitive(schema_view, NANOARROW_TYPE_INT32);
- schema_view->data_type = NANOARROW_TYPE_TIME32;
+ schema_view->type = NANOARROW_TYPE_TIME32;
schema_view->time_unit = NANOARROW_TIME_UNIT_MILLI;
*format_end_out = format + 3;
return NANOARROW_OK;
case 'u':
ArrowSchemaViewSetPrimitive(schema_view, NANOARROW_TYPE_INT64);
- schema_view->data_type = NANOARROW_TYPE_TIME64;
+ schema_view->type = NANOARROW_TYPE_TIME64;
schema_view->time_unit = NANOARROW_TIME_UNIT_MICRO;
*format_end_out = format + 3;
return NANOARROW_OK;
case 'n':
ArrowSchemaViewSetPrimitive(schema_view, NANOARROW_TYPE_INT64);
- schema_view->data_type = NANOARROW_TYPE_TIME64;
+ schema_view->type = NANOARROW_TYPE_TIME64;
schema_view->time_unit = NANOARROW_TIME_UNIT_NANO;
*format_end_out = format + 3;
return NANOARROW_OK;
@@ -1044,22 +1041,22 @@ static ArrowErrorCode ArrowSchemaViewParse(struct
ArrowSchemaView* schema_view,
switch (format[2]) {
case 's':
ArrowSchemaViewSetPrimitive(schema_view, NANOARROW_TYPE_INT32);
- schema_view->data_type = NANOARROW_TYPE_TIMESTAMP;
+ schema_view->type = NANOARROW_TYPE_TIMESTAMP;
schema_view->time_unit = NANOARROW_TIME_UNIT_SECOND;
break;
case 'm':
ArrowSchemaViewSetPrimitive(schema_view, NANOARROW_TYPE_INT32);
- schema_view->data_type = NANOARROW_TYPE_TIMESTAMP;
+ schema_view->type = NANOARROW_TYPE_TIMESTAMP;
schema_view->time_unit = NANOARROW_TIME_UNIT_MILLI;
break;
case 'u':
ArrowSchemaViewSetPrimitive(schema_view, NANOARROW_TYPE_INT64);
- schema_view->data_type = NANOARROW_TYPE_TIMESTAMP;
+ schema_view->type = NANOARROW_TYPE_TIMESTAMP;
schema_view->time_unit = NANOARROW_TIME_UNIT_MICRO;
break;
case 'n':
ArrowSchemaViewSetPrimitive(schema_view, NANOARROW_TYPE_INT64);
- schema_view->data_type = NANOARROW_TYPE_TIMESTAMP;
+ schema_view->type = NANOARROW_TYPE_TIMESTAMP;
schema_view->time_unit = NANOARROW_TIME_UNIT_NANO;
break;
default:
@@ -1075,8 +1072,7 @@ static ArrowErrorCode ArrowSchemaViewParse(struct
ArrowSchemaView* schema_view,
return EINVAL;
}
- schema_view->timezone.data = format + 4;
- schema_view->timezone.n_bytes = strlen(format + 4);
+ schema_view->timezone = format + 4;
*format_end_out = format + strlen(format);
return NANOARROW_OK;
@@ -1085,25 +1081,25 @@ static ArrowErrorCode ArrowSchemaViewParse(struct
ArrowSchemaView* schema_view,
switch (format[2]) {
case 's':
ArrowSchemaViewSetPrimitive(schema_view, NANOARROW_TYPE_INT32);
- schema_view->data_type = NANOARROW_TYPE_DURATION;
+ schema_view->type = NANOARROW_TYPE_DURATION;
schema_view->time_unit = NANOARROW_TIME_UNIT_SECOND;
*format_end_out = format + 3;
return NANOARROW_OK;
case 'm':
ArrowSchemaViewSetPrimitive(schema_view, NANOARROW_TYPE_INT32);
- schema_view->data_type = NANOARROW_TYPE_DURATION;
+ schema_view->type = NANOARROW_TYPE_DURATION;
schema_view->time_unit = NANOARROW_TIME_UNIT_MILLI;
*format_end_out = format + 3;
return NANOARROW_OK;
case 'u':
ArrowSchemaViewSetPrimitive(schema_view, NANOARROW_TYPE_INT64);
- schema_view->data_type = NANOARROW_TYPE_DURATION;
+ schema_view->type = NANOARROW_TYPE_DURATION;
schema_view->time_unit = NANOARROW_TIME_UNIT_MICRO;
*format_end_out = format + 3;
return NANOARROW_OK;
case 'n':
ArrowSchemaViewSetPrimitive(schema_view, NANOARROW_TYPE_INT64);
- schema_view->data_type = NANOARROW_TYPE_DURATION;
+ schema_view->type = NANOARROW_TYPE_DURATION;
schema_view->time_unit = NANOARROW_TIME_UNIT_NANO;
*format_end_out = format + 3;
return NANOARROW_OK;
@@ -1199,13 +1195,24 @@ static ArrowErrorCode ArrowSchemaViewValidateMap(struct
ArrowSchemaView* schema_
return EINVAL;
}
+ if (schema_view->schema->children[0]->flags & ARROW_FLAG_NULLABLE) {
+ ArrowErrorSet(error,
+ "Expected child of map type to be non-nullable but was
nullable");
+ return EINVAL;
+ }
+
+ if (schema_view->schema->children[0]->children[0]->flags &
ARROW_FLAG_NULLABLE) {
+ ArrowErrorSet(error, "Expected key of map type to be non-nullable but was
nullable");
+ return EINVAL;
+ }
+
return NANOARROW_OK;
}
static ArrowErrorCode ArrowSchemaViewValidateDictionary(
struct ArrowSchemaView* schema_view, struct ArrowError* error) {
// check for valid index type
- switch (schema_view->storage_data_type) {
+ switch (schema_view->storage_type) {
case NANOARROW_TYPE_UINT8:
case NANOARROW_TYPE_INT8:
case NANOARROW_TYPE_UINT16:
@@ -1229,9 +1236,9 @@ static ArrowErrorCode ArrowSchemaViewValidateDictionary(
}
static ArrowErrorCode ArrowSchemaViewValidate(struct ArrowSchemaView*
schema_view,
- enum ArrowType data_type,
+ enum ArrowType type,
struct ArrowError* error) {
- switch (data_type) {
+ switch (type) {
case NANOARROW_TYPE_NA:
case NANOARROW_TYPE_BOOL:
case NANOARROW_TYPE_UINT8:
@@ -1290,7 +1297,7 @@ static ArrowErrorCode ArrowSchemaViewValidate(struct
ArrowSchemaView* schema_vie
default:
ArrowErrorSet(error, "Expected a valid enum ArrowType value but found
%d",
- (int)schema_view->data_type);
+ (int)schema_view->type);
return EINVAL;
}
@@ -1335,7 +1342,7 @@ ArrowErrorCode ArrowSchemaViewInit(struct
ArrowSchemaView* schema_view,
memcpy(child_error, ArrowErrorMessage(error), 1024);
ArrowErrorSet(error, "Error parsing schema->format: %s", child_error);
}
-
+
return result;
}
@@ -1346,25 +1353,25 @@ ArrowErrorCode ArrowSchemaViewInit(struct
ArrowSchemaView* schema_view,
}
if (schema->dictionary != NULL) {
- schema_view->data_type = NANOARROW_TYPE_DICTIONARY;
+ schema_view->type = NANOARROW_TYPE_DICTIONARY;
}
- result = ArrowSchemaViewValidate(schema_view,
schema_view->storage_data_type, error);
+ result = ArrowSchemaViewValidate(schema_view, schema_view->storage_type,
error);
if (result != NANOARROW_OK) {
return result;
}
- if (schema_view->storage_data_type != schema_view->data_type) {
- result = ArrowSchemaViewValidate(schema_view, schema_view->data_type,
error);
+ if (schema_view->storage_type != schema_view->type) {
+ result = ArrowSchemaViewValidate(schema_view, schema_view->type, error);
if (result != NANOARROW_OK) {
return result;
}
}
- ArrowLayoutInit(&schema_view->layout, schema_view->storage_data_type);
- if (schema_view->storage_data_type == NANOARROW_TYPE_FIXED_SIZE_BINARY) {
+ ArrowLayoutInit(&schema_view->layout, schema_view->storage_type);
+ if (schema_view->storage_type == NANOARROW_TYPE_FIXED_SIZE_BINARY) {
schema_view->layout.element_size_bits[1] = schema_view->fixed_size * 8;
- } else if (schema_view->storage_data_type == NANOARROW_TYPE_FIXED_SIZE_LIST)
{
+ } else if (schema_view->storage_type == NANOARROW_TYPE_FIXED_SIZE_LIST) {
schema_view->layout.child_size_elements = schema_view->fixed_size;
}
@@ -1380,17 +1387,16 @@ ArrowErrorCode ArrowSchemaViewInit(struct
ArrowSchemaView* schema_view,
static int64_t ArrowSchemaTypeToStringInternal(struct ArrowSchemaView*
schema_view,
char* out, int64_t n) {
- const char* type_string = ArrowTypeString(schema_view->data_type);
- switch (schema_view->data_type) {
+ const char* type_string = ArrowTypeString(schema_view->type);
+ switch (schema_view->type) {
case NANOARROW_TYPE_DECIMAL128:
case NANOARROW_TYPE_DECIMAL256:
return snprintf(out, n, "%s(%d, %d)", type_string,
(int)schema_view->decimal_precision,
(int)schema_view->decimal_scale);
case NANOARROW_TYPE_TIMESTAMP:
- return snprintf(out, n, "%s('%s', '%.*s')", type_string,
- ArrowTimeUnitString(schema_view->time_unit),
- (int)schema_view->timezone.n_bytes,
schema_view->timezone.data);
+ return snprintf(out, n, "%s('%s', '%s')", type_string,
+ ArrowTimeUnitString(schema_view->time_unit),
schema_view->timezone);
case NANOARROW_TYPE_TIME32:
case NANOARROW_TYPE_TIME64:
case NANOARROW_TYPE_DURATION:
@@ -1426,23 +1432,24 @@ int64_t ArrowSchemaToString(struct ArrowSchema* schema,
char* out, int64_t n,
// Extension type and dictionary should include both the top-level type
// and the storage type.
- int is_extension = schema_view.extension_name.n_bytes > 0;
+ int is_extension = schema_view.extension_name.size_bytes > 0;
int is_dictionary = schema->dictionary != NULL;
int64_t n_chars = 0;
int64_t n_chars_last = 0;
// Uncommon but not technically impossible that both are true
if (is_extension && is_dictionary) {
- n_chars_last = snprintf(
- out + n_chars, n, "%.*s{dictionary(%s)<",
(int)schema_view.extension_name.n_bytes,
- schema_view.extension_name.data,
ArrowTypeString(schema_view.storage_data_type));
+ n_chars_last = snprintf(out + n_chars, n, "%.*s{dictionary(%s)<",
+ (int)schema_view.extension_name.size_bytes,
+ schema_view.extension_name.data,
+ ArrowTypeString(schema_view.storage_type));
} else if (is_extension) {
n_chars_last =
- snprintf(out + n_chars, n, "%.*s{",
(int)schema_view.extension_name.n_bytes,
+ snprintf(out + n_chars, n, "%.*s{",
(int)schema_view.extension_name.size_bytes,
schema_view.extension_name.data);
} else if (is_dictionary) {
n_chars_last = snprintf(out + n_chars, n, "dictionary(%s)<",
- ArrowTypeString(schema_view.storage_data_type));
+ ArrowTypeString(schema_view.storage_type));
}
n_chars += n_chars_last;
@@ -1550,7 +1557,7 @@ ArrowErrorCode ArrowMetadataReaderRead(struct
ArrowMetadataReader* reader,
pos += sizeof(int32_t);
key_out->data = reader->metadata + reader->offset + pos;
- key_out->n_bytes = key_size;
+ key_out->size_bytes = key_size;
pos += key_size;
int32_t value_size;
@@ -1558,7 +1565,7 @@ ArrowErrorCode ArrowMetadataReaderRead(struct
ArrowMetadataReader* reader,
pos += sizeof(int32_t);
value_out->data = reader->metadata + reader->offset + pos;
- value_out->n_bytes = value_size;
+ value_out->size_bytes = value_size;
pos += value_size;
reader->offset += pos;
@@ -1578,7 +1585,7 @@ int64_t ArrowMetadataSizeOf(const char* metadata) {
int64_t size = sizeof(int32_t);
while (ArrowMetadataReaderRead(&reader, &key, &value) == NANOARROW_OK) {
- size += sizeof(int32_t) + key.n_bytes + sizeof(int32_t) + value.n_bytes;
+ size += sizeof(int32_t) + key.size_bytes + sizeof(int32_t) +
value.size_bytes;
}
return size;
@@ -1594,11 +1601,11 @@ static ArrowErrorCode
ArrowMetadataGetValueInternal(const char* metadata,
while (ArrowMetadataReaderRead(&reader, &existing_key, &existing_value) ==
NANOARROW_OK) {
- int key_equal = key->n_bytes == existing_key.n_bytes &&
- strncmp(key->data, existing_key.data,
existing_key.n_bytes) == 0;
+ int key_equal = key->size_bytes == existing_key.size_bytes &&
+ strncmp(key->data, existing_key.data,
existing_key.size_bytes) == 0;
if (key_equal) {
value_out->data = existing_value.data;
- value_out->n_bytes = existing_value.n_bytes;
+ value_out->size_bytes = existing_value.size_bytes;
break;
}
}
@@ -1645,8 +1652,8 @@ static ArrowErrorCode
ArrowMetadataBuilderAppendInternal(struct ArrowBuffer* buf
int32_t n_keys;
memcpy(&n_keys, buffer->data, sizeof(int32_t));
- int32_t key_size = (int32_t)key->n_bytes;
- int32_t value_size = (int32_t)value->n_bytes;
+ int32_t key_size = (int32_t)key->size_bytes;
+ int32_t value_size = (int32_t)value->size_bytes;
NANOARROW_RETURN_NOT_OK(ArrowBufferReserve(
buffer, sizeof(int32_t) + key_size + sizeof(int32_t) + value_size));
@@ -1694,9 +1701,9 @@ static ArrowErrorCode
ArrowMetadataBuilderSetInternal(struct ArrowBuffer* buffer
return result;
}
- if (key->n_bytes == existing_key.n_bytes &&
+ if (key->size_bytes == existing_key.size_bytes &&
strncmp((const char*)key->data, (const char*)existing_key.data,
- existing_key.n_bytes) == 0) {
+ existing_key.size_bytes) == 0) {
result = ArrowMetadataBuilderAppendInternal(&new_buffer, key, value);
value = NULL;
} else {
@@ -2060,7 +2067,7 @@ static ArrowErrorCode ArrowArrayReserveInternal(struct
ArrowArray* array,
}
int64_t additional_size_bytes =
- array_view->buffer_views[i].n_bytes - ArrowArrayBuffer(array,
i)->size_bytes;
+ array_view->buffer_views[i].size_bytes - ArrowArrayBuffer(array,
i)->size_bytes;
if (additional_size_bytes > 0) {
NANOARROW_RETURN_NOT_OK(
@@ -2147,7 +2154,7 @@ static ArrowErrorCode ArrowArrayCheckInternalBufferSizes(
continue;
}
- int64_t expected_size = array_view->buffer_views[i].n_bytes;
+ int64_t expected_size = array_view->buffer_views[i].size_bytes;
int64_t actual_size = ArrowArrayBuffer(array, i)->size_bytes;
if (actual_size < expected_size) {
@@ -2248,7 +2255,7 @@ ArrowErrorCode ArrowArrayViewInitFromSchema(struct
ArrowArrayView* array_view,
return result;
}
- ArrowArrayViewInitFromType(array_view, schema_view.storage_data_type);
+ ArrowArrayViewInitFromType(array_view, schema_view.storage_type);
array_view->layout = schema_view.layout;
result = ArrowArrayViewAllocateChildren(array_view, schema->n_children);
@@ -2311,25 +2318,25 @@ void ArrowArrayViewSetLength(struct ArrowArrayView*
array_view, int64_t length)
switch (array_view->layout.buffer_type[i]) {
case NANOARROW_BUFFER_TYPE_VALIDITY:
- array_view->buffer_views[i].n_bytes = _ArrowBytesForBits(length);
+ array_view->buffer_views[i].size_bytes = _ArrowBytesForBits(length);
continue;
case NANOARROW_BUFFER_TYPE_DATA_OFFSET:
// Probably don't want/need to rely on the producer to have allocated
an
// offsets buffer of length 1 for a zero-size array
- array_view->buffer_views[i].n_bytes =
+ array_view->buffer_views[i].size_bytes =
(length != 0) * element_size_bytes * (length + 1);
continue;
case NANOARROW_BUFFER_TYPE_DATA:
- array_view->buffer_views[i].n_bytes =
+ array_view->buffer_views[i].size_bytes =
_ArrowRoundUpToMultipleOf8(array_view->layout.element_size_bits[i]
* length) /
8;
continue;
case NANOARROW_BUFFER_TYPE_TYPE_ID:
case NANOARROW_BUFFER_TYPE_UNION_OFFSET:
- array_view->buffer_views[i].n_bytes = element_size_bytes * length;
+ array_view->buffer_views[i].size_bytes = element_size_bytes * length;
continue;
case NANOARROW_BUFFER_TYPE_NONE:
- array_view->buffer_views[i].n_bytes = 0;
+ array_view->buffer_views[i].size_bytes = 0;
continue;
}
}
@@ -2368,7 +2375,7 @@ ArrowErrorCode ArrowArrayViewSetArray(struct
ArrowArrayView* array_view,
// If the null_count is 0, the validity buffer can be NULL
if (array_view->layout.buffer_type[i] == NANOARROW_BUFFER_TYPE_VALIDITY &&
array->null_count == 0 && array->buffers[i] == NULL) {
- array_view->buffer_views[i].n_bytes = 0;
+ array_view->buffer_views[i].size_bytes = 0;
}
array_view->buffer_views[i].data.data = array->buffers[i];
@@ -2389,18 +2396,18 @@ ArrowErrorCode ArrowArrayViewSetArray(struct
ArrowArrayView* array_view,
switch (array_view->storage_type) {
case NANOARROW_TYPE_STRING:
case NANOARROW_TYPE_BINARY:
- if (array_view->buffer_views[1].n_bytes != 0) {
+ if (array_view->buffer_views[1].size_bytes != 0) {
last_offset =
array_view->buffer_views[1].data.as_int32[array->offset +
array->length];
- array_view->buffer_views[2].n_bytes = last_offset;
+ array_view->buffer_views[2].size_bytes = last_offset;
}
break;
case NANOARROW_TYPE_LARGE_STRING:
case NANOARROW_TYPE_LARGE_BINARY:
- if (array_view->buffer_views[1].n_bytes != 0) {
+ if (array_view->buffer_views[1].size_bytes != 0) {
last_offset =
array_view->buffer_views[1].data.as_int64[array->offset +
array->length];
- array_view->buffer_views[2].n_bytes = last_offset;
+ array_view->buffer_views[2].size_bytes = last_offset;
}
break;
case NANOARROW_TYPE_STRUCT:
@@ -2426,7 +2433,7 @@ ArrowErrorCode ArrowArrayViewSetArray(struct
ArrowArrayView* array_view,
return EINVAL;
}
- if (array_view->buffer_views[1].n_bytes != 0) {
+ if (array_view->buffer_views[1].size_bytes != 0) {
last_offset =
array_view->buffer_views[1].data.as_int32[array->offset +
array->length];
if (array->children[0]->length < last_offset) {
@@ -2448,7 +2455,7 @@ ArrowErrorCode ArrowArrayViewSetArray(struct
ArrowArrayView* array_view,
return EINVAL;
}
- if (array_view->buffer_views[1].n_bytes != 0) {
+ if (array_view->buffer_views[1].size_bytes != 0) {
last_offset =
array_view->buffer_views[1].data.as_int64[array->offset +
array->length];
if (array->children[0]->length < last_offset) {
diff --git a/c/vendor/nanoarrow/nanoarrow.h b/c/vendor/nanoarrow/nanoarrow.h
index 7f29e71..8fd74a0 100644
--- a/c/vendor/nanoarrow/nanoarrow.h
+++ b/c/vendor/nanoarrow/nanoarrow.h
@@ -29,8 +29,6 @@
// #define NANOARROW_NAMESPACE YourNamespaceHere
-#define NANOARROW_BUILD_ID "gha695f08d7a07a64c0e13eb3444d61b2a6a8d8e5df"
-
#endif
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
@@ -388,13 +386,13 @@ enum ArrowBufferType {
struct ArrowStringView {
/// \brief A pointer to the start of the string
///
- /// If n_bytes is 0, this value may be NULL.
+ /// If size_bytes is 0, this value may be NULL.
const char* data;
/// \brief The size of the string in bytes,
///
/// (Not including the null terminator.)
- int64_t n_bytes;
+ int64_t size_bytes;
};
/// \brief Return a view of a const C string
@@ -404,9 +402,9 @@ static inline struct ArrowStringView ArrowCharView(const
char* value) {
out.data = value;
if (value) {
- out.n_bytes = (int64_t)strlen(value);
+ out.size_bytes = (int64_t)strlen(value);
} else {
- out.n_bytes = 0;
+ out.size_bytes = 0;
}
return out;
@@ -417,7 +415,7 @@ static inline struct ArrowStringView ArrowCharView(const
char* value) {
struct ArrowBufferView {
/// \brief A pointer to the start of the buffer
///
- /// If n_bytes is 0, this value may be NULL.
+ /// If size_bytes is 0, this value may be NULL.
union {
const void* data;
const int8_t* as_int8;
@@ -434,7 +432,7 @@ struct ArrowBufferView {
} data;
/// \brief The size of the buffer in bytes
- int64_t n_bytes;
+ int64_t size_bytes;
};
/// \brief Array buffer allocation and deallocation
@@ -600,7 +598,7 @@ struct ArrowArrayPrivateData {
// If using CMake, optionally pass -DNANOARROW_NAMESPACE=MyNamespace which
will set this
-// define in build_id.h. If not, you can optionally #define NANOARROW_NAMESPACE
+// define in nanoarrow_config.h. If not, you can optionally #define
NANOARROW_NAMESPACE
// MyNamespace here.
// This section remaps the non-prefixed symbols to the prefixed symbols so that
@@ -610,7 +608,6 @@ struct ArrowArrayPrivateData {
#define NANOARROW_CAT(A, B) A##B
#define NANOARROW_SYMBOL(A, B) NANOARROW_CAT(A, B)
-#define ArrowNanoarrowBuildId NANOARROW_SYMBOL(NANOARROW_NAMESPACE,
ArrowNanoarrowBuildId)
#define ArrowNanoarrowVersion NANOARROW_SYMBOL(NANOARROW_NAMESPACE,
ArrowNanoarrowVersion)
#define ArrowNanoarrowVersionInt \
NANOARROW_SYMBOL(NANOARROW_NAMESPACE, ArrowNanoarrowVersionInt)
@@ -776,9 +773,6 @@ const char* ArrowErrorMessage(struct ArrowError* error);
///
/// @{
-/// \brief Return the build id against which the library was compiled
-const char* ArrowNanoarrowBuildId(void);
-
/// \brief Return a version string in the form "major.minor.patch"
const char* ArrowNanoarrowVersion();
@@ -842,44 +836,42 @@ ArrowErrorCode ArrowSchemaSetTypeStruct(struct
ArrowSchema* schema, int64_t n_ch
/// \brief Set the format field of a fixed-size schema
///
-/// Returns EINVAL for fixed_size <= 0 or for data_type that is not
+/// Returns EINVAL for fixed_size <= 0 or for type that is not
/// NANOARROW_TYPE_FIXED_SIZE_BINARY or NANOARROW_TYPE_FIXED_SIZE_LIST.
/// For NANOARROW_TYPE_FIXED_SIZE_LIST, the appropriate number of children are
/// allocated, initialized, and named; however, the caller must
/// ArrowSchemaSetType() the first child. Schema must have been initialized
using
/// ArrowSchemaInit() or ArrowSchemaDeepCopy().
ArrowErrorCode ArrowSchemaSetTypeFixedSize(struct ArrowSchema* schema,
- enum ArrowType data_type, int32_t
fixed_size);
+ enum ArrowType type, int32_t
fixed_size);
/// \brief Set the format field of a decimal schema
///
-/// Returns EINVAL for scale <= 0 or for data_type that is not
+/// Returns EINVAL for scale <= 0 or for type that is not
/// NANOARROW_TYPE_DECIMAL128 or NANOARROW_TYPE_DECIMAL256. Schema must have
been
/// initialized using ArrowSchemaInit() or ArrowSchemaDeepCopy().
-ArrowErrorCode ArrowSchemaSetTypeDecimal(struct ArrowSchema* schema,
- enum ArrowType data_type,
+ArrowErrorCode ArrowSchemaSetTypeDecimal(struct ArrowSchema* schema, enum
ArrowType type,
int32_t decimal_precision,
int32_t decimal_scale);
/// \brief Set the format field of a time, timestamp, or duration schema
///
-/// Returns EINVAL for data_type that is not
+/// Returns EINVAL for type that is not
/// NANOARROW_TYPE_TIME32, NANOARROW_TYPE_TIME64,
/// NANOARROW_TYPE_TIMESTAMP, or NANOARROW_TYPE_DURATION. The
-/// timezone parameter must be NULL for a non-timestamp data_type. Schema must
have been
+/// timezone parameter must be NULL for a non-timestamp type. Schema must have
been
/// initialized using ArrowSchemaInit() or ArrowSchemaDeepCopy().
-ArrowErrorCode ArrowSchemaSetTypeDateTime(struct ArrowSchema* schema,
- enum ArrowType data_type,
+ArrowErrorCode ArrowSchemaSetTypeDateTime(struct ArrowSchema* schema, enum
ArrowType type,
enum ArrowTimeUnit time_unit,
const char* timezone);
/// \brief Seet the format field of a union schema
///
-/// Returns EINVAL for a data_type that is not NANOARROW_TYPE_DENSE_UNION
+/// Returns EINVAL for a type that is not NANOARROW_TYPE_DENSE_UNION
/// or NANOARROW_TYPE_SPARSE_UNION. The specified number of children are
/// allocated, and initialized.
-ArrowErrorCode ArrowSchemaSetTypeUnion(struct ArrowSchema* schema,
- enum ArrowType data_type, int64_t
n_children);
+ArrowErrorCode ArrowSchemaSetTypeUnion(struct ArrowSchema* schema, enum
ArrowType type,
+ int64_t n_children);
/// \brief Make a (recursive) copy of a schema
///
@@ -1008,14 +1000,14 @@ struct ArrowSchemaView {
/// This value will never be NANOARROW_TYPE_EXTENSION (see
/// extension_name and/or extension_metadata to check for
/// an extension type).
- enum ArrowType data_type;
+ enum ArrowType type;
/// \brief The storage data type represented by the schema
///
/// This value will never be NANOARROW_TYPE_DICTIONARY,
NANOARROW_TYPE_EXTENSION
/// or any datetime type. This value represents only the type required to
/// interpret the buffers in the array.
- enum ArrowType storage_data_type;
+ enum ArrowType storage_type;
/// \brief The storage layout represented by the schema
struct ArrowLayout layout;
@@ -1068,15 +1060,15 @@ struct ArrowSchemaView {
/// \brief Format timezone parameter
///
/// This value is set when parsing a timestamp type and represents
- /// the timezone format parameter. The ArrowStrintgView points to
- /// data within the schema and the value is undefined for other types.
- struct ArrowStringView timezone;
+ /// the timezone format parameter. This value points to
+ /// data within the schema and is undefined for other types.
+ const char* timezone;
/// \brief Union type ids parameter
///
/// This value is set when parsing a union type and represents
- /// type ids parameter. The ArrowStringView points to
- /// data within the schema and the value is undefined for other types.
+ /// type ids parameter. This value points to
+ /// data within the schema and is undefined for other types.
const char* union_type_ids;
};
@@ -1481,10 +1473,12 @@ void ArrowArrayViewReset(struct ArrowArrayView*
array_view);
static inline int8_t ArrowArrayViewIsNull(struct ArrowArrayView* array_view,
int64_t i);
/// \brief Get the type id of a union array element
-static inline int8_t ArrowArrayViewUnionTypeId(struct ArrowArrayView*
array_view, int64_t i);
+static inline int8_t ArrowArrayViewUnionTypeId(struct ArrowArrayView*
array_view,
+ int64_t i);
/// \brief Get the child index of a union array element
-static inline int8_t ArrowArrayViewUnionChildIndex(struct ArrowArrayView*
array_view, int64_t i);
+static inline int8_t ArrowArrayViewUnionChildIndex(struct ArrowArrayView*
array_view,
+ int64_t i);
/// \brief Get the index to use into the relevant union child array
static inline int64_t ArrowArrayViewUnionChildOffset(struct ArrowArrayView*
array_view,
@@ -1750,12 +1744,12 @@ static inline ArrowErrorCode
ArrowBufferAppendFloat(struct ArrowBuffer* buffer,
static inline ArrowErrorCode ArrowBufferAppendStringView(struct ArrowBuffer*
buffer,
struct
ArrowStringView value) {
- return ArrowBufferAppend(buffer, value.data, value.n_bytes);
+ return ArrowBufferAppend(buffer, value.data, value.size_bytes);
}
static inline ArrowErrorCode ArrowBufferAppendBufferView(struct ArrowBuffer*
buffer,
struct
ArrowBufferView value) {
- return ArrowBufferAppend(buffer, value.data.data, value.n_bytes);
+ return ArrowBufferAppend(buffer, value.data.data, value.size_bytes);
}
static inline ArrowErrorCode ArrowBufferAppendFill(struct ArrowBuffer* buffer,
@@ -2522,33 +2516,33 @@ static inline ArrowErrorCode
ArrowArrayAppendBytes(struct ArrowArray* array,
case NANOARROW_TYPE_STRING:
case NANOARROW_TYPE_BINARY:
offset = ((int32_t*)offset_buffer->data)[array->length];
- if ((offset + value.n_bytes) > INT32_MAX) {
+ if ((offset + value.size_bytes) > INT32_MAX) {
return EINVAL;
}
- offset += value.n_bytes;
+ offset += value.size_bytes;
NANOARROW_RETURN_NOT_OK(ArrowBufferAppend(offset_buffer, &offset,
sizeof(int32_t)));
NANOARROW_RETURN_NOT_OK(
- ArrowBufferAppend(data_buffer, value.data.data, value.n_bytes));
+ ArrowBufferAppend(data_buffer, value.data.data, value.size_bytes));
break;
case NANOARROW_TYPE_LARGE_STRING:
case NANOARROW_TYPE_LARGE_BINARY:
large_offset = ((int64_t*)offset_buffer->data)[array->length];
- large_offset += value.n_bytes;
+ large_offset += value.size_bytes;
NANOARROW_RETURN_NOT_OK(
ArrowBufferAppend(offset_buffer, &large_offset, sizeof(int64_t)));
NANOARROW_RETURN_NOT_OK(
- ArrowBufferAppend(data_buffer, value.data.data, value.n_bytes));
+ ArrowBufferAppend(data_buffer, value.data.data, value.size_bytes));
break;
case NANOARROW_TYPE_FIXED_SIZE_BINARY:
- if (value.n_bytes != fixed_size_bytes) {
+ if (value.size_bytes != fixed_size_bytes) {
return EINVAL;
}
NANOARROW_RETURN_NOT_OK(
- ArrowBufferAppend(data_buffer, value.data.data, value.n_bytes));
+ ArrowBufferAppend(data_buffer, value.data.data, value.size_bytes));
break;
default:
return EINVAL;
@@ -2569,7 +2563,7 @@ static inline ArrowErrorCode
ArrowArrayAppendString(struct ArrowArray* array,
struct ArrowBufferView buffer_view;
buffer_view.data.data = value.data;
- buffer_view.n_bytes = value.n_bytes;
+ buffer_view.size_bytes = value.size_bytes;
switch (private_data->storage_type) {
case NANOARROW_TYPE_STRING:
@@ -2833,20 +2827,22 @@ static inline struct ArrowStringView
ArrowArrayViewGetStringUnsafe(
case NANOARROW_TYPE_STRING:
case NANOARROW_TYPE_BINARY:
view.data = data_view + offsets_view->data.as_int32[i];
- view.n_bytes = offsets_view->data.as_int32[i + 1] -
offsets_view->data.as_int32[i];
+ view.size_bytes =
+ offsets_view->data.as_int32[i + 1] - offsets_view->data.as_int32[i];
break;
case NANOARROW_TYPE_LARGE_STRING:
case NANOARROW_TYPE_LARGE_BINARY:
view.data = data_view + offsets_view->data.as_int64[i];
- view.n_bytes = offsets_view->data.as_int64[i + 1] -
offsets_view->data.as_int64[i];
+ view.size_bytes =
+ offsets_view->data.as_int64[i + 1] - offsets_view->data.as_int64[i];
break;
case NANOARROW_TYPE_FIXED_SIZE_BINARY:
- view.n_bytes = array_view->layout.element_size_bits[1] / 8;
- view.data = array_view->buffer_views[1].data.as_char + (i *
view.n_bytes);
+ view.size_bytes = array_view->layout.element_size_bits[1] / 8;
+ view.data = array_view->buffer_views[1].data.as_char + (i *
view.size_bytes);
break;
default:
view.data = NULL;
- view.n_bytes = 0;
+ view.size_bytes = 0;
break;
}
@@ -2863,21 +2859,24 @@ static inline struct ArrowBufferView
ArrowArrayViewGetBytesUnsafe(
switch (array_view->storage_type) {
case NANOARROW_TYPE_STRING:
case NANOARROW_TYPE_BINARY:
- view.n_bytes = offsets_view->data.as_int32[i + 1] -
offsets_view->data.as_int32[i];
+ view.size_bytes =
+ offsets_view->data.as_int32[i + 1] - offsets_view->data.as_int32[i];
view.data.as_uint8 = data_view + offsets_view->data.as_int32[i];
break;
case NANOARROW_TYPE_LARGE_STRING:
case NANOARROW_TYPE_LARGE_BINARY:
- view.n_bytes = offsets_view->data.as_int64[i + 1] -
offsets_view->data.as_int64[i];
+ view.size_bytes =
+ offsets_view->data.as_int64[i + 1] - offsets_view->data.as_int64[i];
view.data.as_uint8 = data_view + offsets_view->data.as_int64[i];
break;
case NANOARROW_TYPE_FIXED_SIZE_BINARY:
- view.n_bytes = array_view->layout.element_size_bits[1] / 8;
- view.data.as_uint8 = array_view->buffer_views[1].data.as_uint8 + (i *
view.n_bytes);
+ view.size_bytes = array_view->layout.element_size_bits[1] / 8;
+ view.data.as_uint8 =
+ array_view->buffer_views[1].data.as_uint8 + (i * view.size_bytes);
break;
default:
view.data.data = NULL;
- view.n_bytes = 0;
+ view.size_bytes = 0;
break;
}