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 f9886ddca chore(c/validation): allow >1 partition in
TestSqlPartitionedInts (#4493)
f9886ddca is described below
commit f9886ddca13a2ea2f044a453216b3973b66cd98f
Author: Fredrik Fornwall <[email protected]>
AuthorDate: Fri Jul 10 01:09:16 2026 +0200
chore(c/validation): allow >1 partition in TestSqlPartitionedInts (#4493)
Signed-off-by: Fredrik Fornwall <[email protected]>
---
c/validation/adbc_validation_statement.cc | 57 +++++++++++++++++--------------
1 file changed, 31 insertions(+), 26 deletions(-)
diff --git a/c/validation/adbc_validation_statement.cc
b/c/validation/adbc_validation_statement.cc
index 131dbb2b6..e27a1edda 100644
--- a/c/validation/adbc_validation_statement.cc
+++ b/c/validation/adbc_validation_statement.cc
@@ -1780,8 +1780,8 @@ void StatementTest::TestSqlPartitionedInts() {
ASSERT_THAT(AdbcStatementExecutePartitions(&statement, &schema.value,
&partitions.value,
&rows_affected, &error),
IsOkStatus(&error));
- // Assume only 1 partition
- ASSERT_EQ(1, partitions->num_partitions);
+ // Engines may split the query into one or more partitions.
+ ASSERT_GE(partitions->num_partitions, 1);
ASSERT_THAT(rows_affected, ::testing::AnyOf(::testing::Eq(1),
::testing::Eq(-1)));
// it's allowed for Executepartitions to return a nil schema if one is not
available
if (schema->release != nullptr) {
@@ -1789,38 +1789,43 @@ void StatementTest::TestSqlPartitionedInts() {
}
Handle<struct AdbcConnection> connection2;
- StreamReader reader;
ASSERT_THAT(AdbcConnectionNew(&connection2.value, &error),
IsOkStatus(&error));
ASSERT_THAT(AdbcConnectionInit(&connection2.value, &database, &error),
IsOkStatus(&error));
- ASSERT_THAT(AdbcConnectionReadPartition(&connection2.value,
partitions->partitions[0],
- partitions->partition_lengths[0],
- &reader.stream.value, &error),
- IsOkStatus(&error));
- ASSERT_NO_FATAL_FAILURE(reader.GetSchema());
- ASSERT_EQ(1, reader.schema->n_children);
+ std::vector<int64_t> all_values;
+ for (size_t partition = 0; partition < partitions->num_partitions;
partition++) {
+ StreamReader reader;
+ ASSERT_THAT(
+ AdbcConnectionReadPartition(&connection2.value,
partitions->partitions[partition],
+ partitions->partition_lengths[partition],
+ &reader.stream.value, &error),
+ IsOkStatus(&error));
- ASSERT_NO_FATAL_FAILURE(reader.Next());
- ASSERT_NE(nullptr, reader.array->release);
- ASSERT_EQ(1, reader.array->length);
- ASSERT_EQ(1, reader.array->n_children);
+ ASSERT_NO_FATAL_FAILURE(reader.GetSchema());
+ ASSERT_EQ(1, reader.schema->n_children);
- switch (reader.fields[0].type) {
- case NANOARROW_TYPE_INT32:
- ASSERT_NO_FATAL_FAILURE(
- CompareArray<int32_t>(reader.array_view->children[0], {42}));
- break;
- case NANOARROW_TYPE_INT64:
- ASSERT_NO_FATAL_FAILURE(
- CompareArray<int64_t>(reader.array_view->children[0], {42}));
- break;
- default:
- FAIL() << "Unexpected data type: " << reader.fields[0].type;
+ while (true) {
+ ASSERT_NO_FATAL_FAILURE(reader.Next());
+ if (reader.array->release == nullptr) break;
+ ASSERT_EQ(1, reader.array->n_children);
+
+ switch (reader.fields[0].type) {
+ case NANOARROW_TYPE_INT32:
+ case NANOARROW_TYPE_INT64:
+ break;
+ default:
+ FAIL() << "Unexpected data type: " << reader.fields[0].type;
+ }
+
+ for (int64_t row = 0; row < reader.array->length; row++) {
+ all_values.push_back(
+ ArrowArrayViewGetIntUnsafe(reader.array_view->children[0], row));
+ }
+ }
}
- ASSERT_NO_FATAL_FAILURE(reader.Next());
- ASSERT_EQ(nullptr, reader.array->release);
+ ASSERT_THAT(all_values, ::testing::UnorderedElementsAre(42));
}
void StatementTest::TestSqlPrepareGetParameterSchema() {