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

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

commit 69eba492244574316138ea1fe16ce37d6a297466
Author: DaniĆ«l Heres <[email protected]>
AuthorDate: Thu Jul 27 17:08:12 2023 +0200

    Change empty projection to not add an extra column
---
 datafusion/optimizer/src/push_down_projection.rs | 25 ++++++++----------------
 1 file changed, 8 insertions(+), 17 deletions(-)

diff --git a/datafusion/optimizer/src/push_down_projection.rs 
b/datafusion/optimizer/src/push_down_projection.rs
index eb9ae3c981..4545234864 100644
--- a/datafusion/optimizer/src/push_down_projection.rs
+++ b/datafusion/optimizer/src/push_down_projection.rs
@@ -495,23 +495,14 @@ fn push_down_scan(
         .filter_map(ArrowResult::ok)
         .collect();
 
-    if projection.is_empty() {
-        if has_projection && !schema.fields().is_empty() {
-            // Ensure that we are reading at least one column from the table 
in case the query
-            // does not reference any columns directly such as "SELECT 
COUNT(1) FROM table",
-            // except when the table is empty (no column)
-            projection.insert(0);
-        } else {
-            // for table scan without projection, we default to return all 
columns
-            projection = scan
-                .source
-                .schema()
-                .fields()
-                .iter()
-                .enumerate()
-                .map(|(i, _)| i)
-                .collect::<BTreeSet<usize>>();
-        }
+    if projection.is_empty() && !has_projection {
+        // for table scan without projection, we default to return all columns
+        projection = schema
+            .fields()
+            .iter()
+            .enumerate()
+            .map(|(i, _)| i)
+            .collect::<BTreeSet<usize>>();
     }
 
     // Building new projection from BTreeSet

Reply via email to