Skip to content

Commit

Permalink
fix(c/driver/snowflake): fix validation test failures (#677)
Browse files Browse the repository at this point in the history
Fixes #667.
  • Loading branch information
zeroshade authored May 11, 2023
1 parent f7d4d08 commit c3202e6
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 11 deletions.
1 change: 1 addition & 0 deletions c/driver/snowflake/snowflake_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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};
Expand Down
30 changes: 20 additions & 10 deletions c/validation/adbc_validation.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down Expand Up @@ -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++) {
Expand Down Expand Up @@ -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 <
Expand All @@ -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 =
Expand Down Expand Up @@ -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),
Expand Down
3 changes: 3 additions & 0 deletions c/validation/adbc_validation.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
2 changes: 1 addition & 1 deletion c/validation/adbc_validation_util.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
}
Expand Down

0 comments on commit c3202e6

Please sign in to comment.