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/11 12:16:28 UTC
[arrow-adbc] branch main updated: fix(c/driver/snowflake): fix validation test failures (#677)
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 c3202e6 fix(c/driver/snowflake): fix validation test failures (#677)
c3202e6 is described below
commit c3202e606468e1a01829175483a9041a22964ae3
Author: Matt Topol <zo...@gmail.com>
AuthorDate: Thu May 11 08:16:22 2023 -0400
fix(c/driver/snowflake): fix validation test failures (#677)
Fixes #667.
---
c/driver/snowflake/snowflake_test.cc | 1 +
c/validation/adbc_validation.cc | 30 ++++++++++++++++++++----------
c/validation/adbc_validation.h | 3 +++
c/validation/adbc_validation_util.cc | 2 +-
4 files changed, 25 insertions(+), 11 deletions(-)
diff --git a/c/driver/snowflake/snowflake_test.cc b/c/driver/snowflake/snowflake_test.cc
index 021269c..3b2eb65 100644
--- a/c/driver/snowflake/snowflake_test.cc
+++ b/c/driver/snowflake/snowflake_test.cc
@@ -114,6 +114,7 @@ class SnowflakeQuirks : public adbc_validation::DriverQuirks {
bool supports_partitioned_data() const override { return false; }
bool supports_dynamic_parameter_binding() const override { return false; }
bool ddl_implicit_commit_txn() const override { return true; }
+ std::string db_schema() const override { return "ADBC_TESTING"; }
const char* uri_;
bool skip_{false};
diff --git a/c/validation/adbc_validation.cc b/c/validation/adbc_validation.cc
index 0da8068..5579d15 100644
--- a/c/validation/adbc_validation.cc
+++ b/c/validation/adbc_validation.cc
@@ -511,12 +511,18 @@ void ConnectionTest::TestMetadataGetObjectsDbSchemas() {
ASSERT_FALSE(ArrowArrayViewIsNull(catalog_db_schemas_list, row))
<< "Row " << row << " should have non-null catalog_db_schemas";
+ ArrowStringView catalog_name =
+ ArrowArrayViewGetStringUnsafe(reader.array_view->children[0], row);
+
const int64_t start_offset =
ArrowArrayViewGetOffsetUnsafe(catalog_db_schemas_list, row);
const int64_t end_offset =
ArrowArrayViewGetOffsetUnsafe(catalog_db_schemas_list, row + 1);
- ASSERT_GT(end_offset, start_offset)
- << "Row " << row << " should have nonempty catalog_db_schemas";
+ ASSERT_GE(end_offset, start_offset)
+ << "Row " << row << " (Catalog "
+ << std::string(catalog_name.data, catalog_name.size_bytes)
+ << ") should have nonempty catalog_db_schemas ";
+ ASSERT_FALSE(ArrowArrayViewIsNull(catalog_db_schemas_list, row));
for (int64_t list_index = start_offset; list_index < end_offset; list_index++) {
ASSERT_TRUE(ArrowArrayViewIsNull(db_schema_tables_list, row + list_index))
<< "Row " << row << " should have null db_schema_tables";
@@ -681,8 +687,8 @@ void ConnectionTest::TestMetadataGetObjectsTablesTypes() {
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, row + db_schemas_index);
+ for (int64_t tables_index =
+ ArrowArrayViewGetOffsetUnsafe(db_schema_tables_list, db_schemas_index);
tables_index <
ArrowArrayViewGetOffsetUnsafe(db_schema_tables_list, db_schemas_index + 1);
tables_index++) {
@@ -778,6 +784,9 @@ void ConnectionTest::TestMetadataGetObjectsColumns() {
ASSERT_FALSE(ArrowArrayViewIsNull(db_schema_tables_list, db_schemas_index))
<< "Row " << row << " should have non-null db_schema_tables";
+ ArrowStringView db_schema_name = ArrowArrayViewGetStringUnsafe(
+ catalog_db_schemas->children[0], db_schemas_index);
+
for (int64_t tables_index =
ArrowArrayViewGetOffsetUnsafe(db_schema_tables_list, db_schemas_index);
tables_index <
@@ -792,7 +801,9 @@ void ConnectionTest::TestMetadataGetObjectsColumns() {
<< "Row " << row << " should have non-null table_constraints";
if (iequals(std::string(table_name.data, table_name.size_bytes),
- "bulk_ingest")) {
+ "bulk_ingest") &&
+ iequals(std::string(db_schema_name.data, db_schema_name.size_bytes),
+ quirks()->db_schema())) {
found_expected_table = true;
for (int64_t columns_index =
@@ -1248,11 +1259,10 @@ void StatementTest::TestSqlIngestSample() {
IsOkStatus(&error));
ASSERT_THAT(AdbcStatementNew(&connection, &statement, &error), IsOkStatus(&error));
- ASSERT_THAT(
- AdbcStatementSetSqlQuery(
- &statement, "SELECT * FROM bulk_ingest ORDER BY \"int64s\" ASC NULLS FIRST",
- &error),
- IsOkStatus(&error));
+ ASSERT_THAT(AdbcStatementSetSqlQuery(
+ &statement, "SELECT * FROM bulk_ingest ORDER BY int64s ASC NULLS FIRST",
+ &error),
+ IsOkStatus(&error));
StreamReader reader;
ASSERT_THAT(AdbcStatementExecuteQuery(&statement, &reader.stream.value,
&reader.rows_affected, &error),
diff --git a/c/validation/adbc_validation.h b/c/validation/adbc_validation.h
index 7f3f175..d3026e0 100644
--- a/c/validation/adbc_validation.h
+++ b/c/validation/adbc_validation.h
@@ -93,6 +93,9 @@ class DriverQuirks {
/// \brief Whether dynamic parameter bindings are supported for prepare
virtual bool supports_dynamic_parameter_binding() const { return true; }
+
+ /// \brief Default Schema to use for tests
+ virtual std::string db_schema() const { return ""; }
};
class DatabaseTest {
diff --git a/c/validation/adbc_validation_util.cc b/c/validation/adbc_validation_util.cc
index e67be6d..17cb312 100644
--- a/c/validation/adbc_validation_util.cc
+++ b/c/validation/adbc_validation_util.cc
@@ -251,7 +251,7 @@ void CompareSchema(
(schema->children[i]->flags & ARROW_FLAG_NULLABLE) != 0)
<< "Nullability mismatch";
if (std::get<0>(fields[i]).has_value()) {
- ASSERT_EQ(*std::get<0>(fields[i]), schema->children[i]->name);
+ ASSERT_STRCASEEQ(std::get<0>(fields[i])->c_str(), schema->children[i]->name);
}
}
}