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 138861516 chore(c/validation): add RewriteSql quirk to override test
queries (#4496)
138861516 is described below
commit 138861516b5818ca0ab638678932418c652fa2f6
Author: Fredrik Fornwall <[email protected]>
AuthorDate: Mon Jul 13 02:50:35 2026 +0200
chore(c/validation): add RewriteSql quirk to override test queries (#4496)
Signed-off-by: Fredrik Fornwall <[email protected]>
---
c/validation/adbc_validation.h | 11 +++++++++++
c/validation/adbc_validation_statement.cc | 10 ++++++++--
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/c/validation/adbc_validation.h b/c/validation/adbc_validation.h
index fad84137e..27f8f2543 100644
--- a/c/validation/adbc_validation.h
+++ b/c/validation/adbc_validation.h
@@ -156,6 +156,17 @@ class DriverQuirks {
/// \brief Return the SQL to reference the bind parameter of the given index
virtual std::string BindParameter(int index) const { return "?"; }
+ /// \brief Rewrite a SQL query used by a validation test, identified by a
+ /// stable query id.
+ ///
+ /// The default implementation returns \p default_sql unchanged. Drivers
+ /// whose SQL dialect differs can override this and switch on \p query_id
+ /// to substitute an equivalent query.
+ virtual std::string RewriteSql(std::string_view query_id,
+ std::string default_sql) const {
+ return default_sql;
+ }
+
/// \brief For a given Arrow type of ingested data, what Arrow type
/// will the database return when that column is selected?
virtual ArrowType IngestSelectRoundTripType(ArrowType ingest_type) const {
diff --git a/c/validation/adbc_validation_statement.cc
b/c/validation/adbc_validation_statement.cc
index e27a1edda..a154b9cab 100644
--- a/c/validation/adbc_validation_statement.cc
+++ b/c/validation/adbc_validation_statement.cc
@@ -2338,7 +2338,10 @@ void StatementTest::TestSqlQueryInts() {
void StatementTest::TestSqlQueryFloats() {
ASSERT_THAT(AdbcStatementNew(&connection, &statement, &error),
IsOkStatus(&error));
- ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, "SELECT CAST(1.5 AS
FLOAT)", &error),
+ std::string query =
+
quirks()->RewriteSql("StatementTest::TestSqlQueryFloats::cast-1.5-as-float",
+ "SELECT CAST(1.5 AS FLOAT)");
+ ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, query.c_str(), &error),
IsOkStatus(&error));
{
@@ -2735,7 +2738,10 @@ void StatementTest::TestSqlSchemaFloats() {
}
ASSERT_THAT(AdbcStatementNew(&connection, &statement, &error),
IsOkStatus(&error));
- ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, "SELECT CAST(1.5 AS
FLOAT)", &error),
+ std::string query =
+
quirks()->RewriteSql("StatementTest::TestSqlSchemaFloats::cast-1.5-as-float",
+ "SELECT CAST(1.5 AS FLOAT)");
+ ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, query.c_str(), &error),
IsOkStatus(&error));
nanoarrow::UniqueSchema schema;