jackwener opened a new issue #2015:
URL: https://github.com/apache/arrow-datafusion/issues/2015
**Is your feature request related to a problem or challenge? Please describe
what you are trying to do.**
I found there are some filter was pushed down, but it's still in the
logicplan.
```sql
explain select c1, c2 from test where c3 = true and c2 = 0.000001;
+---------------+-------------------------------------------------------------------------------------------------------------------------------------+
| plan_type | plan
|
+---------------+-------------------------------------------------------------------------------------------------------------------------------------+
| logical_plan | Projection: #test.c1, #test.c2
|
| | Filter: #test.c3
|
| | Filter: #test.c2 = Float64(0.000001)
|
| | TableScan: test projection=Some([0, 1, 2]),
filters=[#test.c3, #test.c2 = Float64(0.000001)]
|
| physical_plan | ProjectionExec: expr=[c1@0 as c1, c2@1 as c2]
|
| | CoalesceBatchesExec: target_batch_size=4096
|
| | FilterExec: c3@2
|
| | CoalesceBatchesExec: target_batch_size=4096
|
| | FilterExec: c2@1 = 0.000001
|
| | RepartitionExec: partitioning=RoundRobinBatch(8)
|
| | CsvExec:
files=[/home/jakevin/code/arrow-datafusion/datafusion/tests/aggregate_simple.csv],
has_header=true, limit=None |
| |
|
+---------------+-------------------------------------------------------------------------------------------------------------------------------------+
```
` Filter: #test.c2 = Float64(0.000001)` is included in the `TableScan`
Maybe we can eliminate it. How do you think about it ? @alamb @Dandandan
**Describe the solution you'd like**
Correct the `push down filter` in the optimizer
**Describe alternatives you've considered**
**Additional context**
In PG
```sql
create table scientist (id integer, firstname varchar(100), lastname
varchar(100));
insert into scientist (id, firstname, lastname) values (1, 'albert',
'einstein');
insert into scientist (id, firstname, lastname) values (2, 'isaac',
'newton');
insert into scientist (id, firstname, lastname) values (3, 'marie', 'curie');
explain select id, firstname from scientist where lastname = 'einstein' and
id > 2;
```
```
explain select id, firstname from scientist where lastname = 'einstein' and
id > 2;
QUERY PLAN
----------------------------------------------------------------
Seq Scan on scientist (cost=0.00..12.55 rows=1 width=222)
Filter: ((id > 2) AND ((lastname)::text = 'einstein'::text))
```
--
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]