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;

Reply via email to