kou commented on code in PR #41750:
URL: https://github.com/apache/arrow/pull/41750#discussion_r1607876552


##########
c_glib/arrow-dataset-glib/dataset.cpp:
##########
@@ -152,12 +153,43 @@ gadataset_dataset_to_table(GADatasetDataset *dataset, 
GError **error)
   }
   auto arrow_scanner = *arrow_scanner_result;
   auto arrow_table_result = arrow_scanner->ToTable();
-  if (!garrow::check(error, arrow_scanner_result, "[dataset][to-table]")) {
+  if (!garrow::check(error, arrow_table_result, "[dataset][to-table]")) {
     return NULL;
   }
   return garrow_table_new_raw(&(*arrow_table_result));
 }
 
+/**
+ * gadataset_dataset_to_reader:
+ * @dataset: A #GADatasetDataset.
+ * @error: (nullable): Return location for a #GError or %NULL.
+ *
+ * Returns: (transfer full) (nullable):
+ *   A #GArrowRecordBatchReader on success, %NULL on error.
+ *
+ * Since: 17.0.0
+ */
+GArrowRecordBatchReader *
+gadataset_dataset_to_reader(GADatasetDataset *dataset, GError **error)

Review Comment:
   How about using `to_record_batch_reader` not just `to_reader`? We have many 
readers in our API.



##########
c_glib/test/dataset/test-scanner.rb:
##########
@@ -45,4 +45,16 @@ def setup
   def test_to_table
     assert_equal(@table, @scanner.to_table)
   end
+
+  def test_record_batch_reader
+    reader = @scanner.to_reader
+    record_batches = []
+    loop do
+      batch = reader.read_next
+      break if batch.nil?
+      record_batches << batch
+    end
+    table_from_batches = Arrow::Table.new(reader.schema, record_batches)
+    assert_equal(@table, table_from_batches)

Review Comment:
   ```suggestion
       assert_equal(@table, @scanner.to_reader.read_all)
   ```



##########
c_glib/test/dataset/test-file-system-dataset.rb:
##########
@@ -56,6 +56,24 @@ def test_partitioning
   end
 
   def test_read_write
+    dataset, expected_table = create_dataset
+    assert_equal(expected_table, dataset.to_table)
+  end
+
+  def test_record_batch_reader
+    dataset, expected_table = create_dataset
+    reader = dataset.to_reader
+    record_batches = []
+    loop do
+      batch = reader.read_next
+      break if batch.nil?
+      record_batches << batch
+    end
+    table_from_batches = Arrow::Table.new(reader.schema, record_batches)
+    assert_equal(expected_table, table_from_batches)

Review Comment:
   ```suggestion
       assert_equal(expected_table, reader.read_all)
   ```



##########
c_glib/arrow-dataset-glib/dataset.cpp:
##########
@@ -152,12 +153,43 @@ gadataset_dataset_to_table(GADatasetDataset *dataset, 
GError **error)
   }
   auto arrow_scanner = *arrow_scanner_result;
   auto arrow_table_result = arrow_scanner->ToTable();
-  if (!garrow::check(error, arrow_scanner_result, "[dataset][to-table]")) {
+  if (!garrow::check(error, arrow_table_result, "[dataset][to-table]")) {
     return NULL;
   }
   return garrow_table_new_raw(&(*arrow_table_result));
 }
 
