From d57437aacea339e3067b3b6c577f178d1dbb5755 Mon Sep 17 00:00:00 2001 From: irenjj Date: Thu, 13 Mar 2025 21:09:24 +0800 Subject: [PATCH] Implement `tree` explain for `CsvSink` --- datafusion/datasource-csv/src/file_format.rs | 6 ++++-- .../sqllogictest/test_files/explain_tree.slt | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/datafusion/datasource-csv/src/file_format.rs b/datafusion/datasource-csv/src/file_format.rs index cab561d163b3..cc1b63cfc9b4 100644 --- a/datafusion/datasource-csv/src/file_format.rs +++ b/datafusion/datasource-csv/src/file_format.rs @@ -666,8 +666,10 @@ impl DisplayAs for CsvSink { write!(f, ")") } DisplayFormatType::TreeRender => { - // TODO: collect info - write!(f, "") + if !self.config.file_groups.is_empty() { + FileGroupDisplay(&self.config.file_groups).fmt_as(t, f)?; + } + Ok(()) } } } diff --git a/datafusion/sqllogictest/test_files/explain_tree.slt b/datafusion/sqllogictest/test_files/explain_tree.slt index fbadc3a4f52f..9e047133fcfc 100644 --- a/datafusion/sqllogictest/test_files/explain_tree.slt +++ b/datafusion/sqllogictest/test_files/explain_tree.slt @@ -1725,6 +1725,22 @@ physical_plan 09)│ rows: 1 │ 10)└───────────────────────────┘ +query TT +explain COPY (VALUES (1, 'foo', 1, '2023-01-01'), (2, 'bar', 2, '2023-01-02'), (3, 'baz', 3, '2023-01-03')) +TO 'test_files/scratch/explain_tree/2.csv'; +---- +physical_plan +01)┌───────────────────────────┐ +02)│ DataSinkExec │ +03)└─────────────┬─────────────┘ +04)┌─────────────┴─────────────┐ +05)│ DataSourceExec │ +06)│ -------------------- │ +07)│ bytes: 2672 │ +08)│ format: memory │ +09)│ rows: 1 │ +10)└───────────────────────────┘ + # Test explain tree rendering for CoalesceBatchesExec with limit statement ok CREATE TABLE IF NOT EXISTS t1 (a INT) AS VALUES(1),(2),(3),(4),(5),(6),(7),(8),(9),(10);