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 3ddb080a8 chore(c/validation): route more SQL statements through 
RewriteSql (#4514)
3ddb080a8 is described below

commit 3ddb080a897716c7882a586a2ce849bfdbd56155
Author: Fredrik Fornwall <[email protected]>
AuthorDate: Thu Jul 16 02:09:41 2026 +0200

    chore(c/validation): route more SQL statements through RewriteSql (#4514)
    
    Signed-off-by: Fredrik Fornwall <[email protected]>
---
 c/validation/adbc_validation_statement.cc | 234 +++++++++++++++++-------------
 1 file changed, 136 insertions(+), 98 deletions(-)

diff --git a/c/validation/adbc_validation_statement.cc 
b/c/validation/adbc_validation_statement.cc
index 4c19ff0ad..2e50761ed 100644
--- a/c/validation/adbc_validation_statement.cc
+++ b/c/validation/adbc_validation_statement.cc
@@ -151,12 +151,12 @@ void StatementTest::TestSqlIngestType(SchemaField field,
   ASSERT_THAT(rows_affected,
               ::testing::AnyOf(::testing::Eq(values.size()), 
::testing::Eq(-1)));
 
-  ASSERT_THAT(AdbcStatementSetSqlQuery(
-                  &statement,
-                  ("SELECT * FROM " + quirks()->QuoteIdentifier("bulk_ingest") 
+
-                   " ORDER BY " + quirks()->QuoteIdentifier("col") + " ASC 
NULLS FIRST")
-                      .c_str(),
-                  &error),
+  std::string select_query = quirks()->RewriteSql(
+      std::string("StatementTest::TestSqlIngestType::select-bulk-ingest::") +
+          ArrowTypeString(field.type),
+      "SELECT * FROM " + quirks()->QuoteIdentifier("bulk_ingest") + " ORDER BY 
" +
+          quirks()->QuoteIdentifier("col") + " ASC NULLS FIRST");
+  ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, select_query.c_str(), 
&error),
               IsOkStatus(&error));
   {
     StreamReader reader;
@@ -365,12 +365,11 @@ void StatementTest::TestSqlIngestTemporalType(const char* 
timezone) {
   ASSERT_THAT(rows_affected,
               ::testing::AnyOf(::testing::Eq(values.size()), 
::testing::Eq(-1)));
 
-  ASSERT_THAT(AdbcStatementSetSqlQuery(
-                  &statement,
-                  ("SELECT * FROM " + quirks()->QuoteIdentifier("bulk_ingest") 
+
-                   " ORDER BY " + quirks()->QuoteIdentifier("col") + " ASC 
NULLS FIRST")
-                      .c_str(),
-                  &error),
+  std::string select_query = quirks()->RewriteSql(
+      "StatementTest::TestSqlIngestTemporalType::select-bulk-ingest",
+      "SELECT * FROM " + quirks()->QuoteIdentifier("bulk_ingest") + " ORDER BY 
" +
+          quirks()->QuoteIdentifier("col") + " ASC NULLS FIRST");
+  ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, select_query.c_str(), 
&error),
               IsOkStatus(&error));
   {
     StreamReader reader;
@@ -514,12 +513,11 @@ void StatementTest::TestSqlIngestInterval() {
   ASSERT_THAT(rows_affected,
               ::testing::AnyOf(::testing::Eq(values.size()), 
::testing::Eq(-1)));
 
-  ASSERT_THAT(AdbcStatementSetSqlQuery(
-                  &statement,
-                  ("SELECT * FROM " + quirks()->QuoteIdentifier("bulk_ingest") 
+
-                   " ORDER BY " + quirks()->QuoteIdentifier("col") + " ASC 
NULLS FIRST")
-                      .c_str(),
-                  &error),
+  std::string select_query = quirks()->RewriteSql(
+      "StatementTest::TestSqlIngestInterval::select-bulk-ingest",
+      "SELECT * FROM " + quirks()->QuoteIdentifier("bulk_ingest") + " ORDER BY 
" +
+          quirks()->QuoteIdentifier("col") + " ASC NULLS FIRST");
+  ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, select_query.c_str(), 
&error),
               IsOkStatus(&error));
   {
     StreamReader reader;
@@ -598,11 +596,13 @@ void StatementTest::TestSqlIngestStreamZeroArrays() {
   ASSERT_THAT(AdbcStatementExecuteQuery(&statement, nullptr, nullptr, &error),
               IsOkStatus(&error));
 
-  ASSERT_THAT(
-      AdbcStatementSetSqlQuery(
-          &statement,
-          ("SELECT * FROM " + 
quirks()->QuoteIdentifier("bulk_ingest")).c_str(), &error),
-      IsOkStatus(&error));
+  {
+    std::string select_query = quirks()->RewriteSql(
+        "StatementTest::TestSqlIngestStreamZeroArrays::select-bulk-ingest",
+        "SELECT * FROM " + quirks()->QuoteIdentifier("bulk_ingest"));
+    ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, select_query.c_str(), 
&error),
+                IsOkStatus(&error));
+  }
 
   {
     StreamReader reader;
@@ -723,11 +723,13 @@ void StatementTest::TestSqlIngestAppend() {
   ASSERT_THAT(rows_affected, ::testing::AnyOf(::testing::Eq(2), 
::testing::Eq(-1)));
 
   // Read data back
-  ASSERT_THAT(
-      AdbcStatementSetSqlQuery(
-          &statement,
-          ("SELECT * FROM " + 
quirks()->QuoteIdentifier("bulk_ingest")).c_str(), &error),
-      IsOkStatus(&error));
+  {
+    std::string select_query =
+        
quirks()->RewriteSql("StatementTest::TestSqlIngestAppend::select-bulk-ingest",
+                             "SELECT * FROM " + 
quirks()->QuoteIdentifier("bulk_ingest"));
+    ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, select_query.c_str(), 
&error),
+                IsOkStatus(&error));
+  }
   {
     StreamReader reader;
     ASSERT_THAT(AdbcStatementExecuteQuery(&statement, &reader.stream.value,
@@ -785,11 +787,13 @@ void StatementTest::TestSqlIngestReplace() {
   ASSERT_THAT(rows_affected, ::testing::AnyOf(::testing::Eq(1), 
::testing::Eq(-1)));
 
   // Read data back
-  ASSERT_THAT(
-      AdbcStatementSetSqlQuery(
-          &statement,
-          ("SELECT * FROM " + 
quirks()->QuoteIdentifier("bulk_ingest")).c_str(), &error),
-      IsOkStatus(&error));
+  {
+    std::string select_query =
+        
quirks()->RewriteSql("StatementTest::TestSqlIngestReplace::select-bulk-ingest",
+                             "SELECT * FROM " + 
quirks()->QuoteIdentifier("bulk_ingest"));
+    ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, select_query.c_str(), 
&error),
+                IsOkStatus(&error));
+  }
   {
     StreamReader reader;
     ASSERT_THAT(AdbcStatementExecuteQuery(&statement, &reader.stream.value,
@@ -833,11 +837,13 @@ void StatementTest::TestSqlIngestReplace() {
   ASSERT_THAT(rows_affected, ::testing::AnyOf(::testing::Eq(2), 
::testing::Eq(-1)));
 
   // Read data back
-  ASSERT_THAT(
-      AdbcStatementSetSqlQuery(
-          &statement,
-          ("SELECT * FROM " + 
quirks()->QuoteIdentifier("bulk_ingest")).c_str(), &error),
-      IsOkStatus(&error));
+  {
+    std::string select_query =
+        
quirks()->RewriteSql("StatementTest::TestSqlIngestReplace::select-bulk-ingest",
+                             "SELECT * FROM " + 
quirks()->QuoteIdentifier("bulk_ingest"));
+    ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, select_query.c_str(), 
&error),
+                IsOkStatus(&error));
+  }
   {
     StreamReader reader;
     ASSERT_THAT(AdbcStatementExecuteQuery(&statement, &reader.stream.value,
@@ -909,11 +915,13 @@ void StatementTest::TestSqlIngestCreateAppend() {
   ASSERT_THAT(rows_affected, ::testing::AnyOf(::testing::Eq(2), 
::testing::Eq(-1)));
 
   // Read data back
-  ASSERT_THAT(
-      AdbcStatementSetSqlQuery(
-          &statement,
-          ("SELECT * FROM " + 
quirks()->QuoteIdentifier("bulk_ingest")).c_str(), &error),
-      IsOkStatus(&error));
+  {
+    std::string select_query = quirks()->RewriteSql(
+        "StatementTest::TestSqlIngestCreateAppend::select-bulk-ingest",
+        "SELECT * FROM " + quirks()->QuoteIdentifier("bulk_ingest"));
+    ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, select_query.c_str(), 
&error),
+                IsOkStatus(&error));
+  }
   {
     StreamReader reader;
     ASSERT_THAT(AdbcStatementExecuteQuery(&statement, &reader.stream.value,
@@ -1060,14 +1068,12 @@ void StatementTest::TestSqlIngestMultipleConnections() {
     ASSERT_THAT(AdbcConnectionInit(&connection2, &database, &error), 
IsOkStatus(&error));
     ASSERT_THAT(AdbcStatementNew(&connection2, &statement, &error), 
IsOkStatus(&error));
 
-    ASSERT_THAT(
-        AdbcStatementSetSqlQuery(
-            &statement,
-            ("SELECT * FROM " + quirks()->QuoteIdentifier("bulk_ingest") + " 
ORDER BY " +
-             quirks()->QuoteIdentifier("int64s") + " DESC NULLS LAST")
-                .c_str(),
-            &error),
-        IsOkStatus(&error));
+    std::string select_query = quirks()->RewriteSql(
+        "StatementTest::TestSqlIngestMultipleConnections::select-bulk-ingest",
+        "SELECT * FROM " + quirks()->QuoteIdentifier("bulk_ingest") + " ORDER 
BY " +
+            quirks()->QuoteIdentifier("int64s") + " DESC NULLS LAST");
+    ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, select_query.c_str(), 
&error),
+                IsOkStatus(&error));
 
     {
       StreamReader reader;
@@ -1107,13 +1113,14 @@ void StatementTest::TestSqlIngestSample() {
               IsOkStatus(&error));
 
   ASSERT_THAT(AdbcStatementNew(&connection, &statement, &error), 
IsOkStatus(&error));
-  ASSERT_THAT(AdbcStatementSetSqlQuery(
-                  &statement,
-                  ("SELECT * FROM " + quirks()->QuoteIdentifier("bulk_ingest") 
+
-                   " ORDER BY int64s ASC NULLS FIRST")
-                      .c_str(),
-                  &error),
-              IsOkStatus(&error));
+  {
+    std::string select_query =
+        
quirks()->RewriteSql("StatementTest::TestSqlIngestSample::select-bulk-ingest",
+                             "SELECT * FROM " + 
quirks()->QuoteIdentifier("bulk_ingest") +
+                                 " ORDER BY int64s ASC NULLS FIRST");
+    ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, select_query.c_str(), 
&error),
+                IsOkStatus(&error));
+  }
   StreamReader reader;
   ASSERT_THAT(AdbcStatementExecuteQuery(&statement, &reader.stream.value,
                                         &reader.rows_affected, &error),
@@ -1922,10 +1929,9 @@ void StatementTest::TestSqlPrepareSelectParams() {
   }
 
   ASSERT_THAT(AdbcStatementNew(&connection, &statement, &error), 
IsOkStatus(&error));
-  std::string query = "SELECT ";
-  query += quirks()->BindParameter(0);
-  query += ", ";
-  query += quirks()->BindParameter(1);
+  std::string query = quirks()->RewriteSql(
+      "StatementTest::TestSqlPrepareSelectParams::select-params",
+      "SELECT " + quirks()->BindParameter(0) + ", " + 
quirks()->BindParameter(1));
   ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, query.c_str(), &error),
               IsOkStatus(&error));
   ASSERT_THAT(AdbcStatementPrepare(&statement, &error), IsOkStatus(&error));
@@ -2023,8 +2029,10 @@ void StatementTest::TestSqlPrepareUpdate() {
               IsOkStatus(&error));
 
   // Prepare
-  std::string query = "INSERT INTO " + 
quirks()->QuoteIdentifier("bulk_ingest") +
-                      " VALUES (" + quirks()->BindParameter(0) + ")";
+  std::string query =
+      
quirks()->RewriteSql("StatementTest::TestSqlPrepareUpdate::insert-bulk-ingest",
+                           "INSERT INTO " + 
quirks()->QuoteIdentifier("bulk_ingest") +
+                               " VALUES (" + quirks()->BindParameter(0) + ")");
   ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, query.c_str(), &error),
               IsOkStatus(&error));
   ASSERT_THAT(AdbcStatementPrepare(&statement, &error), IsOkStatus(&error));
@@ -2040,11 +2048,13 @@ void StatementTest::TestSqlPrepareUpdate() {
               IsOkStatus(&error));
 
   // Read data back
-  ASSERT_THAT(
-      AdbcStatementSetSqlQuery(
-          &statement,
-          ("SELECT * FROM " + 
quirks()->QuoteIdentifier("bulk_ingest")).c_str(), &error),
-      IsOkStatus(&error));
+  {
+    std::string select_query =
+        
quirks()->RewriteSql("StatementTest::TestSqlPrepareUpdate::select-bulk-ingest",
+                             "SELECT * FROM " + 
quirks()->QuoteIdentifier("bulk_ingest"));
+    ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, select_query.c_str(), 
&error),
+                IsOkStatus(&error));
+  }
   {
     StreamReader reader;
     ASSERT_THAT(AdbcStatementExecuteQuery(&statement, &reader.stream.value,
@@ -2121,8 +2131,10 @@ void StatementTest::TestSqlPrepareUpdateStream() {
   MakeStream(&stream.value, &schema.value, std::move(batches));
 
   // Prepare
-  std::string query = "INSERT INTO " + 
quirks()->QuoteIdentifier("bulk_ingest") +
-                      " VALUES (" + quirks()->BindParameter(0) + ")";
+  std::string query = quirks()->RewriteSql(
+      "StatementTest::TestSqlPrepareUpdateStream::insert-bulk-ingest",
+      "INSERT INTO " + quirks()->QuoteIdentifier("bulk_ingest") + " VALUES (" +
+          quirks()->BindParameter(0) + ")");
   ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, query.c_str(), &error),
               IsOkStatus(&error));
   ASSERT_THAT(AdbcStatementPrepare(&statement, &error), IsOkStatus(&error));
@@ -2134,11 +2146,13 @@ void StatementTest::TestSqlPrepareUpdateStream() {
               IsOkStatus(&error));
 
   // Read data back
-  ASSERT_THAT(
-      AdbcStatementSetSqlQuery(
-          &statement,
-          ("SELECT * FROM " + 
quirks()->QuoteIdentifier("bulk_ingest")).c_str(), &error),
-      IsOkStatus(&error));
+  {
+    std::string select_query = quirks()->RewriteSql(
+        "StatementTest::TestSqlPrepareUpdateStream::select-bulk-ingest",
+        "SELECT * FROM " + quirks()->QuoteIdentifier("bulk_ingest"));
+    ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, select_query.c_str(), 
&error),
+                IsOkStatus(&error));
+  }
   {
     StreamReader reader;
     ASSERT_THAT(AdbcStatementExecuteQuery(&statement, &reader.stream.value,
@@ -2224,9 +2238,13 @@ void StatementTest::TestSqlBind() {
 
   ASSERT_THAT(quirks()->DropTable(&connection, "bindtest", &error), 
IsOkStatus(&error));
 
-  ASSERT_THAT(AdbcStatementSetSqlQuery(
-                  &statement, "CREATE TABLE bindtest (col1 INTEGER, col2 
TEXT)", &error),
-              IsOkStatus(&error));
+  {
+    std::string create_query =
+        
quirks()->RewriteSql("StatementTest::TestSqlBind::create-table-bindtest",
+                             "CREATE TABLE bindtest (col1 INTEGER, col2 
TEXT)");
+    ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, create_query.c_str(), 
&error),
+                IsOkStatus(&error));
+  }
   ASSERT_THAT(AdbcStatementExecuteQuery(&statement, nullptr, nullptr, &error),
               IsOkStatus(&error));
 
@@ -2244,9 +2262,10 @@ void StatementTest::TestSqlBind() {
       &schema.value, &array.value, &na_error, int_values, string_values);
   ASSERT_THAT(batch_result, IsOkErrno());
 
-  auto insert_query = std::string("INSERT INTO bindtest VALUES (") +
-                      quirks()->BindParameter(0) + ", " + 
quirks()->BindParameter(1) +
-                      ")";
+  auto insert_query = 
quirks()->RewriteSql("StatementTest::TestSqlBind::insert-bindtest",
+                                           std::string("INSERT INTO bindtest 
VALUES (") +
+                                               quirks()->BindParameter(0) + ", 
" +
+                                               quirks()->BindParameter(1) + 
")");
   ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, insert_query.c_str(), 
&error),
               IsOkStatus(&error));
   ASSERT_THAT(AdbcStatementPrepare(&statement, &error), IsOkStatus(&error));
@@ -2257,10 +2276,13 @@ void StatementTest::TestSqlBind() {
               IsOkStatus(&error));
   ASSERT_THAT(rows_affected, ::testing::AnyOf(::testing::Eq(-1), 
::testing::Eq(3)));
 
-  ASSERT_THAT(
-      AdbcStatementSetSqlQuery(
-          &statement, "SELECT * FROM bindtest ORDER BY col1 ASC NULLS FIRST", 
&error),
-      IsOkStatus(&error));
+  {
+    std::string select_query =
+        quirks()->RewriteSql("StatementTest::TestSqlBind::select-bindtest",
+                             "SELECT * FROM bindtest ORDER BY col1 ASC NULLS 
FIRST");
+    ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, select_query.c_str(), 
&error),
+                IsOkStatus(&error));
+  }
   {
     StreamReader reader;
     ASSERT_THAT(AdbcStatementExecuteQuery(&statement, &reader.stream.value,
@@ -2284,9 +2306,13 @@ void StatementTest::TestSqlQueryEmpty() {
   ASSERT_THAT(AdbcStatementNew(&connection, &statement, &error), 
IsOkStatus(&error));
 
   ASSERT_THAT(quirks()->DropTable(&connection, "queryempty", &error), 
IsOkStatus(&error));
-  ASSERT_THAT(
-      AdbcStatementSetSqlQuery(&statement, "CREATE TABLE queryempty (FOO 
INT)", &error),
-      IsOkStatus(&error));
+  {
+    std::string create_query =
+        
quirks()->RewriteSql("StatementTest::TestSqlQueryEmpty::create-table-queryempty",
+                             "CREATE TABLE queryempty (FOO INT)");
+    ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, create_query.c_str(), 
&error),
+                IsOkStatus(&error));
+  }
   ASSERT_THAT(AdbcStatementExecuteQuery(&statement, nullptr, nullptr, &error),
               IsOkStatus(&error));
 
@@ -2472,9 +2498,13 @@ void StatementTest::TestSqlQueryInsertRollback() {
   ASSERT_THAT(AdbcStatementNew(&connection, &statement, &error), 
IsOkStatus(&error));
 
   std::string table = quirks()->QuoteIdentifier("rollbacktest");
-  ASSERT_THAT(AdbcStatementSetSqlQuery(
-                  &statement, ("CREATE TABLE " + table + " (a INT)").c_str(), 
&error),
-              IsOkStatus(&error));
+  {
+    std::string create_query = quirks()->RewriteSql(
+        "StatementTest::TestSqlQueryInsertRollback::create-table-rollbacktest",
+        "CREATE TABLE " + table + " (a INT)");
+    ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, create_query.c_str(), 
&error),
+                IsOkStatus(&error));
+  }
   ASSERT_THAT(AdbcStatementExecuteQuery(&statement, nullptr, nullptr, &error),
               IsOkStatus(&error));
 
@@ -2572,9 +2602,13 @@ void StatementTest::TestSqlQueryRowsAffectedDelete() {
   ASSERT_THAT(AdbcStatementNew(&connection, &statement, &error), 
IsOkStatus(&error));
 
   std::string table = quirks()->QuoteIdentifier("delete_test");
-  ASSERT_THAT(AdbcStatementSetSqlQuery(
-                  &statement, ("CREATE TABLE " + table + " (foo 
INT)").c_str(), &error),
-              IsOkStatus(&error));
+  {
+    std::string create_query = quirks()->RewriteSql(
+        
"StatementTest::TestSqlQueryRowsAffectedDelete::create-table-delete-test",
+        "CREATE TABLE " + table + " (foo INT)");
+    ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, create_query.c_str(), 
&error),
+                IsOkStatus(&error));
+  }
   ASSERT_THAT(AdbcStatementExecuteQuery(&statement, nullptr, nullptr, &error),
               IsOkStatus(&error));
 
@@ -2604,9 +2638,13 @@ void 
StatementTest::TestSqlQueryRowsAffectedDeleteStream() {
   ASSERT_THAT(AdbcStatementNew(&connection, &statement, &error), 
IsOkStatus(&error));
 
   std::string table = quirks()->QuoteIdentifier("delete_test");
-  ASSERT_THAT(AdbcStatementSetSqlQuery(
-                  &statement, ("CREATE TABLE " + table + " (foo 
INT)").c_str(), &error),
-              IsOkStatus(&error));
+  {
+    std::string create_query = quirks()->RewriteSql(
+        
"StatementTest::TestSqlQueryRowsAffectedDeleteStream::create-table-delete-test",
+        "CREATE TABLE " + table + " (foo INT)");
+    ASSERT_THAT(AdbcStatementSetSqlQuery(&statement, create_query.c_str(), 
&error),
+                IsOkStatus(&error));
+  }
   ASSERT_THAT(AdbcStatementExecuteQuery(&statement, nullptr, nullptr, &error),
               IsOkStatus(&error));
 

Reply via email to