You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
EXPLAIN SELECT
CASE
WHEN name ='name1' THEN 0.0
WHEN name ='name2' THEN 0.5
END AS a
FROM (
SELECT'name1'AS name
UNION ALLSELECT'name2'
)
ORDER BY a DESC;
the order of a is not matching the ORDER BY a DESC.
The resulting plan looks like this:
+---------------+-------------------------------------------------------------------------------------------------------------------+
| plan_type | plan |
+---------------+-------------------------------------------------------------------------------------------------------------------+
| logical_plan | Sort: a DESC NULLS FIRST |
| | Projection: CASE WHEN name = Utf8("name1") THEN Float64(0) WHEN name = Utf8("name2") THEN Float64(0.5) END AS a |
| | Union |
| | Projection: Utf8("name1") AS name |
| | EmptyRelation |
| | Projection: Utf8("name2") AS name |
| | EmptyRelation |
| physical_plan | CoalescePartitionsExec |
| | ProjectionExec: expr=[CASE WHEN name@0 = name1 THEN 0 WHEN name@0 = name2 THEN 0.5 END as a] |
| | UnionExec |
| | ProjectionExec: expr=[name1 as name] |
| | PlaceholderRowExec |
| | ProjectionExec: expr=[name2 as name] |
| | PlaceholderRowExec |
| | |
+---------------+-------------------------------------------------------------------------------------------------------------------+
EXPLAIN SELECT
CASE
WHEN name ='name1' THEN 0.0
WHEN name ='name2' THEN 0.5
END AS a
FROM (
SELECT'name1'AS name
UNION ALLSELECT'name2'
)
ORDER BY a DESC;
Expected behavior
Resulting order is consistent
Additional context
Running
EXPLAIN VERBOSE SELECT
CASE
WHEN name ='name1' THEN 0.0
WHEN name ='name2' THEN 0.5
END AS a
FROM (
SELECT'name1'AS name
UNION ALLSELECT'name2'
)
ORDER BY a DESC;
shows that the EnforceSorting pass seems to remove the SortExec
The text was updated successfully, but these errors were encountered:
Describe the bug
In the following query
the order of a is not matching the
ORDER BY a DESC
.The resulting plan looks like this:
As can be seen the
Sort
from the logical plan gets transformed into aCoalescePartitionsExec
in the physical plan.However, the docs for
CoalescePartitionsExec
https://docs.rs/datafusion/latest/datafusion/physical_plan/coalesce_partitions/struct.CoalescePartitionsExec.html says that "No guarantees are made about the order of the resulting partition."To Reproduce
In datafusion-cli v 43:
Expected behavior
Resulting order is consistent
Additional context
Running
shows that the
EnforceSorting
pass seems to remove the SortExecThe text was updated successfully, but these errors were encountered: