This is an automated email from the ASF dual-hosted git repository.

alamb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-datafusion.git


The following commit(s) were added to refs/heads/main by this push:
     new 28e7f60cf7 Generate empty column at placeholder exec (#8553)
28e7f60cf7 is described below

commit 28e7f60cf7d4fb87eeaf4e4c1102eb54bfb67426
Author: Mustafa Akur <[email protected]>
AuthorDate: Fri Dec 15 15:00:10 2023 +0300

    Generate empty column at placeholder exec (#8553)
---
 datafusion/physical-plan/src/placeholder_row.rs | 7 ++++---
 datafusion/sqllogictest/test_files/window.slt   | 6 ++++++
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/datafusion/physical-plan/src/placeholder_row.rs 
b/datafusion/physical-plan/src/placeholder_row.rs
index 94f3278853..3ab3de62f3 100644
--- a/datafusion/physical-plan/src/placeholder_row.rs
+++ b/datafusion/physical-plan/src/placeholder_row.rs
@@ -27,6 +27,7 @@ use crate::{memory::MemoryStream, DisplayFormatType, 
ExecutionPlan, Partitioning
 use arrow::array::{ArrayRef, NullArray};
 use arrow::datatypes::{DataType, Field, Fields, Schema, SchemaRef};
 use arrow::record_batch::RecordBatch;
+use arrow_array::RecordBatchOptions;
 use datafusion_common::{internal_err, DataFusionError, Result};
 use datafusion_execution::TaskContext;
 
@@ -59,9 +60,7 @@ impl PlaceholderRowExec {
     fn data(&self) -> Result<Vec<RecordBatch>> {
         Ok({
             let n_field = self.schema.fields.len();
-            // hack for https://github.com/apache/arrow-datafusion/pull/3242
-            let n_field = if n_field == 0 { 1 } else { n_field };
-            vec![RecordBatch::try_new(
+            vec![RecordBatch::try_new_with_options(
                 Arc::new(Schema::new(
                     (0..n_field)
                         .map(|i| {
@@ -75,6 +74,8 @@ impl PlaceholderRowExec {
                         ret
                     })
                     .collect(),
+                // Even if column number is empty we can generate single row.
+                &RecordBatchOptions::new().with_row_count(Some(1)),
             )?]
         })
     }
diff --git a/datafusion/sqllogictest/test_files/window.slt 
b/datafusion/sqllogictest/test_files/window.slt
index 7b628f9b6f..6198209aaa 100644
--- a/datafusion/sqllogictest/test_files/window.slt
+++ b/datafusion/sqllogictest/test_files/window.slt
@@ -3793,3 +3793,9 @@ select a,
 ----
 1 1
 2 1
+
+query I
+select rank() over (order by 1) rnk from (select 1 a union all select 2 a) x
+----
+1
+1

Reply via email to