Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 48 additions & 1 deletion datafusion/sqllogictest/test_files/input_file_name.slt
Original file line number Diff line number Diff line change
Expand Up @@ -78,4 +78,51 @@ query error Execution error: input_file_name\(\) is source dependent and cannot
SELECT input_file_name() FROM (VALUES (1)) v(x);

statement ok
DROP TABLE csv_table;
DROP TABLE csv_table;

# Parquet tests as it has its own implementation

statement ok
COPY (VALUES (10), (20), (30))
TO 'test_files/scratch/input_file_name/parquet/first.parquet'
STORED AS PARQUET;

statement ok
COPY (VALUES (40), (50), (60))
TO 'test_files/scratch/input_file_name/parquet/second.parquet'
STORED AS PARQUET;

statement ok
CREATE EXTERNAL TABLE pq_table(column1 int)
STORED AS PARQUET
LOCATION 'test_files/scratch/input_file_name/parquet/';

query I
SELECT column1 FROM pq_table
WHERE input_file_name() LIKE '%first.parquet'
ORDER BY column1
----
10
20
30

query TT
EXPLAIN SELECT column1 FROM pq_table
WHERE input_file_name() LIKE '%first.parquet'
ORDER BY column1
----
logical_plan
01)Sort: pq_table.column1 ASC NULLS LAST
02)--Projection: pq_table.column1
03)----Filter: __datafusion_extracted_1 LIKE Utf8("%first.parquet")
04)------Projection: input_file_name() AS __datafusion_extracted_1, pq_table.column1
05)--------TableScan: pq_table projection=[column1]
physical_plan
01)SortPreservingMergeExec: [column1@0 ASC NULLS LAST]
02)--SortExec: expr=[column1@0 ASC NULLS LAST], preserve_partitioning=[true]
03)----FilterExec: __datafusion_extracted_1@0 LIKE %first.parquet, projection=[column1@1]
04)------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=2
05)--------DataSourceExec: file_groups={2 groups: [[WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/input_file_name/parquet/first.parquet], [WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/input_file_name/parquet/second.parquet]]}, projection=[input_file_name() as __datafusion_extracted_1, column1], file_type=parquet, predicate=input_file_name() LIKE %first.parquet

statement ok
DROP TABLE pq_table;
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.

# Test for Parquet scans with metadata function
# Test for Parquet scans with a mix of metadata functions

statement ok
COPY (VALUES (10), (20), (30))
Expand Down Expand Up @@ -52,33 +52,5 @@ logical_plan
02)--TableScan: test_table projection=[column1]
physical_plan DataSourceExec: file_groups={2 groups: [[WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/parquet_metadata_functions/first.parquet], [WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/parquet_metadata_functions/second.parquet]]}, projection=[input_file_name() as input_file_name(), CAST(__datafusion_file_row_index@1 AS Int64) as file_row_index(), column1], file_type=parquet

# input_file_name() in a WHERE predicate: only rows from the matching file are returned
query I
SELECT column1 FROM test_table
WHERE input_file_name() LIKE '%first.parquet'
ORDER BY column1
----
10
20
30

# input_file_name() as a GROUP BY key: per-file aggregation
query TII
SELECT input_file_name(), count(*), sum(column1)
FROM test_table
GROUP BY input_file_name()
ORDER BY input_file_name()
----
WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/parquet_metadata_functions/first.parquet 3 60
WORKSPACE_ROOT/datafusion/sqllogictest/test_files/scratch/parquet_metadata_functions/second.parquet 3 150

# input_file_name() inside a projection expression
query B rowsort
SELECT DISTINCT input_file_name() LIKE '%second.parquet'
FROM test_table
----
false
true

statement ok
DROP TABLE test_table;
Loading