You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by li...@apache.org on 2023/05/22 17:48:35 UTC
[arrow-adbc] branch main updated: refactor(c): Use ArrowArrayViewListChildOffset from nanoarrow (#696)
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 ecf172e refactor(c): Use ArrowArrayViewListChildOffset from nanoarrow (#696)
ecf172e is described below
commit ecf172e42dd08f9327b5050ffaeda263dbb0cf81
Author: William Ayd <wi...@icloud.com>
AuthorDate: Mon May 22 10:48:29 2023 -0700
refactor(c): Use ArrowArrayViewListChildOffset from nanoarrow (#696)
Related to
https://github.com/apache/arrow-adbc/pull/679#discussion_r1195786712
this pulls down the nanoarrow change
https://github.com/apache/arrow-nanoarrow/pull/197
---
c/validation/adbc_validation.cc | 36 ++++++++++++++++++------------------
c/validation/adbc_validation_util.cc | 14 --------------
c/validation/adbc_validation_util.h | 6 ------
c/vendor/nanoarrow/nanoarrow.h | 17 +++++++++++++++++
4 files changed, 35 insertions(+), 38 deletions(-)
diff --git a/c/validation/adbc_validation.cc b/c/validation/adbc_validation.cc
index 5579d15..b99f469 100644
--- a/c/validation/adbc_validation.cc
+++ b/c/validation/adbc_validation.cc
@@ -515,9 +515,9 @@ void ConnectionTest::TestMetadataGetObjectsDbSchemas() {
ArrowArrayViewGetStringUnsafe(reader.array_view->children[0], row);
const int64_t start_offset =
- ArrowArrayViewGetOffsetUnsafe(catalog_db_schemas_list, row);
+ ArrowArrayViewListChildOffset(catalog_db_schemas_list, row);
const int64_t end_offset =
- ArrowArrayViewGetOffsetUnsafe(catalog_db_schemas_list, row + 1);
+ ArrowArrayViewListChildOffset(catalog_db_schemas_list, row + 1);
ASSERT_GE(end_offset, start_offset)
<< "Row " << row << " (Catalog "
<< std::string(catalog_name.data, catalog_name.size_bytes)
@@ -551,9 +551,9 @@ void ConnectionTest::TestMetadataGetObjectsDbSchemas() {
<< "Row " << row << " should have non-null catalog_db_schemas";
const int64_t start_offset =
- ArrowArrayViewGetOffsetUnsafe(catalog_db_schemas_list, row);
+ ArrowArrayViewListChildOffset(catalog_db_schemas_list, row);
const int64_t end_offset =
- ArrowArrayViewGetOffsetUnsafe(catalog_db_schemas_list, row + 1);
+ ArrowArrayViewListChildOffset(catalog_db_schemas_list, row + 1);
ASSERT_EQ(start_offset, end_offset);
}
ASSERT_NO_FATAL_FAILURE(reader.Next());
@@ -606,17 +606,17 @@ void ConnectionTest::TestMetadataGetObjectsTables() {
<< "Row " << row << " should have non-null catalog_db_schemas";
for (int64_t db_schemas_index =
- ArrowArrayViewGetOffsetUnsafe(catalog_db_schemas_list, row);
+ ArrowArrayViewListChildOffset(catalog_db_schemas_list, row);
db_schemas_index <
- ArrowArrayViewGetOffsetUnsafe(catalog_db_schemas_list, row + 1);
+ ArrowArrayViewListChildOffset(catalog_db_schemas_list, row + 1);
db_schemas_index++) {
ASSERT_FALSE(ArrowArrayViewIsNull(db_schema_tables_list, db_schemas_index))
<< "Row " << row << " should have non-null db_schema_tables";
for (int64_t tables_index =
- ArrowArrayViewGetOffsetUnsafe(db_schema_tables_list, db_schemas_index);
+ ArrowArrayViewListChildOffset(db_schema_tables_list, db_schemas_index);
tables_index <
- ArrowArrayViewGetOffsetUnsafe(db_schema_tables_list, db_schemas_index + 1);
+ ArrowArrayViewListChildOffset(db_schema_tables_list, db_schemas_index + 1);
tables_index++) {
ArrowStringView table_name = ArrowArrayViewGetStringUnsafe(
db_schema_tables->children[0], tables_index);
@@ -680,17 +680,17 @@ void ConnectionTest::TestMetadataGetObjectsTablesTypes() {
<< "Row " << row << " should have non-null catalog_db_schemas";
for (int64_t db_schemas_index =
- ArrowArrayViewGetOffsetUnsafe(catalog_db_schemas_list, row);
+ ArrowArrayViewListChildOffset(catalog_db_schemas_list, row);
db_schemas_index <
- ArrowArrayViewGetOffsetUnsafe(catalog_db_schemas_list, row + 1);
+ ArrowArrayViewListChildOffset(catalog_db_schemas_list, row + 1);
db_schemas_index++) {
ASSERT_FALSE(ArrowArrayViewIsNull(db_schema_tables_list, db_schemas_index))
<< "Row " << row << " should have non-null db_schema_tables";
for (int64_t tables_index =
- ArrowArrayViewGetOffsetUnsafe(db_schema_tables_list, db_schemas_index);
+ ArrowArrayViewListChildOffset(db_schema_tables_list, db_schemas_index);
tables_index <
- ArrowArrayViewGetOffsetUnsafe(db_schema_tables_list, db_schemas_index + 1);
+ ArrowArrayViewListChildOffset(db_schema_tables_list, db_schemas_index + 1);
tables_index++) {
ArrowStringView table_name = ArrowArrayViewGetStringUnsafe(
db_schema_tables->children[0], tables_index);
@@ -777,9 +777,9 @@ void ConnectionTest::TestMetadataGetObjectsColumns() {
<< "Row " << row << " should have non-null catalog_db_schemas";
for (int64_t db_schemas_index =
- ArrowArrayViewGetOffsetUnsafe(catalog_db_schemas_list, row);
+ ArrowArrayViewListChildOffset(catalog_db_schemas_list, row);
db_schemas_index <
- ArrowArrayViewGetOffsetUnsafe(catalog_db_schemas_list, row + 1);
+ ArrowArrayViewListChildOffset(catalog_db_schemas_list, row + 1);
db_schemas_index++) {
ASSERT_FALSE(ArrowArrayViewIsNull(db_schema_tables_list, db_schemas_index))
<< "Row " << row << " should have non-null db_schema_tables";
@@ -788,9 +788,9 @@ void ConnectionTest::TestMetadataGetObjectsColumns() {
catalog_db_schemas->children[0], db_schemas_index);
for (int64_t tables_index =
- ArrowArrayViewGetOffsetUnsafe(db_schema_tables_list, db_schemas_index);
+ ArrowArrayViewListChildOffset(db_schema_tables_list, db_schemas_index);
tables_index <
- ArrowArrayViewGetOffsetUnsafe(db_schema_tables_list, db_schemas_index + 1);
+ ArrowArrayViewListChildOffset(db_schema_tables_list, db_schemas_index + 1);
tables_index++) {
ArrowStringView table_name = ArrowArrayViewGetStringUnsafe(
db_schema_tables->children[0], tables_index);
@@ -807,9 +807,9 @@ void ConnectionTest::TestMetadataGetObjectsColumns() {
found_expected_table = true;
for (int64_t columns_index =
- ArrowArrayViewGetOffsetUnsafe(table_columns_list, tables_index);
+ ArrowArrayViewListChildOffset(table_columns_list, tables_index);
columns_index <
- ArrowArrayViewGetOffsetUnsafe(table_columns_list, tables_index + 1);
+ ArrowArrayViewListChildOffset(table_columns_list, tables_index + 1);
columns_index++) {
ArrowStringView name = ArrowArrayViewGetStringUnsafe(
table_columns->children[0], columns_index);
diff --git a/c/validation/adbc_validation_util.cc b/c/validation/adbc_validation_util.cc
index 17cb312..7978947 100644
--- a/c/validation/adbc_validation_util.cc
+++ b/c/validation/adbc_validation_util.cc
@@ -64,20 +64,6 @@ std::string ToString(struct ArrowArrayStream* stream) {
return "";
}
-int64_t ArrowArrayViewGetOffsetUnsafe(struct ArrowArrayView* array_view, int64_t i) {
- struct ArrowBufferView* data_view = &array_view->buffer_views[1];
- i += array_view->array->offset;
- switch (array_view->storage_type) {
- case NANOARROW_TYPE_LIST:
- case NANOARROW_TYPE_MAP:
- return data_view->data.as_int32[i];
- case NANOARROW_TYPE_LARGE_LIST:
- return data_view->data.as_int64[i];
- default:
- return INT64_MAX;
- }
-}
-
IsErrno::IsErrno(int expected, struct ArrowArrayStream* stream, struct ArrowError* error)
: expected_(expected), stream_(stream), error_(error) {}
diff --git a/c/validation/adbc_validation_util.h b/c/validation/adbc_validation_util.h
index f64f64b..fa0544d 100644
--- a/c/validation/adbc_validation_util.h
+++ b/c/validation/adbc_validation_util.h
@@ -42,12 +42,6 @@ std::string ToString(struct AdbcError* error);
std::string ToString(struct ArrowError* error);
std::string ToString(struct ArrowArrayStream* stream);
-// ------------------------------------------------------------
-// Nanoarrow helpers
-
-/// \brief Get the array offset for a particular index
-int64_t ArrowArrayViewGetOffsetUnsafe(struct ArrowArrayView* array_view, int64_t i);
-
// ------------------------------------------------------------
// Helper to manage C Data Interface/Nanoarrow resources with RAII
diff --git a/c/vendor/nanoarrow/nanoarrow.h b/c/vendor/nanoarrow/nanoarrow.h
index f337795..6bd71f0 100644
--- a/c/vendor/nanoarrow/nanoarrow.h
+++ b/c/vendor/nanoarrow/nanoarrow.h
@@ -1625,6 +1625,10 @@ static inline int8_t ArrowArrayViewUnionChildIndex(struct ArrowArrayView* array_
static inline int64_t ArrowArrayViewUnionChildOffset(struct ArrowArrayView* array_view,
int64_t i);
+/// \brief Get the index to use into the relevant list child array
+static inline int64_t ArrowArrayViewListChildOffset(struct ArrowArrayView* array_view,
+ int64_t i);
+
/// \brief Get an element in an ArrowArrayView as an integer
///
/// This function does not check for null values, that values are actually integers, or
@@ -2910,6 +2914,19 @@ static inline int64_t ArrowArrayViewUnionChildOffset(struct ArrowArrayView* arra
}
}
+
+static inline int64_t ArrowArrayViewListChildOffset(struct ArrowArrayView* array_view,
+ int64_t i) {
+ switch (array_view->storage_type) {
+ case NANOARROW_TYPE_LIST:
+ return array_view->buffer_views[1].data.as_int32[i];
+ case NANOARROW_TYPE_LARGE_LIST:
+ return array_view->buffer_views[1].data.as_int64[i];
+ default:
+ return -1;
+ }
+}
+
static inline int64_t ArrowArrayViewGetIntUnsafe(struct ArrowArrayView* array_view,
int64_t i) {
struct ArrowBufferView* data_view = &array_view->buffer_views[1];