pitrou commented on code in PR #14266:
URL: https://github.com/apache/arrow/pull/14266#discussion_r1009671144


##########
cpp/src/arrow/flight/sql/server_test.cc:
##########
@@ -555,41 +548,34 @@ TEST_F(TestFlightSqlServer, 
TestCommandPreparedStatementUpdateWithParameterBindi
       sql_client->Prepare(
           {}, "INSERT INTO INTTABLE (keyName, value) VALUES ('new_value', 
?)"));
 
-  auto parameter_schema = prepared_statement->parameter_schema();
-
+  const std::shared_ptr<Schema>& parameter_schema =
+      prepared_statement->parameter_schema();
   const std::shared_ptr<Schema>& expected_parameter_schema =
       arrow::schema({arrow::field("parameter_1", 
example::GetUnknownColumnDataType())});
+  ASSERT_NO_FATAL_FAILURE(AssertSchemaEqual(expected_parameter_schema, 
parameter_schema));
 
-  AssertSchemaEqual(expected_parameter_schema, parameter_schema);
-
-  std::shared_ptr<Array> type_ids = ArrayFromJSON(int8(), R"([2])");
-  std::shared_ptr<Array> offsets = ArrayFromJSON(int32(), R"([0])");
-  std::shared_ptr<Array> string_array = ArrayFromJSON(utf8(), R"([])");
-  std::shared_ptr<Array> bytes_array = ArrayFromJSON(binary(), R"([])");
-  std::shared_ptr<Array> bigint_array = ArrayFromJSON(int64(), R"([999])");
-  std::shared_ptr<Array> double_array = ArrayFromJSON(float64(), R"([])");
-
-  ASSERT_OK_AND_ASSIGN(
-      auto parameter_1_array,
-      DenseUnionArray::Make(*type_ids, *offsets,
-                            {string_array, bytes_array, bigint_array, 
double_array},
-                            {"string", "bytes", "bigint", "double"}, {0, 1, 2, 
3}));
-
-  const std::shared_ptr<RecordBatch>& record_batch =
-      RecordBatch::Make(parameter_schema, 1, {parameter_1_array});
-
-  ASSERT_OK(prepared_statement->SetParameters(record_batch));
-
-  ASSERT_OK_AND_EQ(4, ExecuteCountQuery("SELECT COUNT(*) FROM intTable"));
-
-  ASSERT_OK_AND_EQ(1, prepared_statement->ExecuteUpdate());
+  auto record_batch = RecordBatchFromJSON(parameter_schema, R"([ [[2, 999]] 
])");
+  ASSERT_OK(prepared_statement->SetParameters(std::move(record_batch)));
 
   ASSERT_OK_AND_EQ(5, ExecuteCountQuery("SELECT COUNT(*) FROM intTable"));
-
+  ASSERT_OK_AND_EQ(1, prepared_statement->ExecuteUpdate());
+  ASSERT_OK_AND_EQ(6, ExecuteCountQuery("SELECT COUNT(*) FROM intTable"));
   ASSERT_OK_AND_EQ(1, sql_client->ExecuteUpdate(
                           {}, "DELETE FROM intTable WHERE keyName = 
'new_value'"));
+  ASSERT_OK_AND_EQ(5, ExecuteCountQuery("SELECT COUNT(*) FROM intTable"));
 
-  ASSERT_OK_AND_EQ(4, ExecuteCountQuery("SELECT COUNT(*) FROM intTable"));
+  // Set multiple parameters at once
+  record_batch = RecordBatchFromJSON(parameter_schema, R"([ [[2, 999]], [[2, 
42]] ])");
+  ASSERT_OK(prepared_statement->SetParameters(std::move(record_batch)));
+  ASSERT_OK_AND_EQ(2, prepared_statement->ExecuteUpdate());
+  ASSERT_OK_AND_EQ(7, ExecuteCountQuery("SELECT COUNT(*) FROM intTable"));
+
+  // Set a stream of parameters
+  record_batch = RecordBatchFromJSON(parameter_schema, R"([ [[2, 999]], [[2, 
42]] ])");
+  ASSERT_OK_AND_ASSIGN(auto reader, 
RecordBatchReader::Make({std::move(record_batch)}));

Review Comment:
   Perhaps instead make this reader non-trivial (at least 2 different batches)?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to