+/**
+ * gadataset_dataset_to_reader:
+ * @dataset: A #GADatasetDataset.
+ * @error: (nullable): Return location for a #GError or %NULL.
+ *
+ * Returns: (transfer full) (nullable):
+ *   A #GArrowRecordBatchReader on success, %NULL on error.
+ *
+ * Since: 17.0.0
+ */
+GArrowRecordBatchReader *
+gadataset_dataset_to_reader(GADatasetDataset *dataset, GError **error)
+{
+  auto arrow_dataset = gadataset_dataset_get_raw(dataset);
+  auto arrow_scanner_builder_result = arrow_dataset->NewScan();
+  if (!garrow::check(error, arrow_scanner_builder_result, 
"[dataset][get-reader]")) {
+    return NULL;
+  }
+  auto arrow_scanner_builder = *arrow_scanner_builder_result;
+  auto arrow_scanner_result = arrow_scanner_builder->Finish();
+  if (!garrow::check(error, arrow_scanner_result, "[dataset][get-reader]")) {

Review Comment:
   ```suggestion
     if (!garrow::check(error, arrow_scanner_result, "[dataset][to-reader]")) {
   ```



##########
c_glib/arrow-dataset-glib/dataset.cpp:
##########
@@ -152,12 +153,43 @@ gadataset_dataset_to_table(GADatasetDataset *dataset, 
GError **error)
   }
   auto arrow_scanner = *arrow_scanner_result;
   auto arrow_table_result = arrow_scanner->ToTable();
-  if (!garrow::check(error, arrow_scanner_result, "[dataset][to-table]")) {
+  if (!garrow::check(error, arrow_table_result, "[dataset][to-table]")) {
     return NULL;
   }
   return garrow_table_new_raw(&(*arrow_table_result));
 }
 
+/**
+ * gadataset_dataset_to_reader:
+ * @dataset: A #GADatasetDataset.
+ * @error: (nullable): Return location for a #GError or %NULL.
+ *
+ * Returns: (transfer full) (nullable):
+ *   A #GArrowRecordBatchReader on success, %NULL on error.
+ *
+ * Since: 17.0.0
+ */
+GArrowRecordBatchReader *
+gadataset_dataset_to_reader(GADatasetDataset *dataset, GError **error)
+{
+  auto arrow_dataset = gadataset_dataset_get_raw(dataset);
+  auto arrow_scanner_builder_result = arrow_dataset->NewScan();
+  if (!garrow::check(error, arrow_scanner_builder_result, 
"[dataset][get-reader]")) {
+    return NULL;
+  }
+  auto arrow_scanner_builder = *arrow_scanner_builder_result;
+  auto arrow_scanner_result = arrow_scanner_builder->Finish();
+  if (!garrow::check(error, arrow_scanner_result, "[dataset][get-reader]")) {
+    return NULL;
+  }
+  auto arrow_scanner = *arrow_scanner_result;
+  auto arrow_reader_result = arrow_scanner->ToRecordBatchReader();
+  if (!garrow::check(error, arrow_reader_result, "[dataset][get-reader]")) {

Review Comment:
   ```suggestion
     if (!garrow::check(error, arrow_reader_result, "[dataset][to-reader]")) {
   ```



##########
c_glib/arrow-dataset-glib/scanner.cpp:
##########
@@ -128,6 +128,27 @@ gadataset_scanner_to_table(GADatasetScanner *scanner, 
GError **error)
   }
 }
 
+/**
+ * gadataset_scanner_to_reader:
+ * @scanner: A #GADatasetScanner.
+ * @error: (nullable): Return location for a #GError or %NULL.
+ *
+ * Returns: (transfer full) (nullable):
+ *   A #GArrowRecordBatchReader on success, %NULL on error.
+ *
+ * Since: 17.0.0
+ */
+GArrowRecordBatchReader *
+gadataset_scanner_to_reader(GADatasetScanner *scanner, GError **error)
+{
+  auto arrow_scanner = gadataset_scanner_get_raw(scanner);
+  auto arrow_reader_result = arrow_scanner->ToRecordBatchReader();
+  if (!garrow::check(error, arrow_reader_result, "[scanner][get-reader]")) {

Review Comment:
   ```suggestion
     if (!garrow::check(error, arrow_reader_result, "[scanner][to-reader]")) {
   ```



##########
c_glib/arrow-dataset-glib/dataset.cpp:
##########
@@ -152,12 +153,43 @@ gadataset_dataset_to_table(GADatasetDataset *dataset, 
GError **error)
   }
   auto arrow_scanner = *arrow_scanner_result;
   auto arrow_table_result = arrow_scanner->ToTable();
-  if (!garrow::check(error, arrow_scanner_result, "[dataset][to-table]")) {
+  if (!garrow::check(error, arrow_table_result, "[dataset][to-table]")) {
     return NULL;
   }
   return garrow_table_new_raw(&(*arrow_table_result));
 }
 
+/**
+ * gadataset_dataset_to_reader:
+ * @dataset: A #GADatasetDataset.
+ * @error: (nullable): Return location for a #GError or %NULL.
+ *
+ * Returns: (transfer full) (nullable):
+ *   A #GArrowRecordBatchReader on success, %NULL on error.
+ *
+ * Since: 17.0.0
+ */
+GArrowRecordBatchReader *
+gadataset_dataset_to_reader(GADatasetDataset *dataset, GError **error)
+{
+  auto arrow_dataset = gadataset_dataset_get_raw(dataset);
+  auto arrow_scanner_builder_result = arrow_dataset->NewScan();
+  if (!garrow::check(error, arrow_scanner_builder_result, 
"[dataset][get-reader]")) {

Review Comment:
   ```suggestion
     if (!garrow::check(error, arrow_scanner_builder_result, 
"[dataset][to-reader]")) {
   ```



-- 
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